Archive for January, 2009
Are meetings a waste of time?
I don’t think so. But some people seem to think so, or at least, they are quite against the whole “meeting” philosophy.
Here is something I read recently from Getting Real book -
Do you really need a meeting? Meetings usually arise when a concept isn’t clear enough. Instead of resorting to a meeting, try to simplify the concept so you can discuss it quickly via email or im or Campfire. The goal is to avoid meetings. Every minute you avoid spending in a meeting is a minute you can get real work done instead. There’s nothing more toxic to productivity than a meeting. – 37Signals.
According to me, there are times when meetings are useful for brainstorming, coming to consensus, taking decisions, etc. And there are also times, when they are complete waste of time.
But when we think they are waste of time, they are not waste of time for all the participants. Generally they are waste of time for an individual. Some participants are active, and it’s useful for them, but some are passive, and it’s sheer waste of their time. But passive people may not be passive because of their personal trait, but may be because they get invited to the wrong meetings where their involvement wasn’t necessary.
Our goal should not be to cancel the meetings, rather it should be to make the meetings effective and efficient. Here is what I’ve learned, observed and implemented when I set or attend the meetings.
Invite only active people
Meetings are highly effective and efficient, when each member is active for at least 25% of the meeting time. And they are extremely ineffective for some people when few members are active for majority of the time, and rest members are either active for very little time (<10%) or completely inactive. So while inviting a meeting, if we know that a person is going to contribute only for 5 mins or so, then it’s better to communicate with him in his cube on 1:1 basis rather than inviting him for an 1 hour meeting.
Send clear agenda in invite
This will help to achieve the previous step. If you send a brief agenda, then at least that will help invitees to decide if it’s going to be a relevant meeting for them or not. Clear agenda also helps people to come up with some prepared mindset. During the meeting, they understand the progress of the meeting and take active participation in completing items on the agenda. If they don’t know the agenda, they don’t get the visibility of the meeting, and hence may not get actively involved in completing all items on the agenda.
Set a fixed timer
Set a fixed timer – say 30 mins or 1 hour. Don’t extend it just because there is no one outside the door to kick you out. Keep watching the clock during the meeting. Alert yourself before 10 mins only so that you can wrap up or conclude necessary things within last 10 mins.
Reject unnecessary meeting invites
Sometimes I get invited to the cross department meetings, which have almost 20-30 people on the invite list. Sometimes the agenda explains that my involvement is not absolutely necessary for such kind of meeting. When in doubt, I confirm with my manager that if it is okay if I don’t go to that meeting. I’ve learned to reject meetings, which are absolutely not necessary.
Carry a notepad
In worst case, say if you are attending a meeting which is complete waste of time, then instead of watching people’s faces and wasting time, take notes of your next action items, tasks, ideas, etc. I do this many times if I realize that I got invited to the wrong meeting, and there is not much input I am expected to add in this meeting.
Set meetings when you are bored
There are times, when you want to be alone working on your own stuff and you don’t want disturbance and interruptions. Fine, reject all the meetings if it’s possible, and focus on getting things done. But there are also times when I’m not productive on my own. Sometimes my mind gets blocked to solve complex problems or sometimes it gets distracted to other thoughts. In such situations, I end up in procrastinating those tasks. During such times, I found having meetings help me get out of my boredom, mind-blocks or distractions. I’ll go and talk to my colleagues about some issue, do some brainstorming about implementation or so. Instead of wasting time, we get pumped up by brainstorming and solving more issues by discussion. So we find meetings are very productive in such situations.
The bottom line is – it shouldn’t be either this or that approach. We should find the balance. Sometimes meetings are going to be waste of time, but sometimes they are productive as well. It’s up to us how we conduct or attend the meetings. I hope these thoughts will help you to make your meetings more effective.
What are your thoughts? How do you make your meetings productive? Or do you find them waste of time?
Entrepreneurship: The ultimate job opportunity in this economy
I read this fascinating post by Charlie O’Donnell titled In this economy, we’re all entrepreneurs.
This is a must read post for all students, recent graduates, and job seekers. We have always been taught to seek out for jobs after we graduate from schools. No one tells us to start a company right after the school. We’ll be fortunate if we get surrounded by people during our graduate studies who promote entrepreneurship. Either it’s because of less awareness about entrepreneurship or clear visibility about what to do, we generally don’t take the startup route right after the school. Most of us follow the corporate job route. It’s certainly not a bad option if that corporate opportunity is challenging and lucrative one.
But this economy and recession do not leave many challenging and lucrative job opportunities for recent graduates or job seekers. And that’s when Charlie’s advice come into picture -
The whole recruiting process is built around the idea of matching–that there are enough openings to digest everyone into the workforce and its just a matter of matching the right people to the right positions.
Well, what if there are no openings come this May–literally none. No job postings. No on-campus interviews. No job fairs. This isn’t a fantasy. It’s happening right now. Even the companies that are showing up to job fairs aren’t hiring–they’re just there for branding. Let’s not even talk about the number of people getting laid off everyday.
You know what that makes all these students and everyone else out there in the job market…
…besides screwed?
Entrepreneurs.
That’s when you have a product–yourself–that you are solely responsible for. You have to discover, target, and pitch your prospects to survive. It’s like a new market where there aren’t any established sales channels and you’ve got to convince your first customer that spending money with you will bear both immediate and future benefit.
This is a fascinating advice. Why do we have to wait for the big corporations to offer us a job? It’s good to have that as a one of the options, but we should not completely depend on it. Especially in this economy, irrespective of job opening from big corporations, we should keep brainstorming, exploring and experimenting our own ideas and business opportunities. We need to create our own brand. We need to create our own future. We should stop getting worried about this economy and financial crisis. Our thinking bandwidth better be invested in creating next ideas, products and services. So happy starting up!
Busy, happy and prosperous
Seth Godin published this image on his blog Lonely, scared and bitter. Seth is one of the smartest person on the Internet space, and may be I’m the stupidest person. And that’s probably why I’m not getting that post. I get that image, but with a different title for that post. So republishing the same image, with my perspective – busy, happy and prosperous.
I can’t help it, my blood says B+ve. I strive for the top-right corner, so seeing only that on this image.

