Archive for the ‘Work’ Category

The difference between fun and work

Monday, April 27th, 2009

Reading a book is fun. If you have to do a review on the book for the newspaper by Friday, it becomes work.

Writing code is fun. If you have a deadline next week, it becomes work.

Spending time with that special someone is fun. After tying the knot and having no other choice makes it work (or so I’m told).

Calculating sports match statistics is fun. Spending the same amount of time to balance your checkbooks is work.

Is commitment the difference between fun and work?



P.S. Yeah, I had a Godin moment.


Update : After reading all the interesting thoughts by you folks in the comments section, maybe spontaneity is one of the major differentiatiors?

One year since I had a salary

Thursday, April 9th, 2009

It has been exactly one year since I quit my last job.

The good

Things that I thought was important but didn’t turn out to be:

It has been one year since:

  • I had to do something because I had no choice.
  • I had a boss.
  • I had to attend meetings.
  • Since I have been answerable to someone.

Things that turned out to be important:

Discovering things about myself that had been previously masked. For example, discipline is about doing things even when there is no one watching you. I realized how bad I was at this, and a year later, I’ve significantly improved.

Equally important, I’ve discovered many of my strengths. And learning how to build on those.

For example, I ended up jumping in full-time into our own startup – we have three guys in our little company, and I’m learning how to leverage each of our strengths as a team. Why is this different from previous experiences? Because I was told to do things. Here, we are the ones deciding what to do and the guys actually doing it. In all this decision making, I realized what areas I have a good nose for, and which ones I don’t.

The bad

One year flew by and I don’t even know how. Definitely not a good thing.

I’m simply not satisfied with the results.

Back to the drawing board…

The ugly

It has been one year without a salary.

Thoughts

Like a wise man once said “Only when you’re truly lost do you begin to find yourself.”

This is exactly what happened to me. When I quit, I had all sorts of visions that my freedom would be exciting and I can do anything I want. In fact, the first month was exactly that and I had lot of fun. The second month was disastrous, it is amazing how depressing one can get if there is nothing to do. An idle man is a DevD’s workshop.

I started thinking about what it is that I want out of life and what it is that I can do. Even though I still don’t have an answer, I have a far better understanding of what the answer would be like, than I previously did.

I have many things to look forward to, especially some exciting things coming up with our company. Lots of things to learn. And most importantly, focusing on lots of things to do.

Still a long way to go.

Refocus on the Basics

Wednesday, January 14th, 2009

Most of what I learned about programming was during my first year at Yahoo!. I wrote so much Perl code and dove into naive attempts at distributed computing, and the like.

I was pretty proud of my code and that I put in hard work, and was vindicated when I went back to meet old friends at Yahoo! and one of the new recruits actually praised my Perl code (because he was now maintaining it). I was taken aback. Why? That was probably the only time in my life I was proud of the code I wrote and someone actually commended on it.

But I’ve stagnated in the past three years and have not been adding to my knowledge even though I’ve been working, meeting deadlines and earning my bread. On the surface, I’m adding skills to my resumé but inside I know I should be learning more.

My theme for the next 8 months is to focus on getting back to the basics, to relearn the fundamentals and get back the joy of programming.

Ever since I’ve been working for myself, I’ve been very happy to take technical decisions and seeing it right through to the code. I get a kick out of it. I need more of that.

I’m hoping to read more books like Ship It! and The Pragmatic Programmer vs. spending time on blogs.

I’m hoping to spend more of those-moments-when-you-need-distractions at Stack Overflow and technical mailing lists vs. reading opinion / “news” sites.

Of course, it’s not just about more information but rather about getting into the flow, getting into the mood.

I will try to be at the bottom of things rather than on top of things, although its hard to let go of the addiction of trying to be “inbox zero.”

In the big picture, there’s no reason to have this goal. I can just keep on going as-is. But my life is so empty without having something to work on. That’s the thing about goals.

Let’s see how far it goes.

Do you find it useful to have a time-bound dominant theme for personal development? Have you thought about what will you learn this year?

Of course, ideas are cheap, execution is everything. So I’m getting back to coding right now.

How Fresh Graduates Can Grow

Saturday, December 13th, 2008

