free html hit counter
Posted on: Monday, 06 June 2016 by Rajiv Popat

I’ve always been a fan of the Pomodoro Technique. It’s simple, it’s elegant and it works. You work for twenty five minutes, you focus on one thing and get it done. Then you allow yourself five minutes of distractions in a break and then you work for another twenty five minutes. You repeat this till your possibly can. There are physical twenty five minute timers you can buy for this.

But that’s just one aspect of Pomodoro. What if I told you that you could have a personalized Pomodoro instructor who would not just push you to work, but would demote you if you didn’t work hard enough. And he would even insult you and humiliate you with taunts if you were procrastinating. He would give you five minute breaks and once your breaks are over he would blow a loud whistle not just letting you, but your colleagues (who are hanging out with you) know that you now need to go back to work? Feels like an army trainer, doesn’t it?

I don’t know about you, but I like honest blatant truth. I mean if I can tell people to stop bitching and get back to work I don’t mind someone doing that to me. And I like tough instructors. No seriously; I do. One of the reasons I moved out of a gym and setup a gym at my home was because my gym instructor just wasn’t challenging me hard enough. And when it comes to work, I am also one of those people who don’t mind introspecting on questions like - Am I a Phony who hasn’t achieved much in life. The question (and the brutally honest answer I give myself) gets me down temporarily but pushes me forward in the long run.

So yeah, I love tough love - specially when I am dealing with myself.

And that is exactly why I love the Productivity Challenge Timer - which can be your personalized Pomodoro Instructor who has literally no feelings and is completely ruthless when it comes to getting you to work more.

The author of the application talks to you in first person and tells you how ruthless and unforgiving the application can be when it comes to getting you to work:

Work consistently and it promotes you and opens up new achievements for you which you can proudly flaunt. Cut some slack for yourself and the same app will not just humiliate you, but demote you with a loud sound so everyone around you at your workplace knows you were just demoted!

The app is humorous, it’s witty and the creepy part is, it’s addictive. And It makes you work! Folks around me now hear sounds and know when I am ready for a break. I am guessing they even know when I am promoted and when I am cutting slack or acting lazy or getting demoted. 

What’s even more amazing is that the app knows and understands the hard realities of distractions and meetings in the typical work environment. The other day, I worked for four hours completely meeting-and-distraction-free and the app not just gave me a promotion but told me in clear terms that ‘you worked for four hours today, which is rather rare in a typical office environment’ and it opened up an achievement for me.
I wasn’t able to work for four hours the next day because I had to interview four fresh candidates and the app wouldn’t listen to any of my excuses. It called me a ‘slacker’ and demoted me ruthlessly; leaving me with no options other than canceling some redundant meetings the next day and doing some more focused deep work.
There are very few apps that I literally use everyday of my life and Productivity Challenge Timer is one of them. I am not associated or affiliated with the app in any way; just a user who loves the app; and I would go so far as saying that if there is only one productivity application you are allowed to have on your phone, this should be that app! Especially if you like the idea of being tough to yourself and if you have a sense of humor.
Go download the free app and you’ll know exactly what I mean.
And… now if you will excuse me, I need to get back to work because Productivity Challenge Timer just started blowing the work whistle and I really don’t feel like getting demoted twice this week!

posted on Monday, 06 June 2016 06:45:26 UTC by Rajiv Popat  #    Comments [6] Trackback
Posted on: Tuesday, 22 March 2016 by Rajiv Popat

When I finally patched together a couple of android applications with some custom code that would capture what I did with every minute of my awake time, push that information into a SQL database and then extract intelligent reports out of it, I was so darn excited that the first thing I did was show the system to my wife.

She smiles and thinks I am completely nuts and monitoring every minute of my life is a little too insane, even for a nerd like me. "Why would you want to monitor your time like that?" - she wonders. For me, as a geek though, the question isn't Why, the question is 'Why Not'. I love the idea of monitoring my time because:

  1. Now I can monitor how much time I spent getting ready to go to work, eating, working, watching TV, reading and even having fun. In the scheme of my life, time is one more dimension that I can now log into a system! How cool is that?
  2. I'm excited to find out what new insights and correlations about my life the data can provide me. For example, does the amount of time I spend in getting ready to get to work change based on when I wake up? If yes by exactly what percentage? What impact does that have on the amount of stress I experience when I start my day? What impact does that stress have on the number of productive pomodoro sessions I have for the rest of the day.
  3. I'm excited to find out how those insights will change me as a human being.

What can I say? I'm a typical nerd and I love my data.