Have a great weekend ahead.
Generate sequential strings for URL addresses using PHP
I’m working on an interesting project right now, and for this project, I wanted to generate URLs with sequential alphabetic sequence as opposed to using numeric IDs. Using alphabetic string allows me to use short URL addresses with many URL combinations. E.g. If I use numeric indexes, then I can only have 10 possibilities to represent http://abc.com/N, where N= 0 to 9. But instead, if I use alphabetic character, I have 26 possibilities where N= a, b, c to z. I don’t want to add usability issues by using both upper and lower cases of alphabets, so I’ll stick to lower case addresses only.
So I needed a function which will generate sequential alphabetic strings for URL address based on incremental numbers. So I coded up following function:
function getAlphaString($num)
{
$alpha = '';
while($num >= 1) {
$num = $num - 1;
$alpha = chr(($num % 26)+97) . $alpha;
$num = $num / 26;
}
return $alpha;
}
Use this in a for{} loop, and it will give you sequential strings. Or call with individual numbers as shown below, and it will return you appropriate alphabetic string.
echo getAlphaString(5) . "\n"; echo getAlphaString(500) . "\n"; echo getAlphaString(500000) . "\n"; echo getAlphaString(50000000) . "\n";
And it produced following output:
e sf abkpt dejtlx
Hope you’ll find this function useful in one of your applications.
Interesting quotes on Customer Service, Entrepreneurship and Success
Some interesting thoughts that I read on the web in last few days about Customer service, Entrepreneurship, and Success. Read on -
Death is my exit strategy. I’ll be doing significant customer service only as long as I live. – Craig Newmark
Lucky things happen to entrepreneurs who start fundamentally innovative, morally compelling, and philosophically positive companies, creating something interesting and valuable rather than strictly seeking money. – Bo Peabody, Lucky or Smart
People think entrepreneurs are risk-loving. Really what you find is successful entrepreneurs hate risk, because the founding of the enterprise is already so risky that what they do is take their early resources, the small amounts of capital that they have, whatever assets they have, and they deploy those resources systematically, eliminating the largest risk first, the second-largest risk, and so on, and so on. – Jeff Bezos
People we see as happy usually have a way to measure failure. – Silicon Valley Junto
It’s possible for something to “fail” but not be a “failure.” – Silicon Valley Junto
Splitting strings in PHP using explode Vs split functions
Splitting strings into an array is nothing new and is pretty easy using the explode function if your input string pattern is consistent. But if your input string pattern is a little less consistent, then using the split function makes it a lot easier than doing some post-processing on array elements produced by the explode function.
Here is an example:
I have an input field where I ask user to enter her friends’ email addresses to invite them. I instruct user to use commas to separate multiple email addresses. But user will not necessarily enter all email addresses with consistent pattern. The input string may not contain any spaces, or may contain optional spaces before or after actual email addresses. For example:
$recipient_email_list = "abc@example.com, def@example.com,ghi@example.com , jkl@example.com , mno@example.com";
$recipient_emails = explode(',', $recipient_email_list);
//Echo with '|' delimiter to see the spaces before and after email address:
foreach ($recipient_emails as $recipient_email)
{
echo $recipient_email.'|';
}
The output is as below:
abc@example.com| def@example.com|ghi@example.com | jkl@example.com | mno@example.com|
In above example, few exploded strings have additional spaces. So you need to do post-processing on the exploded array as below:
$i=0;
foreach ($recipient_emails as $recipient_email)
{
$found = preg_match('/ /', $recipient_email);
if($found)
{
$recipient_emails[$i]= trim($recipient_email);
}
$i++;
}
foreach ($recipient_emails as $recipient_email)
{
echo $recipient_email.'|';
}
Then the output is as below:
abc@example.com|def@example.com|ghi@example.com|jkl@example.com|mno@example.com|
But there is another easy way to avoid this extra lines of post-processing code. Use split function as below:
$recipient_emails = split(' *, *', $recipient_email_list);
foreach ($recipient_emails as $recipient_email)
{
echo $recipient_email.'|';
}
Then the output is as below:
abc@example.com|def@example.com|ghi@example.com|jkl@example.com|mno@example.com|
In above example, split function actually splits an input string into an array by regular expression ‘ *, *’ i.e. split by zero or more spaces after or before the comma character.
I hope you will find this useful. If you have more inputs or questions, then please share in comments section.
Wrong usage of “Strong Password Policy”
I’m a subscriber of a web service, which provides online manuals or articles for the tools that I use on a daily basis at my workplace. So I need to visit this service once in a while. Today when I tried logging into it after many days, it redirected me to create a new password because my password was not meeting their “Strong Password Policy” requirement.
My first reaction was – why the heck they need “Strong Password Policy”? They are just an online help documentation service, not a Credit Card or Bank website. And I absolutely don’t have any personal information stored there.
But anyways, whatever the reason they thought, I convinced myself to change the password. But guess what, their freaking complex “Secure Password Policy” didn’t allow me to create any password which I thought were quite secure enough.
Then I had to read their strong password policy. Here is what it mentioned -
Your password must meet the following criteria:
- Must be at least 8 characters long
- Must include at least 1 number
- Must include at least 1 symbol character (non-letter or number, such as *, %, or #)
- Must include at least 1 lowercase letter
- Must include at least 1 uppercase letter
- Must not include your username, first name, and last name
- These requirements must be met within the first 8 characters
After reading this, I almost had to control myself from hitting my keyboard on the monitor. Do read the each bullet carefully, especially the last one. Why on the earth that service needs this kind of password policy? Believe it or not, even my Credit Card or Bank websites don’t enforce me to create this kind of “strong” password.
In my opinion, these are the types of services, who absolutely don’t get the web usability. Just because someone cracked the code to create strongest password, doesn’t mean that’s the way to go. On top of this stupid requirement, this service neither has a sophistacated interface to navigate through hundereds of documents nor they have smart search engine.
Come on guys, now it’s almost the end of Web 2.0 era. At least now please throw away those Web 1.0 practices and follow the cuttting-edge technologies and practices. Please grow up.
Why I moved my blog?
For those who are new to this blog, I used to write my personal blog at Adeologue.com, which I’ll be deleting very soon. Recently I moved the same blog to this AdityaKothadiya.com domain. I’ve been wanting to do it since so long, but finally got the time to do it now. Here is my reasoning why I moved my blog -
1. Real identity
I started blogging 4 years ago under the brand called Adeology (Aditya’s Ideology). I really loved that name. But when I decided to host it on the same domain name, not surprisingly, the domain name wasn’t available. The closest I could find was Adeologue.com. I blogged under that brand for almost 2 years. But over the period, I got bored of it. I didn’t find it personal anymore. Also, the domain name wasn’t representing my identity. In this social media world, if I’m building my brand, I thought I better build it under one common identity i.e. my real name.
2. Personal domain
When you are writing a personal blog, which is not strictly topic specific, then it’s better you blog under your personal domain. It gives you some flexibility to write posts which are thoughtful, are oriented towards your readership, but are little off from your blog topic. In my opinion, if you are writing a group blog, or a topic specific blog, then you should go for some generic or topic specific domain name. This also gives you some flexibility to add more authors to your blog as co-contributors.
3. New broader focus
At Adeologue.com, I mainly wrote about entrepreneurship, startups, productivity tips for students and recent graduates, and lessons learned from different books. Since last few months, I’ve been spending more and more time in programming and building web applications, I found less and less time for the blogging. After spending more time on building applications, I also wanted to write about programming, hacks, tutorials, tips that I was learning along the way. But I couldn’t write it under Adeologue.com brand, because it was not started with that theme in the mind. Now, I’ll continue to write about entrepreneurship, productivity, tips for students, book reviews, but I’ll also write about small programs, hacks, applications and more. With this new year, new domain, new design, new focus, I’m excited to share more thoughts and more learning with you.
4. Blogging platform
I first started blogging with Blogger.com service. It sucked big time. I never liked that. And I think it still sucks. It was too close and too clumsy. But it was free, so I stuck with it for some time. After it reached my frustration peak, I moved to TypePad.com – a paid subscription service. That was my another mistake. TypePad also sucked big time. I’ve been using TypePad for last 2 years, but I hardly found any improvement in that service over 2 years. The service is slow. It’s usability has some serious issues. The experience was not pleasant. And the worst part – it was paid. It’s still the same TypePad that I started using 2 years ago. I never felt that it was worth for $90/year.
On the other hand, I found WordPress was doing relentless improvement in their blogging platform. And it’s a free solution if you already have the web hosting subscription plan. When I explored its 2.7 release, I was sold completely. It’s smooth. It’s highly usable. It’s fast. It’s simple and beautiful. It has lot of great features. And it is free. This was the turning point for me to move from TypePad to WordPress. I’m loving WordPress. I just regret why I took so long to migrate to WordPress.
5. More control
Another reason I’m loving WordPress is, it gives me complete control over features, layout, design, tools, all without additional cost. I always wanted to have clean, simplified, but CSS rich design for my blog. I could never achieve that on Blogger and WordPress for minimal expenses. Using WordPress, I got complete control over how I wanted to design this blog’s theme. I’m very happy with the result. Simple and clean. More focus on post entries. Fonts are also bigger and clearly readable. The width of post section is also wide enough that I can post some code snippets. Thanks to Lucian Marin’s original simplistic theme.
I hope you are also liking this new blog, and will also like the content of this blog. Let me know any feedback that you may have.