Search This Blog

Wednesday, 14 May 2014

Professional tips that better channelize your career

Although I normally ignore posts like "n tips to..." such as 10 ways to successful management, 7 tips to loosing weight, 5 mistakes made by job seekers.... so on and so forth, I found this particular "n tips to..." kind of post quite interesting on yahoo. So this post is courtesy [https://in.finance.yahoo.com/photos/20-time-management-lessons-everyone-should-know-slideshow/20-time-management-lessons-everyone-should-know-photo-1400045701986.html].. Not my original discovery.

But I'd like to say, most of the tips mentioned here are the ones that I've myself learnt as a professional. Hence I'd like to archive this in my blog list.


  1. When you're just starting your career, you need all the help you can get managing your time. Even when you're working hard, you could be wasting a tremendous amount of time either by trying to multitask or by focusing too much on minute details. Montreal-based designer Étienne Garbugli has struggled with all of that. But as he's gotten older, he's learned how to manage his time and workload more effectively. Today, he's a consultant and entrepreneur, and recently published his first book, "Lean B2B: Build Products Businesses Want."
  2. There's always time. Time is priorities.You never "run out of time." If you didn't finish something by the time it was due, it's because you didn't consider it urgent or enjoyable enough to prioritize ahead of whatever else you were doing.
  3. Days always fill up faster than you'd expect.Build in some buffer time. As the founder of Ruby on Rails and Basecamp, David Heinemeier Hanssonsaid, "Only plan on four to five hours of real work per day."
  4. Work more when you're in the zone. Relax when you're not.Some days you'll be off your game, and other times you'll be able to maintain your focus for 12 hours straight. Take advantage of those days.
  5. Stop multitasking. It kills your focus.There have been academic studies that found the brain expends energy as it readjusts its focus from one item to the next. If you're spending your day multitasking, you're exhausting your brain. There may be "n" tasks in your bucket, but prioritize and focus on one at a time. Working on more than one items at a time doesn't let you focus on even one of it.
  6. We're always more focused and productive with limited time.Work always seems to find a way of filling the space allotted for it, so set shorter time limits for each task.Work is the best way to get working. Start with small tasks to get the ball rolling.The business plan you need to finish may be intimidating at 8 in the morning. Get your mind on the right path with easy tasks, such as answering important work emails.
  7. Work iteratively. Expectations to do things perfectly are stifling.Gen. George S. Patton once said, "A good plan executed now is better than a perfect plan executed next week."
  8. More work hours doesn't mean more productivity. Use constraints as opportunities.Don't kid yourself into thinking that sitting at your desk will somehow extract work from you. Do whatever you can to finish your current task by the end of regular work hours instead of working into the night.
  9. Separate brainless and strategic tasks to become more productive.Ideally, you can brainstorm your ideas and then execute them. If you're constantly stopping your flow of work to rethink something, you're slowing yourself down.
  10. Organize important meetings early in the day. Time leading up to an event is often wasted.If you have an important meeting scheduled for 4 p.m., it's easy for anxiety to set in and keep that meeting at the front of your mind. Try to get them over with early so you can work without worrying about them.
  11. Schedule meetings and communication by email or phone back-to-back to create blocks of uninterrupted work.You'll disrupt your flow if you're reaching out to people throughout the day.
  12. Work around procrastination. Procrastinate between intense sprints of work.Try Francesco Cirillo's "Pomodoro Technique." "Pomodoro" is Italian for "tomato," and it refers to the tomato-shaped cooking timer Cirillo used to break his work into 25-minute increments with 5-minute breaks in between. You can use the same idea with your own increments, as long as they inspire bursts of hard work.
  13. Break down a massive task into manageable blocks.No two tasks ever hold the same importance. Always prioritize. Be really careful with to-do lists.Daily to-do lists are effective ways of scheduling your day. Just do what you can to keep bullet points from making "clean desk" on par with "file taxes."
  14. Always know the one thing you really need to get done during the day.To help prioritize, determine what task in front of you is most important, and focus your energy into getting that done as soon as possible.
  15. Delegate, and learn to make use of other people.To be truly efficient, get over the fear of handing work off to someone else. "If something can be done 80% as well by someone else, delegate!"
  16. Turn the page on yesterday. Only ever think about today and tomorrow.Don't distract yourself with either the successes or failures of the past. Focus instead on what's in front of you.
  17. Set deadlines for everything. Don't let tasks go on indefinitely.Spending too much time on a project or keeping it on the backburner for too long will lead to stagnation. Get things done and move on.
  18. Always take notes.Don't assume you'll remember every good idea that comes into your head during the day. It doesn't matter if it's a notebook, whiteboard, or an app like Evernote — just write stuff down. I do this on the go in my mobile.
  19. Write down any unrelated thoughts that pop up when you're in the zone, so that they don't linger as distractions.You'll get them out of the way without losing them.

Wednesday, 7 May 2014

VM Error (Solved): This virtual machine appears to be in use. press the "Take Ownership" button to obtain ownership of it.

How did I bump into it?
Windows updates were done and my system restarted. The connected VMs crashed during the reboot.

This is common, and will happen whenever the system is abruptly shutdown or the host machine crashes.
When you attempt to re-connect to your VM after restart, an error message is thrown as below

This virtual machine appears to be in use.If this virtual machine is already in use, press the "Cancel" button to avoid damaging it. If this virtual machine is not in use, press the "Take Ownership" button to obtain ownership of it.
Solution: (Windows) 
  1. Locate your virtual machine files (.vmdk) there would be a folder for lock files. Lock files have the extension .lck.
  2. Delete the lck file. Try starting the VM.
Significance of lock files [Thanks to info on www.vmware.com]
  • When a VM is started lock files are created. These files are created so that consistency is maintained on virtual disks considering the case of multiple VMs and hence multiple reads and writes.
  • When a VM is powered off in a routine manner the lock files are also deleted. In case it is not powered off properly, a stale lock will be maintained to protect the VMDK file. When the VM is started / resumed again, the stale lock will be removed.
  • To make sure no other VM is accessing the lock file, the following conditions are checked.
  • The lock was created on the same host where the VM is running
  • The process that created the lock is not running
  • If the above conditions are satisfied, the stale lock is safely removed. But if one of the conditions is false, an error dialog is displayed saying the VM cannot be powered on / resumed.
  • In such cases, if one is sure, the lock file can be deleted, to resume the VM.
Hope this helps.


Friday, 18 April 2014

Hashing Passwords - Salting

While building a secure signin framework, We tend to use hashing, double hashing and hashing using multiple algorithms, assuming that the above techniques can make the process of cracking a password slower. That is not really true!

We need to bear in mind that,


  • Cracking of passwords is not done by brute force always. 
  • There are algorithms which guess the password with the use of special dedicated harware and pre-computed list of common passwords which keeps growing. 
  • The GPUs and hardware available now can compute billions of hashes per second.


Some very simple techniques can make cracking passwords extremely difficult. One of them which I'd like to highlight again is salting. It is simple to implement and difficult for the attacker to guess.

"Salting of Passwords" is a simple yet powerful technique in which a random string is prepended / appended to the password  and hashed. This makes each password unique after hashing as well. Unless the salt value is known to the attacker and the salt is long enough brute force or look-up tables would also not be helpful in cracking passwords.
It is important to understand that the salt must always be unique per user per password.
If two users have the same passwords they would not be getting computed to the same hashes after adding the salt. Salting must be practiced correctly in combination with the right algorithm. Some algorithms are weak and can cause hashing collisions which means two strings generating the same hash.

In the case of salting,
Saving the password to the database

  1. Once the user keys in the password, hash it.
  2. Generate the unique salt value.
  3. Save the hashed password and the salt value in the database.


The salt value should be different for every change of password.

Validating the password

  1. Hash the password keyed in by the user at the time of sign in. The algorithm used for hashing must be the same as used while saving the password.
  2. Retrieve the value from the database for the keyed in username and hashed password.
  3. Pre-pend or Append the salt value and hash it. Please note, it is not mandatory that the salt value must be pre-pended or appended. It is up to the developer. The logic for retrieval and save has to use the same technique.
  4. If the values match, the authentication is successful.


I have found a link that could be of good use to those who want to understand this technique better with code level details and faqs.
https://crackstation.net/hashing-security.htm