My obsession with monitoring started with my very first endeavors with Fitness back in 2009 when an extremely skinny, underweight nerdy version of myself set a big hairy audacious goal of gaining 33 pounds of body weight in a year. It was about food and fitness logs back then. How much proteins was I taking in, how much cardio was I doing, how much strength training was I engaging in and how different combinations of cardio, strength, food and sleep were impacting my weight. I did eventually end up gaining 33 pounds in 11 months. Recently, when I started exceeding my BMI I used the same monitoring and lost 14 pounds in 2 months and have not gained the weight since. I discovered that as a nerd, what I can measure, dissect, read about, study and understand, I can improve.

My long life as a developer has taught me that big changes are all about profiling the right data and making small tweaks based on the insights the data provides. Almost every time you see a manager and a developer fighting over performance, the question to ask the developer is: Have you profiled your application? Do you know what's slowing down the system? OR are you just working on a hunch?

Hunches are great, when they lead you to an answer instantly. When they don't, they send you on a long trip to an infinite loop of random guesses. But collect enough data about your code, analyze it and you realize that the fix is usually a small change in a function which hits a database inside a for-loop or something really as simple as that. The fix itself isn't hard; gathering enough data about the issue and then deriving enough insights from that data that leads you to the fix, is.

For most Nerds, me included, it's the same thing when it comes to life.

Which is why when I started collecting data about my Finances and started recording every financial transaction in my life to the very last cent in a well designed system with apps and some basic reports I used on top of the data, my savings rate jumped by more than 50% in just 3 months.

Did my life style change significantly? Not really. We still eat out and we still spend money on things that matter to us. However, we realized that we were paying for over a hundred television channels me and my wife were never going to watch, that go-daddy was auto-renewing over 30 domains on my credit card that I never used and my bank was looting me by skimming off the interest rates of my investments. Well that and a dozen other holes that had been leaking hard earned money constantly for years.

They were all little things, but when the number totals up and you see those things add up to over 20% of your actual monthly savings, you have a reason to pick up the phone and cancel a few subscriptions. And when you do that and that results in considerable savings, you get the confidence to save more and then you defer buying that fancy new electronic toy that you don't really need by a few months - not because you can't afford it - but because it's not in your planned budget and you need to save up for it.

And then it gets exciting, because suddenly before you know it, you've added some new investment goals into the system and now you're tracking your progress towards those goals and your wife has also seen the data and is actively helping and supporting you in moving forward towards those goals, even when you are tempted to spend. That's what data does to you; especially if the insights the data gives you are clear and out in the open. 'I'm spending way too much on things I don't need' is nowhere close to as powerful as 'I'm spending x% of my income on things I don't need' especially when x is large.

Monitoring turns out to be so important that, Author Gretchen Rubin, has an entire chapter dedicated to monitoring in her book, "Better than before" (which happens to be book #3 of 52 books on my list this year) - where she explains the kind of impact monitoring can have on your behavior by giving her sister's example:

Elizabeth has type 1 diabetes, which means that her pancreas doesn't produce enough insulin. (In type 2 diabetes, which is far more common, the body produces insulin but doesn't react properly to it.) Without insulin, blood sugar can spike to dangerous, even life-threatening levels, so Elizabeth must give herself multiple daily insulin injections, and to inject herself correctly, she must know her blood sugar level.

For years, she'd tested her blood sugar by pricking her finger to check her blood, but she'd recently gotten a device inserted under her skin to monitor her blood sugar continuously. I wanted to know if she found the monitor effective.

"Monitoring is key," she said. "For years, I hated the idea of having a device attached to my stomach, but with diabetes, accurate tracking is so important that I finally caved. Now I can't imagine not having the monitor."

When she told me she was getting the device, I'd imagined that it might administer insulin directly, or tell her what she needed. Nope.

The monitor merely provides a continuous record of her blood sugar levels—but that information makes a big difference.

"Without a monitor, I might test my blood sugar ten times a day, but the monitor checks it constantly," she explained. "I know where my blood sugar is and where it's heading. Also, I know the effect of what I'm doing, so I can't kid myself. Like I was eating this frozen yogurt that claimed to be low-carb, but from the readings I got on my monitor, I know that can't be true."

"Even though the monitor doesn't actually do anything, seeing the numbers makes you behave differently?"

"For sure. Without a monitor, if I ate something questionable, I might unconsciously wait a few hours to test, so I'd get a better number, but that doesn't work with a monitor. I can't fool myself."

That's why the Strategy of Monitoring works so well: no more fooling ourselves. I decided to exploit it for my own habits. If I had a better handle on what I was doing, I could focus my habit-formation energy in the right place. I suspected that in certain areas, I was giving myself more credit for good habits than I deserved.

If you want to see the kind of impact real time monitoring can have, specially given the devices and the technology we have at our disposal today, take a look at Scott Hanselman's IoT demo on monitoring his sugar. Scott's excitement of the technology and the kind of insights that it can provide is a reflection of how any geek would react when he sees huge volumes of personal data analyzed to provide insights that you never had before.