As a small experiment, I had put up a skribit sidebar where anybody can suggest what I can write about. Little did I know that it would actually be used seriously. Someone posted the topic “On how fresh graduates can learn independently and grow. Instead of waiting for the Company to help” and today, there are 9 votes on it!

To be honest, I think I am not qualified enough to answer this question. I am certainly no role model. But since 9 people have voted on it, I feel obliged to write something useful. I have jotted down some thoughts on what ideas and habits have helped me, it may not necessarily be useful for everyone. I hope these fresh graduates who voted will pick the best ideas and habits suited for them.

Character and Lifestyle

Instead of focusing on building a career, why not focus on building a character? The career will take care of itself.

  • “Sow an act… reap a habit; Sow a habit… reap a character; Sow a character… reap a destiny.” – George Dana Boardman
  • As Cal Newport would say, “Fix the lifestyle you want. Then work backwards from there.” … Too often, we confuse the medium (lawyer, doctor, engineer, etc.) with the message (what is important to us, what we want to do). So it’s far more important to figure out what you want out of life, then figure out how to achieve that rather than the other way around. And only you can figure this out for yourself.
  • I would recommend reading First Things First by Stephen Covey to help you understand your priorities in life.
  • Most important of all, find your inner peace. Remember that “Satisfaction is within.”

Career Building

Basically, you need to take initiative in what you want to achieve, no one can tell you what you have to do, life is not that simple. I’m glad the original question poser said that he/she wanted to grow “Instead of waiting for the Company to help”, you’ve got that part right already.

I recommend reading:

Get Results

Ultimately, you need to take action and get results. It’s not enough to just plan and hope. As Morpheus would say, “There is a difference between knowing the path and walking the path.”

Read

My personal slogan is “I read. Therefore I do. Therefore I am.” If I compare myself to my school days and today, there has been a major transformation in character and outlook, and I attribute that purely to reading.

A great part of my learning also comes from writing, hence the blog, wiki, books, and twitter. It might seem like a waste of time, but I learn more by communicating. But that’s just me.

If you don’t know where to start, I would suggest The Personal MBA Reading List.

Friends

Make valuable friends. This is the most important tip I can ever give you.

Equally important, make the right kind of friends. Yes, it’s tough to let go of friends who you intuitively know are not the right influence on you, but speaking from experience, it is worth it in the long run.

As a wise man once said, “Tell me who your friends are, and I will tell you who you are.”

Learn Your Trade

For example, if we are talking about a software engineer:

  • Debugging is the most important skill, not coding. I wish I had known this when I was in college.
  • Reading is a great habit that has a side-effect that you will also have the ability to read a lot of code and build up the structure inside your head about how the code works, just like you have to imagine what is written in a book or novel.

I also recommend reading:

If you are looking for more in-depth knowledge, I would recommend taking a look at this Stack Overflow discussion.

Make A Difference

Consider this excerpt from a Business Week article:

One vocal camp even maintains that the repetitive nature of writing software code has corrupted Bangalore’s intellectual spirit. “These 20-year-olds are like coolies, doing the same job over and over,” says CNR Rao, a Bangalorean scientist who has been an adviser to the Indian government for decades. The software industry, he says, has turned the city into a glorified sweatshop. “Where is the innovation?” he asks. “How does this contribute to anything but greed and commerce?”

The joy of programming is the joy of building and creating something. Wouldn’t it be amazing if we can build and create something useful for other people? If yes, why aren’t we doing more of that? After all, there is no dearth of things that we can create.

Closing Statement

Hopefully, I have given some food for thought here.

If this article was useful, please feel free to post suggestions on what I can write about on my skribit page.

Thought for the Day

Wednesday, November 12th, 2008

Look at the design of a lot of consumer products—they’re really complicated surfaces. We tried make something much more holistic and simple. When you first start off trying to solve a problem, the first solutions you come up with are very complex, and most people stop there. But if you keep going, and live with the problem and peel more layers of the onion off, you can often times arrive at some very elegant and simple solutions. Most people just don’t put in the time or energy to get there. We believe that customers are smart, and want objects which are well thought through.

– Steve Jobs on the design lesson of the iPod in Newsweek, 2006-10-14

Career Advice

Friday, May 9th, 2008

There have been many times where I’ve been asked for “career advice”, especially after a talk. I usually suggest them to ‘build a repertoire of things you have done, things you are capable of, things you like to do’. But I’ve never really been sure of this advice nor do I feel I have the credibility to answer such questions.

