Dec 27, 2013

This year, let your resolutions look back

A Story Year-ending

With a new year around the corner, people make resolutions. At year-end, people also look back and reflect. It occurred to me that one can't be prepared for the new until at peace with the past. If you are chained to the past with heavy chain, you can't run forward.

In fiction writing, resolutions aren't about making a todo list for the future. Instead, resolutions wrap up the tensions and struggles the characters experienced throughout the narrative. Whatever disappointments or complications one suffered from, there's comfort and light at the end. That's what a resolution is - to make peace with the past.

With that in mind, I don't want to make plans for the future yet. I want to remember the past year in summary and reflect whether it means a beginning or an ending.

Resolutions


1. About this time last year picked up an online Python programming tutorial - since then I explored other materials (Udacity is awesome) and learned to program. 
  • What I learned - I learned to program, which helped me appreciate technology in a different way, which helped me understand our Zeitgeist a bit differently. 
  • I also learned that the really valuable skills relating to code may not even be coding. It might be problem-solving, learning to abstract, learning to manage complexity, and learning to create re-usable modules. 
  • It taught me patience: you really can't get good overnight. All good things takes time.
2. During the last year and a half, I built a bunch of products with a friend with hopes of launching a business.
3. Read a whole bunch of stuff that I never read in business school or in my past life - Martin Seligman and Gretchen Rubin on Happiness, Thiel's essays (mind-blowing!), Paul Graham's articles, Andreesen's blogs, Noah Kagan's newsletters, Amy Hoy's Unicorn Free, Chris Gullibeau, Ferris's 4-hour book, etc.
  • What I learned - there are lots of smart people, and the possibilities for making a living in the world are really endless. In the short-run, options may be limited (because of expenses), but if you can begin to think what your passions are longer-term, rich and rewarding life-career is within your grasp. It helps to be working with smart, successful people. But, usually, you have to become smart and successful yourself to attract those people. Catch-22.
4. Wrote some cool blog posts about my experiences across business and coding in SF.
  • What I learned - I learned to communicate with readers. I'd spent a ton of my life sending email back and forth in a corporate cube. None of that stays with you. No one cares. But for the first time, I learned how to build an audience and a following; to communicate.
5. Became an author! Wrote my first e-book about Coding Bootcamps based on my insider-view experience of having worked for one and knowing bunch of people in the space.
  • What I learned - You can productize just about anything. It doesn't have to be software.
  • What I learned - You don't have to be an expert or have talent in the field (though it helps). The only talent you need is talent for action and energy. If you start, it is possible to bring others to contribute to the effort. It is the first requirement of team building.
7. Built meetup communities - Ruby Rookies and SF Product Management FastTrack (the latter with a friend, Ritu).
  • What I learned - learned what it is like to start something from nothing, how to create resources, identifying and tapping into unmet need of anonymous others, and how that leads to a community of like-minded folks.
8. Family. My younger brother got married to a wonderful wife, and my parents' cat is adorable. 
  • What I learned - We go through ups and downs. Friends sort of come and go ... and it's hard to know who is a friend until you fail. Those that are real stay with you. Family on the other hand is family. They love you and support you no matter what. They are more important than all the rest, so remember that.
What I learned - Cats are cute!

Sharing

This seems good enough place to stop. Everyone is busy, and I'm too old to keep making lists. Would love to hear from you - what your resolutions are; what you did and what you learned.

Happy New Year!

New Project