As for my time monitoring system, I realized that the system still had a lot of manual entry points, which is why I wasn't consistent with it, but that failed attempt helped me monitor windows of my time that I really wanted to monitor and that in turn has actually made me a lot more productive than before. After all, some data is still better than none. And I am still working on a system that can monitor more and more of my time without me actively logging things.

The Point? Data collection on yourself and self monitoring isn't all about buying the hottest fitness band in market. It's about building systems which have the potential of providing you insights about yourself that you never had before. And then having the courage and conviction to change based on those insights.

In the posts to come in this series I'll try to document some of my efforts at monitoring my own life in near real time and showcase how I monitor aspects of my life, how I draw correlations between the data and how I tweak my life to bring about some of these changes.

Of course, in the larger scheme of things I'm just a data point of 1, I suck at Mathematics and I'm not even a social or a data scientist, but I hope these experiments inspire you to capture parts of your life that you feel are important and then tweak them ever so slightly to get huge benefits. That's what this series of posts is going to be about.

What aspects of your life are you monitoring actively with data? Of course if it's an area of your life that needs improvement you would know things are bad and if you know things are bad you can fix them, but sometimes, quantifying just 'how bad' things are is the nudge that we as nerds need to change things. And it can teach us things about ourselves that we thought we knew before, but we didn't.

After all, most of us aren't really as mindful as we think we are but we have the gift of data and of the many things data can do, one of the most powerful is brining you face to face with yourself.

posted on Tuesday, 22 March 2016 12:17:28 UTC by Rajiv Popat  #    Comments [0] Trackback
Posted on: Saturday, 01 May 2010 by Rajiv Popat

I have never really discussed my ADHD openly until recently. It was also not until recently that I started talking about taking active and conscious steps to work around it. But then I have been working around it for years.

I have always been a vicarious reader of books connected to philosophy, the human mind, business or management. Poems have been something I have liked ever since school days and I could practically recite scenes from the William Shakespeare play I was studying.

I love books but then it took me years to figure out why I read a few books end-to-end in just one sitting and why I just could not gather enough focus to even browse through others end-to-end in spite of the fact that I desperately wanted to.

I either fell asleep way too randomly or I just quit reading them half way through.

ADHD Is Not About Attention Deficiency

For anyone who has browsed through the basics of ADHD if there is one thing qualified doctors often tell you, it is that ADHD is not about deficiency of the ability to gather attention. As a matter of fact, folks with ADHD tend to be much more attentive than their normal counter parts when they are paying attention. Having said that, ADHD is about the deficiency to 'voluntarily' focus your attention on something.

Put simply, your mind silently-and-quietly almost sub-consciously decides the things that it wants to pay attention to and the things it wants to ignore. Once it does that, no amount of convincing usually tends to work.

Of course you know exercising is good for your body, of-course you know that reading classics is a great way to improve your writing skills but if your brain has flipped the switch on the side of not doing it, chances are you wont be able to give enough attention to the thing to get it done.

Listen Don't Read.

When it came to Outliers, when I was reading it, you would find me with a hardbound copy of the book on my way to commute. If you caught me at a bus or a cab chances were that I was reading it. I completed the book within about a couple of weeks, reading it on my commute to office. 

Atlas shrugged has been in my list of favorite books for years. Having said that, here is a deep dark secret. I was never able to complete the book without skipping huge number of pages in the middle. Lets face it, the book was seriously hard to focus on.

Then then the miracle of a life time happened. I don't know exactly when or how this happened. As far as I remember I just bumped into an audio book and decided to download it. I was hooked on to the idea. My MP3 players started having physical scars because of overuse and it was practically next to impossible to see me on my way to office without a pair of headphones on.

When I went through my first audio-book of atlas-shrugged there was very little skipping. I started remembering and stumbling upon parts of the story that I did not even know existed. I started remembering incidents from the book, I started remembering the names of characters, phrases and writing techniques way better than I had ever remembered by reading the book multiple times over.

There were a certain kind of books that I could have read, for everything else, I almost instantly started preferring audio books. Then came a realization that I happen to be 5x to 10x more attentive and receptive to learning when I am listening to stuff rather than reading it.

For me audio books were like a conversation. My mind was suddenly focused and soaking in words like a wet sponge as I sat down with eyes half closed in a moving bus speeding on its way to my office.

My mind, it seems had pre-decided that while it was okay to listen through a version of the Da-Vinci-Code it was a criminal waste of time to flip pages of a text book and even try to read it.

Classics, literature, travel related books, love stories - the horizon opened up and I was reading, or should I say listening to everything and anything I could lay my hands on. Slowly, as I listened more I also started grabbing hard copies of these and I started reading them occasionally as well.

I had similar issues with long-winded emails which I often found pointless to read. Proof reading my emails, which were generally long was also painful. Editing the blog posts I write was a huge problem as well, because no matter how many times I proof read them, they would typically have a couple of mistakes. Besides proof reading them sounded like a boring chore as well.