The good thing is that I have now found something to point them to – Garr Reynolds‘ presentation on a career advice book. This presentation explain things very well and is so beautifully done that it can capture the attention of a young mind:


The other resource I have found useful is Aaron Swartz’s “How to Get a Job Like Mine”.



Cultivating a good career is like creating the Mona Lisa. The right tools and strategies will only get you partway there – the soul of the artist is necessary to create something worthwhile.

Steve Pavlina

Last day at Adobe

Wednesday, April 9th, 2008

As Jeff Atwood said recently in his entry on Choosing Your Own Adventure:

I’ve spent the last six months staring at this page trying to figure out what to do. With some trepidation, I’m now turning to page 10. Thursday will be my last day at Vertigo. I will sorely miss the camaraderie and the many close personal friends I’ve made at Vertigo. Vertigo remains a fantastic place to work.

Sometimes choosing your own adventure means closing one door to open another. And I have to close the door on Vertigo, however reluctantly, to fully and wholeheartedly explore the alternatives. It would be unfair to Vertigo and to myself to do anything less. I’m not sure what exactly lies on page 10. I won’t lie to you. It’s scary to trade the security of a safe, salaried job for the unknowns. But the way I look at it, if it’s not a little scary, then it’s not the right choice. Failure is always an option.

Just s/Vertigo/Adobe/g and that’s my situation.

It was not an easy decision to make. Especially considering the people I work with. In fact, I squarely blame my Flex teammates Sreenivas, Sameer, Raghu, Harish, Harpreet, Kaashif, Anirudh, Sujit, Annam, Ram, Jyoti and so many others for making this such a difficult decision.

There are two incidents that have stuck in my mind for the past few days. One is the recent internal tech summit we had at Noida where Adobeans got to showcase each others’ technologies and ideas. Second, the (internal) showcase applications that our team created using our data visualization platform. I was simply blown away. The enthusiasm, the energy and the ideas was so addictive.

It seems strange that I should leave all this behind. It seems stranger that I have no clue where I’ll be six months from now. But yeah, I have some ideas.

As Ray Bradbury said:

If we listened to our intellect we’d never have a love affair. We’d never have a friendship. We’d never go in business because we’d be cynical: “It’s gonna go wrong.” Or “She’s going to hurt me.” Or, “I’ve had a couple of bad love affairs, so therefore …” Well, that’s nonsense. You’re going to miss life. You’ve got to jump off the cliff all the time and build your wings on the way down.

Closed source on Linux is hard

Monday, October 22nd, 2007
Update: Please read the article carefully before commenting. If you notice, most of the problems being described here is part of Eclipse, which is open source. So, usability issues are faced by open source programs as well, and not just proprietary programs on Linux. The reason I wrote that title was because this pain is usually felt by people who are making closed source packages that works on different Linux distributions. The real issue is about unneeded incompatibilities between different Linux distributions.



After working on the porting project to make Flex Builder run on Linux, I am starting to see why closed source software on Linux is hard.

There are just a handful of closed source products on Linux (counting only the famous ones) – Opera, Skype, Nero, Acrobat Reader, and Flash Player. Hmmm, I can think of just 5.

Why is that important at all? Because software developers who are not initiated to the FOSS philosophy will be scared off the platform because of its inherent complexities. For example, in this project, getting the software to run on the various Linux distros was, to put it lightly, troublesome.

There are a number of issues that we faced, which I’m certain is the reason others don’t want to get into this as well.

Let’s start with Eclipse. Eclipse runs fairly well on different platforms (let’s ignore the memory-hogging issue here), but on Linux, it’s a different ballgame. Somehow, the polishing of the UI is markedly lacking. Yes, we’ve filed bugs, but turns out it’s not really Eclipse’s fault, it’s simply because different window managers work differently on Linux, and handling all of this is a nightmare.

Oh, and this gets better when it comes to distros. For example, the latest released Eclipse 3.3 won’t run on the latest released Fedora version. You have to wait till Fedora 8! Because of this, we had to drop support for Fedora, and instead concentrated on other distros such as Suse, Red Hat and Ubuntu.