One of the things I decided to do for 2014 is to put up a new website with my own URL (since I had always used someone else's url - like this blogger.com blog). I'm going to do something constructive with it by getting non-technical MBAs more familiar with some of the tech stuff I'm playing with - sort of web101 for non-technical MBAs. It will go up on http://techproductmanager.com/. Would love your readership and support!

(If you enjoy these thoughts and would like to support my writing efforts promoting personal learning and understanding of technology, please consider supporting me through gittip.)

Dec 22, 2013

What hackers (and you) can learn from the Pope

Are you thirsty for knowledge?

How will you recall 2013? Did you want to do something great? How far did you get?

One of the hallmarks of a great hacker (not just in programming, but great leaders, great teachers, great anything) is thirst for knowledge. That trait is a cornerstone of greatness.

What is a clear evidence of genuine thirst for knowledge? Learning. If you are learning with intent and consistency, it might be driven by an underlying thirst.

Why you learn

And why are you learning? Why are you thirsty to do something great? It is because we are human beings with capacity to do more than simply copy and paste spreadsheets or make sales calls all day. Here, I want to reference a well-known hacker manifesto called "How To Become A Hacker" by Eric Raymond. Raymond asserts, "hacker attitude" includes the following beliefs:

  • The world is full of fascinating problems waiting to be solved.
  • Boredom and drudgery are evil.
  • Freedom is good.

If you think about it, education isn't simply about learning facts to obtain a degree, in order to be employed. Rather, learning is a means to knowledge and wisdom, such that you can become free. So that you can avoid drudgery, but most importantly, to elevate beyond personal freedom to solving interesting problems (interesting to you individually, but also with the potential to help many around you). That is why you learn.

How you learn

Steven Raymond's exhortation is more specifically about programming. He notes that:
"Learning to program is like learning to write good natural language. The best way to do it is to read some stuff written by masters of the form, write some things yourself, read a lot more, write a little more, read a lot more, write some more ... and repeat until your writing begins to develop the kind of strength and economy you see in your models."
So how do you learn? You learn by waxing on and waxing off around the master.

Learning Mr. Miyagi style
Apprenticeship is quite powerful. I don't know the full history behind it (and may be interesting for someone to write about it), but it is plainly a model widely adopted across human disciplines - from medicine, academia, computer programming, politics, the list goes on.

How else can you learn apart from apprenticing and tireless practice? You have to be curious. You have to tinker. Otherwise, you'll never surpass the master.

  • Step 1 - stand on the shoulder(s) of giant(s)
  • Step 2 - copy/master everything they teach you
  • Step 3 - try a variance, try and fail, and learn

Along these lines, the person who most refreshed my attitude about learning to program wasn't a programmer, but the Pope. And I'm not even a Catholic.  And I think there's a lot that other hackers (in any discipline) can learn from his example.

Personal Dilemma: Enter the Pope

The "Cold Call" Pope
So, one of my personal frustrations and dilemma has been picking up a new field of knowledge.

Frustration comes from feeling like teachers in past disciplines have failed me or failed to save me time by pointing me in the wrong direction - teaching me such useless things like spelling or accounting.

Dilemma. Now that I have an aim, I still have to learn. It's time and energy-consuming to 'wax on, wax off.' I'm lazy. Is there a short-cut? How can I do it without the hard work, without the 10,000 hours?

And it would be far better if I were still in college. But those years have been squandered. I'm now in my 30's and I feel I have less luxury with time. The thought is frustrating.

Enter the Pope. He taught me the following.

One: You're never too old to be New

The man is almost an octogenarian. That doesn't stop him from breaking thousand year traditions (like washing women's feet on Holy Thursday or inviting former Pope as an equal to the alter).

Pope Francis also warmed millions of hearts when he embraced and kissed a severely disfigured man suffering from pain.