Then one fine day the realization dawned unto me with divine intervention, that I could in-fact use the inbuilt engine of Microsoft word to read aloud what was written on screen. In the first few days of doing that, proof reading emails or blog posts like this one wasn't suddenly all that boring or difficult. I actually started liking it and getting done with just one round of review.

The point of this post, is a rather simple one. If you think you have ADHD, having issues with paying attention while multi-tasking and are having a hard time reading a certain kind of material, don't try to force yourself too hard to read it. Go grab an audio book or an audio version of the same content. If you cannot find the audio version, drop the content into Microsoft word and have it read aloud to you by the text to speech feature of Microsoft word.

Of better still, if you can afford it go grab a copy of text aloud with a few natural voices from AT&T and have your emails or word document read out to you. See if you can focus any better. If you suffer from ADHD and are like me, chances are that you will love audio and will soak in much more content than what you will absorb if you were reading the same content. Chances are that you will actually love audio. Try it.

I wish you good luck.

posted on Saturday, 01 May 2010 20:30:00 UTC by Rajiv Popat  #    Comments [1] Trackback
Posted on: Thursday, 30 August 2007 by Rajiv Popat

Malcolm Gladwell toys with the idea of “snap judgements” and how our brain makes snap judgements in his book - blink. He describes how one can learn the art of “thinking without thinking”. He calls this the art of blinking.

Some refer to this as “listening to your heart” or “gut feeling”. Others refer to this as “going by your instincts”; Malcolm, calls this “blinking” and presents the whole concept using a simple yet distinctly elegant and factual examples.

The book is full of tons of examples of snap judgements and a number of experiments which are eye-openers. I’ll never be able to do justice to them by wrapping them up in three lines but here's my attempt to tease you to go read the book. Some examples the book illustrates rather articulately:

  1. An individual realizing in the first minute of watching a statue purchased by a museum for 10 million dollars, that it’s fake, when a team of scientists takes 14 months of study and calculations to come to a completely wrong conclusion before buying it.
  2. Psychiatrics using the ability to blink and techniques for predicting how long a marriage will last just by listening to two people talk for less than 3 minutes about a topic which has nothing to do with their marriage.
  3. The ability to find out if a candidate is a right candidate for an the job, during an interview in less than a couple of minutes; sometimes even without talking to him.

Too much thinking is dangerous. Malcolm questions our traditional knowledge of how a lot of us take decisions:

And what do we tell our children? Haste Makes Waste. Look before you leap. Stop and Think. Don’t judge a book by its cover. We believe that we are always better off gathering as much information as possible in deliberation. We really only trust conscious decision making.

He warns:

But there are moments, particularly in times of stress, when haste does not make waste, when our snap judgements and first impressions can offer much better means of making sense of the world.

He explains why we, as human beings, lean towards basing our decisions on calculations and data and then goes on to explain why this approach is fundamentally flawed and why too much deliberation, data and particularly calculations before taking decisions can be devastating at times.

The book starts with the same lines as Steve Job’s video on Life and Connecting the Dots (using a  follow-your-heart-and-intuition kind-of approach) and then this book goes beyond with Practical and eye opening examples. A must read that I would highly recommend for anyone who has ever hesitated about trusting his gut feeling. Even if you always go with snap judgements this book offers new insights and perspectives which are eye opening.

<Aside> Personally, my life has been full of snap judgements and this book offers support and reconfirms (in a different way), what I've always believed in. But this post, dear reader, is not about me or my life. It’s about snap judgements, so I shall try not to digress. Let's move on with the topic. </Aside>

As programmers we are supposed to blink all the time and yet there's only a really small group of programmers in our profession capable of blinking well. I see countless developers debugging through their code - line by line and working for hours when a 3 second blink, instinct, gut feeling (whatever you call it) would have told them exactly where the bug lies and maybe even given them major hints on how to fix it.

According to Malcolm, this power of blinking is not a special gift that only a few have. He believes it’s something all of us have.

But, as Malcolm puts it we often “override” our blinks with so-called logical thinking, facts and figures and take completely wrong decisions.

I see developers once in a while thinking too hard, wasting hours, to fix that nested if-else complication which has resulted in a nasty logical bug when all they need to do it go out grab a cup of hot chocolate, come back and blink!

Almost Ninety Percent of all performance related issues that I’ve fixed in my development career have been a result of blinking. A hunch about what is causing the system to slow down. All the research, data and figures have just been add-ons; at times, even a waste of time. A lot of times, the data and figures have also driven me in the completely wrong direction.

The concept of blinking seems to work in all aspects of life starting from taking the most complex of decisions, recruiting folks, to fixing bugs and logical errors in code.

Fellow developers and dear readers, when in doubt, Don’t Think - Blink!