That brings up another problem – the number of distros. The QA effort required for the Flex Builder (FB) on Linux project was huge indeed. And yes, we found problems that occurred only on Red Hat but not on Ubuntu, and so on. For example, clicking on help links in Eclipse on Red Hat opens a new window every time whereas it properly displays in the same window on Ubuntu. Again, it’s not really Eclipse’s fault. Go figure.

Then, there’s the issue of running Firefox. There’s nothing wrong with Firefox itself, but what’s with each distro trying to customize the Firefox startup script?! FB on Linux has to check whether the correct version of the Flash Player plugin is installed in the browser, and checking this is a long procedure - do we check in ~/.firefox/plugins/ directory or ~/.mozilla/plugins/ or $MOZ_PLUGIN_PATH or some Suse-distro-specific directory such as /usr/lib/browser-plugins/!

Life is simply too hard compared to other operating systems.

Isn’t it a wonder that nobody wants to develop a closed source product for Linux? Even Microsoft is just handing over the audio video codecs to Novell and letting them to do the hard work of creating Moonlight on Linux. Microsoft is smart enough not to try to maintain a Linux version of Silverlight on its own (I’m considering only technical issues, let’s set aside philosophical issues on this one).

If we really want to make Linux a good platform, then we need to stop messing around with the basics – at least please don’t muck up the basic shell scripts and paths.

The way to get more people, in large numbers, to understand the open source and free software philosophies is by making their first steps easy. It cannot be an all-or-nothing approach. Closed source software on Linux is not practical. And that’s a bad thing because if we can’t convert software developers to use a different platform, how can we expect mom and pop to switch to Linux?

In spite of all this, I think we’ve done a good job of FB on Linux, and happy to see all the great response we’ve seen so far, including reports of success on various distros that we’ve never even heard before. So please keep the feedback coming!

Standard disclaimer: The opinions expressed here are my own, not Adobe’s.

Announcing Flex Builder on Linux

Wednesday, October 3rd, 2007

Now presenting the alpha of the Flex Builder IDE on Linux! (this was announced at the Adobe MAX 2007 conference). You can now create Flex projects, write code with intellisense-like hinting, compile and debug all within an IDE based on Eclipse, on Linux. You heard it right, it’s officially supported by Adobe. Download it NOW.

The future direction of Flex Builder on Linux depends mostly on community feedback. Yes, seriously. So please do write in your feedback even if it is just “works well” or “it sucks”. Why is this important? The more the feedback, the more thought will be given to the product. This is how things work in Adobe (as far as I’ve seen). So again, voice your opinion on what you think of Flex Builder on Linux, and what you’d like to see and not see in it.

Disclosure: I am part of this project. I mostly handled the Linuxisms in the IDE functionality.

Update : Lots of feedback and comments (good to see that it’s mostly positive) on Digg, Slashdot and ZDNet. There’s also a video of the actual announcement put online by Peter Elst.

Moxie . AdvancedDataGrid . OutInTheWild()

Monday, June 11th, 2007

Flex 3 beta 1 is out, and along with it something that I’ve been part of – the AdvancedDataGrid component.

An example built using the AdvancedDataGrid is embedded below (it is a SWF file, requires Flash Player 9 for viewing):

Notice the tree view within a grid – that alone is a feature not found easily. On top of that, notice that there is a ‘total’ row in each of the categories of planets (click on the arrow to unfold a branch) – there are two aspects to this, first the summary (i.e. the total) is automatically calculated using a Collections API we have built, and secondly, you can specify a custom SummaryRenderer to display it any way you want, and in our case we are using column spanning so that it spans over the entire row. Now try doing that with your UI framework!

To understand what more you can do with AdvancedDataGrid, do read our writeup with lots of example code. Unfortunately, the live samples are not inline in the writeup (as we had originally written), you have to download them separately. You can also watch a video demonstration of AdvancedDataGrid. I hope this gives an inkling about the wide range of features and functionality in the AdvancedDataGrid.

Working on AdvancedDataGrid has been fun for me, mostly because of Sreenivas and Sameer, my teammates, who taught me most of what I have learnt about Flex.

And as someone commented on Ted’s post featuring AdvancedDataGrid:

OK, the workflow and the code enhancements were nice, but not enough to get me excited. But now I totally want to get my hands on that AdvancedDataGrid!