Confirming the humanity of all human beings
There were many other incidents that demonstrated the uniquely human iconoclasm of this man from Argentina. (We are all human, so why aren't we all as human as he is?)

Truly, you're never too old to do something new, to do something amazing.

Two: To be yourself is to be Great

At this point, let me note that I'm not Catholic. I just admire this man, because he teaches me much. Apparently, Pope Francis is so humble, that when he became the pope, he called his newspaper delivery man to cancel subscription.

Now, that's ridiculous. And amazing. Amazingly humble. Amazingly himself. This is not for show (apparently), not a pretense. The newspaperman, he knows the Pope well. When he realized what was happening, he apparently broke down in tears. The story relates that the then Cardinal used to collect and even "return the 30 rubber bands around the newspaper."

Cardinal Bergoglio is just being himself. There are thousand such stories among the parishioners who fondly remember this man's kindness.

In the end, greatness isn't about being good at something. Rather, it's about being good. About letting the goodness in us shine forth.

Three: To fail is to Learn

But the most revealing thing I learned is that the path to this kind of greatness - of goodness in life - is never smooth.

Sure we may read of the touching stories of the Pope before he became Pope and think he was always like that. Sure we may see stories of startup success and 20-somethings who have become CEO's of corporations.

"Surely, they have known nothing but success," we think.

Not so. James Carroll recently wrote a piece about the Pope in the New Yorker. The former Cardinal had had some difficult periods of leadership during violent "Dirty Wars" years of Argentina's military dictatorship. Some priests might have lost their lives because of the Cardinal's misjudgments.

What sort of pain and frustration might such difficulties leave on one's memory? The experience, apparently was "searing," according to Carroll's article.

Failure is absolutely necessary to growth. Failure. Mistakes. The trick is not to dwell on it. The trick is to learn from it.

And what is learning? Learning is a sign of desire for thirst for knowledge. And why do we thirst for knowledge and wisdom? So we can be free and solve the world's problems.

And you're never too old to do that. You just have to be yourself and learn from your past. Like the Pope. Then, in a manner of speaking, you'll be great. You'll be a hacker.

What's Next?

There aren't many days left. Before the year ends, I'd like to write two more posts.

Ubuntu espeak Merry Christmas!

Linux is so cool, especially Ubuntu, which makes Unix and programming accessible to anyone - not just the technically-trained, but anyone with some initiative, desire to learn, and willingness to overcome some fears of technology & fears of getting stuck.

I remember I actually tried programming on the web, tinkering with Sun's Java toolkits, configuring Apache servers. Perhaps I should have stuck with it. It was hard, but it didn't occur to me that others may also have struggled, and at least I would have been among the few. Still, I remember all the random scripts and verbosity of Java ... it was not very approachable. Today it's much different.

Anyway, I digress. I'm not writing about learning to program. I'm just exclaiming how cool Ubuntu is. If you have a linux terminal open, then try this ... type:

$ espeak "Merry Christmas"

espeak is an old-school speech synthesizer, and if you want to hack, you can check out the source for espeak.

Watch what you're saying!

Really neat, right? Merry Christmas, everyone from me and Ubuntu!

If you liked this, you might also like to know how to partition your Windows machine to boot unix, and for further reading, get comfortable with your command line.

The Linux Command Line: A Complete Introduction

Merry Christmas!

Dec 10, 2013

JavaScript typeof vs instanceof

Reading is good

And I assume almost no one reading this post would disagree that reading is good. And once you agree with that, then it follows that good books are valuable. Good books alter our thinking. Good books can be life-changing.

I have been reading Professional JavaScript for Web Developers (3rd ed). It find many little details of the JavaScript language that I almost never comes across when simply learning to code or following a tutorial or a newsletter.

Theory and Practice in the world

I suppose this is the dichotomy between theory and practice that many professionals experience, whatever their profession might be. For example, a good trader may be familiar with modern portfolio theory, and be able to outline the efficient frontier. Then, on the trading floor, find that day-to-day, she never really applies that theory or knowledge. However, there maybe a longer-term project, or a strategic shift in investment for which that knowledge may make the difference between success and failure. Likewise, when scaffolding a JavaScript app using a tool like Yeoman or Meteor, many programmers may never think about memory management or garbage collection.  Do you know how it's done in JavaScript? And how will you apply them in your application, even if you were familiar with those concepts?

We live in a world of changing contexts, between clean theoretical Platonic concepts, and a messy practical application where little details could matter, or may be totally immaterial.

It looks quirky for now - typeof and instanceof

For now, the details look very quirky to me. I'm sure it will change over time as I see other contexts, and find cases of the theory applied in practice. With that statement of faith in mind, it's time to play on the console (Using a Chrome browser, F12 key on a PC brings up the developer tool, which includes a console).

According  to the book, typeof is used to determine if a variable is a primitive type, whereas instanceof operator is used to determine the type of an Object. Here are some examples - play with other variations in your console.

typeof "anything"  // "string"
typeof 3           // "number"
typeof null        // "object"
typeof [1,2,"3"]   // "object"
typeof {}          // "object"

So, lots of things are object. Let's move on. Keep in mind that primitives are not objects.

var array = [1,2,3]
array instanceof Array    // true
array instanceof Object   // true
Array instanceof Object   // true
Array instanceof Array    // false

So, an array is an object, not an instance of another Array.

Check out other technical things I am learning on http://pleaserefactor.com/.