(Now go get your own copy of the book! :))

posted on Thursday, 30 August 2007 15:42:36 UTC by Rajiv Popat  #    Comments [3] Trackback
Posted on: Monday, 25 June 2007 by Rajiv Popat

Word has it that developers on the Mac team at one point were spending more than 90 hours a week on Mac development. In fact, Apple had T-shirts to commemorate the Team for their efforts:

Andy Hertzfeld describes the work culture at apple back in the days in First-Person:

Most of the Macintosh software team members were between twenty and thirty years old, and with few family obligations to distract us, we were used to working long hours. We were passionate about the project and willing to more or less subordinate the rest of our lives to it, at least for a while.

In multiple cities of this planet, in every office I’ve worked at, every once in a while, I come across one or two Nine-to-Five-Folks who are awesome individuals; they not bad programmers at all and this post is not about criticizing them. This post is about asking the million dollar question:

“Are 8 Hours a Day Enough?”

In a slightly old survey Dan Malachowski from Salary.com suggests that employees aren’t even spending 8 hours a day at work. In his article where he publishes the results of a survey, He explains:

Are workers really expected to work 8 hours per day, non-stop? According to a Salary.com follow-up survey of Human Resource managers, companies assume that employees will waste 0.94 hours per day. They take this into account when they do their compensation planning. However, those managers privately suspect that employees waste 1.6 hours per day. In fact, employees admit to wasting 2.09 hours per day.

As per the survey surfing the Internet for personal reasons is the top time wasting activity. “Don’t have enough work to do” is the top Time-Wasting excuse. It was sheer co-incidence that I always believed that this is the same excuse people use for wasting precious hours of their life when they are on bench. Anyway, I digress. So basically, Dan doesn’t believe that employees work 8 hours a day. They are in-fact doing multiple other things which cannot be classified as work.

On a serious note, the survey just makes me wonder if it makes sense to measure hours wasted in office by employees? Given the fact that engineers working remotely from home, at times even during insane hours, is a part of the culture in almost all software development shops.

John Wesley has a slightly different take on this. In my personal opinion, John is completely correct in claiming that the 9 to 5 office worker will become a thing of the past for the information worker. He explains why 9 to 5 is not such a good working model:

A continuous 8 hour work day is a relic of the past. It makes sense for physical labor and manufacturing work, but with information workers it doesn’t account for the mental energy cycle. The ability of a factory worker to think analytically is irrelevant, he’s either cranking widgets or he isn’t.

If you clicked on the link, John suggests that we do away with the 9 to 5 work culture with Information Workers. Instead, John is all about introducing agility into work schedules:

Everyone goes through alternating periods of high and low mental acuity. There are days when I work on personal projects for well over 8 hours, but the time is always divided into multiple sessions. I might spend a few hours coding a design, a few hours writing, and a few hours reading feeds, moderating comments, and responding to email.

I work this way because it aligns with my mental energy cycle. Any more than 3 hours in front of a computer and my eyes start hurting and I become restless. I lose the ability to do my best work. Instead of forcing myself to continue, I switch to an activity that allows my mind to recharge. These breaks maximize productivity by eliminating down periods. It’s counter productive to force work when the mental energy isn’t there.

The Mac team’s example, the survey on wasted time and John’s post might seem contradicting at first but give them some thought and they fall in line pretty well. In fact, add them up and they answer the million dollar question we set out to find an answer to. Take data and observations from all these three sources and some commonalities evolve:

  1. We as humans, are not very good at working 8 hours at a stretch on PCs. 
  2. We as humans, need a re-charge and motivation from time to time, in order to keep us hooked. 
  3. We as humans, often multi-task between multiple things! (Multi-tasking is bad for human beings, but it has its own Pluses. It has a “feel good factor” which gives us a high. This is why alt-tabbing in windows feels so much better than working in Tubro-C IDE of Ms-Dos! :))

Know these basic limitations and the next time you take a break between work, don’t feel guilty about it. Having said that, wasting time can be a highly productive activity which can benefit you, your organization and even your clients!

Some ways of productively wasting time and getting recharged include reading about a new technology you are passionate about and seeing how that fits in your current project, talking about code with your colleges, conducting a training, discussing your work related problems with fellow developers, having quick meetings to show off what you are doing or what you are excited about, writing a quick article on something new you learned, answering some questions in a forum etc. (the list can be endless!) - Pick your ways to waste time, depending on which “productive time wasting techniques” re-charge you the most! 

Software Development is like walking on a Treadmill. Stop and you are bound to fall – flat on your face. Keep running and you keep getting fitter and stronger. The fitness and the strength you acquire by running continuously helps you in running faster and harder. It’s a cycle! While it’s important to spend 8 hours a day working, find out productive ways to waste time so that you can put in more and keep your talents razor sharp. Keep running and make it interesting so that you don’t burn out! Who knows, it might give you the motivation and excitement to put in more than 8 hours of work a day.

Patricia Fripp gives a tip on how you can fall in love with your job all over again:

Make a list at the end of every day of what you learned, what was the most fun, who was the most fun to interact with, and how you feel you added to your group's success. A list of the 'beyond the paycheck' benefits. If you only work for the paycheck you will be employed, but not 'employable' long term.

Learn how to maintain personal and professional To-Do Lists for life. There is no better sense of achievement than striking off items from these lists!

Coming back to the million dollar question – Are 8 hours a day enough?

Eight hours a day might be good enough for a job but they may not be good enough for a profession. And they are absolutely no good for keeping a passion alive. If you can’t love what you do, maybe you need to stop right now.  Look harder for profession you can love. Seriously, if you are going to be an unknown-programmer who writes depressing programmer poetry - it’s best that you chase your dreams in a profession you love.

But chances are that if you are reading this, you already enjoy building software and you don't really need the advice on the above paragraph. Spend more time with what you enjoy doing and love it just like you love your lover! Go Ahead, hack your life so that you can spend more time with what you love doing without giving up on other personal commitments. 

To wrap things up, the next time you take a quick-break or engage in an activity for a while, which is technically a waste of time, don't feel guilty! And by the way, the next time you end up spending 16 hours a day with a computer, don't feel guilty either! :)

posted on Monday, 25 June 2007 14:25:19 UTC by Rajiv Popat  #    Comments [4] Trackback
Posted on: Wednesday, 20 June 2007 by Rajiv Popat

Ever felt the “need” to go grab all those files you are seeing linked to the current page? Deep-copy type downloading of a website to your box for offline viewing isn’t new. Wget did quite a good job at it back in the days. In fact, even today it does a pretty good job. You give it a URL, you specify the recursion level of “N” and then it goes and fetches all the URL’s which are connected to the specified URL and are “N” levels deep.

Recently however, I was faced with a slightly complicated problem. What I really wanted to do, was to download a set of 500+ word documents from our work intranet (which runs on SharePoint 2003). The word documents were a part of a SharePoint Document Repository that has a gazillion other Word documents. I was faced with the default SharePoint Document Repository View that has Filter options. After I had set the appropriate filters and was able to see some 500 odd documents that I wanted to download on screen, the million dollar question surfaced in my little mind:

“Ok, now I can see the documents I want. How do I click on all these 500 document links and get them to download at-once, in a single shot, without having to go through the download / save / open dialog box for each and every one of those documents?”

I’m pretty much an Internet Explorer guy because I think it starts up faster than Firefox (and for the Firefox lovers, that’s just a personal feeling so no hate mail please :)) – but there are exactly the scenarios where the power of community plug-ins in Firefox leaves Internet Explorer cold.

FlashGot is a cool little Firefox plug-in that can do some serious damage when it comes to downloading multiple files!

Let’s try and juggle around with some hypothetical situations to see where you would need this tool:

  1. You’re looking at a SharePoint document repository and you want all 100 documents you see on screen downloaded to your box, right now!
  2. You’re looking at a SharePoint document repository, you’ve filtered your view and you want all those documents that you see on your screen downloaded to your box, right now!
  3. You are looking at any screen with X number of downloads and you want all those X downloads on your box, right now! (Ok, I think you get the idea :))

The bottom line is that if you often stare at your browser window, look at a web-page and tell yourself – “wow, this page has so many useful links - I wish I could download all of them in a single click” this tool is the Holy Grail you’ve been looking for!

Besides letting you get all those links, FlashGot lets you filter based on File-Types. So if you are in a page which has hyperlinks to 100 documents, 100 MP3s, 50 GIFs, 20 other HTML pages and 12 Text files and you just want to download just the 100 documents in a single click the FlashGot “More Options…” menu comes to the rescue. The "General" Tab in this is the same dialog also lets you pick your favorite download manager.

You just pick the type of files you want to download, click [Tools / FlashGot / FlashGot All…] menu, and pick a folder. That’s it. FlashGot Rips the URLs and adds them to your favorite download manager. Which means, you can now let the Download manager slog away at saving each download as you give yourself a well deserved nap. :)

Initially, when I was told we needed a set of 500+ word files from a SharePoint List, My first reaction was that I would have to use the SharePoint web-services and throw out some custom code to do this. But then, why write code when you can get the same results much faster using a tool? :)

I downloaded some 500+ word attachments from a SharePoint 2003 filtered view using FlashGot and I’m a FlashGot Fan already! Give it a shot, it’s free.

posted on Wednesday, 20 June 2007 13:56:12 UTC by Rajiv Popat  #    Comments [2] Trackback
Posted on: Saturday, 03 March 2007 by Rajiv Popat

At a client’s office, almost a year ago, a very talented developer on their team thought it was interestingly funny when I said - “and that’s how you divide and rule”. “We call it Divide and conquer” – he laughed. [Being an Indian, at times my English tends to have a slightly different touch to it. :)]

“But you’re probably correct. You don’t just want to conquer. What you really want to do is to conquer and then control the situation and rule, for a long time.” - He added on.

No, we were not making a sinister plan to take over the world. We were just talking about how we can break one big Monolithic BizTalk Orchestration into smaller, easy to mange, easy to comprehend and faster orchestrations.

He had drawn up this Big Design of their existing approach on the left and then I had proceeded to draw smaller designs of multiple Orchestrations and how they would talk to each other on the right when I finally wrapped up the meeting with the line “divide and rule”. I was suggesting that he break his Orchestrations down to smaller moving parts so that when a part doesn't work - he can take it out - independently - and Analyze it!

I don't think any programmer disagrees with the fact that we should Code Smaller. A Lot of basic concept articles, teach a person who is starting out on his programming endeavors how he can Break Larger Pieces of Code into Smaller Pieces. But divide and conquer (/rule) design paradigm goes beyond just writing cohesive, small and easy to maintain functions and classes.

Every now and then I see even good developers forget the Divide and Conquer paradigm under pressure. Or they simply do not put it to practice for tasks other than coding. I've recently seen a very capable business analyst trying to learn build management by taking a CuriseControl configuration file and trying to configure CriuseControl to get the source code from SVN, fire the build, send email notification when the build fails and log the result in the formatted HTML report, all at once.

When I was called in to help, my first reaction was to wipe out all other code from the 50+ line config file - and leave just 5 lines that will have cruise control fire the build. Turns out, those five lines were broken. Once that was fixed we moved on to Getting the source code from SVN - another 3 lines which just worked. We kept fixing a part at a time and soon we were done in a couple of hours.

I've seen so many engineers (Highly capable ones. At times, I'm guilty of this too) run through more than 10 screens before they can reach a reported bug and just reproduce it. Then apply the fix, go through the screens all over again only to find out that the fix doesn't work. Then start thinking of a different fix. Over and Over again. Spending more than 5 minutes on every attempt, just to check if the fix worked. 

When we do this the time taken to fix a bug increases dramatically, the frustration level increases dramatically and the ability to think using a Pragmatic Approach comes down with every failed attempt. We start programming by co-incidence! In situations like these, Isolating the problem by replicating it using smaller code snippets and moving it out of your codebase so that you can analyze it separately, can help a lot. 

If you are trying to fix a bug that requires more than a couple of minutes to just reproduce and has taken more than 5 attempted fixes already, you might be better off isolating the bug by bringing it out of the codebase and reproducing it independently using simple code snippets. If you are finding a bug too complex to fix you're probably trying to fix more than one bugs at a time. If a feature you're building in your sprint seems too complicated you're probably trying to build two connected features simultaneously.

In the pressure of fixing a bug that refuses to get fixed or in the excitement of writing code for something fairly complex, it's very easy to tell yourself - "I'm almost there!" - and it's easy to spend away hours or sometime even days - by continuing to tell yourself that, not realizing that you're in fact, getting nowhere!

If something takes much longer to fix or build than you initially expected or you're starting to get frustrated with a problem - Divide and Conquer! And then, once you've conquered the problem, enjoy your Rule over the situation! :) 

posted on Saturday, 03 March 2007 19:44:47 UTC by Rajiv Popat  #    Comments [0] Trackback
Posted on: Monday, 25 December 2006 by Rajiv Popat

Here is wishing anyone who reads this a very Merry Christmas, Happy Holidays and a very Happy New Year! It’s that time of the year again! Time for celebrations, rest, holidays, fun and above all, a time to get inspired!

A whole new year is near, and that itself, is a good reason to take a pause, look back and spend some relaxing time to plan for the year ahead. Personally, these times feel so very similar to those during my long 10+ hour flights, when the plane is standing silently on the runway and we’re all waiting for the takeoff; The plane staff are checking the pre-flight checklists, assessing the weather conditions, checking the flight-plans and we’re all ready to fly and get to where-ever-it-is we want to get.

Of-course, having a flight-plan for life is a very difficult. But, this is the time when most of us make New Year’s Resolutions before we take off for the year. Wikipedia states:

"The new year resolution is one example of the rolling forecast-method of planning. According to this method, plans are established at regular short or medium-term time intervals, when only a rough long-term plan exists."

Looking back at the History of New Year Resolutions, it was the Babylonians who started this whole concept. They believed that what a person does on the first day of the year will have an effect on that individual, throughout the year. The most popular Babylonian resolution was to return something they borrowed from a friend (usually, farm equipment).

Today, lists like the List of Top 10 New Year Resolutions seems to cover and claims to provide help with most of the resolutions that a lot of us tend to make these days. Then there are sites out there that also provide help in the form of a paid-service which is supposed to help you meet your New Years Resolutions. Are they effective? Honestly, I haven't tried any and hopefully, don't intend on trying them anytime in the future. 

Personally, I don’t find the whole idea of New Year's Resolutions very appealing. Most of the resolutions we tend to make during this time are way too optimistic and un-real. Maybe, that’s why they fizz out within a couple of months. I’m more inclined towards introducing agility into my life using Professional and Personal TODO Lists for Life and striking off items from these lists whenever life permits. I’m also into doing small and agile sprints of myself. I call this the “Your-Next-Version” approach.

The idea of versioning myself and then working for Self-Version started out during a great vacation this year when I spent a lot of time thinking about my plans of self improvements in the next 6 months. I wrote a lot about the things that I wanted to change and made a lot of so-called-resolutions. Then I announced in this blog that I was done doing an elaboration of “Rajiv 0.2” and construction would being soon and that people would notice the difference.

I’ve always said that too much Analysis doesn't really help and after posting about the problems with analyzing too much, I soon realized that I had ended up doing the same thing with my own versions. My idea of versioning myself and keeping constant track of the self-versions, could work, but if it was to work, it needed to be light-weight and not too-optimistic-big-plan-up-front kind of an approach. The approach was quickly tweaked to support agility.

Each version of “Me” would include just one or two new features. The features included in each version would be both simple and incremental - As an example, a feature could say:  

"Just because you can, don’t code for others. You’re not really helping them. Let them find their own answers – even if you know them already. Be a mentor, not a human search-engine!"

A version, typically consisting of not more than a couple of features, can take anything between a month to a couple of months to roll out and my life would continue as normal, except of course I would be really careful and serious about committing to and making just one or two features a part of my life. Once this was a habit, I would call this version complete. For the next version, I would move to next one or two features, which may be an extension of the features in current version that was just completed or something completely disconnected. This approach seems to be pretty effective till now.

This New Year, I suggest the Your-Next-Version approach as an alternate option to New Year’s resolution. "What’s the difference?" - You might be thinking. The difference is exactly the difference between Waterfall and Agile. A New Year resolution is too generic, long and waterfall-like. E.g. for my friends and colleagues who smoke, A typical New Year's Resolution is often something as generic as “Quit smoking” – (way too optimistic and most likely to fizz out within the first couple of weeks or maybe a couple of months).

With the Your-Next-Version approach, we tweak this slightly and just say - My Next Version / Sprint smokes a cigarette less than my current version. Whenever this is achieved and is a comfortable part of your life, you move to the next version / sprint where the features could be an extension of existing features (a couple of cigarettes lesser) or something completely disconnected. We’ve worked with quick sprints, releases and versions in the software world; isn't it natural to extend the same knowledge and use it to tweak ourselves?

Do you version yourself too? If not, doesn't a whole New Year seem like a good time to try this out? Keep your own versions small and keep them agile. Here’s wishing everyone a very merry Christmas, great Holidays and a beautiful New Year full of lessons, love, family-time, work, excitement, growth and lots of new, exciting and stable versions of your current self! :)

posted on Monday, 25 December 2006 17:17:58 UTC by Rajiv Popat  #    Comments [0] Trackback
Posted on: Thursday, 19 October 2006 by Rajiv Popat

There are Software, there are Shareware, there are Freeware and then there are FeelGoodware (ok, I think I just invented that term :)).

It's not about a tremendous productivity hike, becoming tremendously efficient with tasks or any of that... Of-course you could reach out for your Outlook to check your calendar and task-list but there's a "feel good factor" about having Deskjet on your desktop. And who doesn't like typing a couple of keystrokes less or a couple of seconds saved?  Here's what I mean:

 

The Good -

  • It looks awesome.
  • It works with Outlook 2007 (Beta).
  • It's free and didn't install any adware, spyware or crap on my machine.

The Bad -

  • Moving the position of the application on the desktop is a little tricky! You have to click "somewhere" in the transparent application window, drag and hope that it moves :). Once you get "used to" moving it around it's all good though.
  • Default refresh rate is 1 hour. That means Items added in Outlook calendar / Outlook task-list don't show up on the desktop for sometime. Of-course you can manually refresh or set a lower interval using the options dialog box.
  • Eats a 6.5 Megs off my 1.5 gigs of RAM (ok, now that's not that bad! :)) - I guess, that's because it needs to invoke outlook behind the scene. 
The Ugly
  • Actually... Nothing! 

Different people will download this for different reasons. For me, it's the "feel good factor" :) - Uber-cool idea that's brilliantly implemented! Get it Here.

posted on Thursday, 19 October 2006 13:33:08 UTC by Rajiv Popat  #    Comments [0] Trackback