A Model for Making Everybody Happy

No matter if it is a small company that you work for, Enterprise, Family, or may be school, here are the inevitable facts:

  • You have one or more bosses. Everywhere.
    • All of them want you to keep up fulfilling their demands.
  • Your bosses have personal traits. Everyone of them.
    • They prioritize few things more over the rest.
  • If you don’t have a boss, get one or become your own boss, because it is better to be under control rather than roaming like a free animal.

This post is for you if you are struggling to satisfy all of your bosses somewhat equally.

The Deliverables and Priorities

You cannot skip any deliverables. You have to produce them all. But, the good news is each deliverable has different quality aspects/attributes, and also can be broken down into chunks. There are always must haves and a few nice to haves, and not all of the aspects and chunks are always must haves. Planning for what’s critical in your tasks at hand is very important. It becomes even more useful if you keep your stakeholders in mind.

Make happy

Let me draw a sample case here. Assume that you have four tasks at hand and your are to report to Solution Architect, Delivery Manager, Test Architect and Deployment Manager. All of them have a few things for themselves that matter to them most according to their roles. Until you become one of your bosses, you will not likely to realize the philosophies behind such priorities. The person at the senior levels usually have a broader idea about the project/product is being worked on. S/he knows what’s critical to the success of the project, hence s/he from her/his role tries best to ensure the quality attributes are met.

The Workflow

Keeping three things in mind: Stakeholders, Deliverables, and Priorities, you can attempt to follow this workflow and see if this brings better result for you:

(1) Identify your stakeholders

  1. If you have prior knowledge on them skip to 2
  2. If it’s not clear upfront, keep observing them and try to understand their wants and turn-ons. Slowly a few patterns will emerge, and you will start to gain insights as to what each role wants from you. For example, from the diagram above, you see: Solution Architect focuses on getting the sequence diagrams done with priority.

(2) Write a sticky note for each of them

  1. His/her name and title
  2. Deliverables to him/her along with deadlines if you will
  3. List of priorities that matter to him/her the most

(3) Now pick incomplete tasks from the sticky notes

  1. While you’re performing it, focus on the priorities (must haves)
  2. When priorities are met (doesn’t mean the task is 100% completed), go to 3 (pickup next incomplete task)

(4) When all priorities are met, you must have some spare time

  1. Utilize that time to finish the leftovers (nice to haves) in each task. Leftovers are those which were not covered by the priority lists, but necessary to complete the tasks.

(5) Even if you can’t complete all the tasks 100%, perhaps due to bombardment of multitask, you have focused your time and energy on the priorities, hence at least you have got the most important jobs done. Your boss will appreciate the hardwork.

So, there you have it. A model for making everybody happy somewhat equally. You can apply the same pattern to your family, personal life, schools, too. Hope this works for you. Smile

TechFire – Introducing Technology To the Youngsters

Fact: I lived my whole life in a village. I came to Dhaka (capital of Bangladesh) just about 4+ years ago. My objective of life was to get a job that pays $130/month. When I was 11, I had calculated that that was enough for a family of ours of 5.

In a country with 142 million population in such a small area as Bangladesh, it increasingly becomes difficult to improve without exporting the brains to onshore. You do not have enough money to industrialize. You do not have enough lands to spread production factories without cutting down trees and taking over increasingly deficient lands per head. In addition, Governments we had over the decades in Bangladesh, none of them were famous for being a world class leader ever. It’s rather a reality for many developing countries and more like a vicious cycle. Inhabitants of those unfortunate lands, live clueless as to how to improve their conditions, because Governments appear to be the biggest blocker to the development for most developing nations. Therefore, to improve your own condition without much external help, the most practical solution seems to be, like I have started this post with – be skilled in technology and export your brain either physically or via internet.

When Pointers to Technology is Unavailable

So, why wait? Get a computer and internet and start learning everything. Oh, you can’t afford one? Go to the school library and start now. Come on now – don’t tell me your school don’t have it! Wait, they don’t?

They really don’t.

With 53% literacy rate, 30% population in poverty and almost dysfunctional guardian of the nation, it is expected that the future of tomorrow may not have access to the wonder of the technology world. Growing up in traditional lower/middle class family system, their targets are orthodox jobs as a result of being paralyzed by the system – it’s not their fault.

I believe that we can create a poverty-free world because poverty is not created by poor people. It has been created and sustained by the economic and social systems that we have designed for ourselves; the institutions and concepts that make up that system; the policies that we pursue. – Muhammad Yunus

What if their schools have computers and internet access? Well, the teachers they have – many of them don’t even know how to use computers let alone guiding their pupils to the right direction. They don’t even have clear idea about Computer and Information Technology. How can their students learn from them? Most students don’t know what’s out there, possibilities and their potentials.

Super Heroes Have Responsibility

Like I have said quite a few times before – there’s no international company at Microsoft’s scale has opened an office in Bangladesh. When Microsoft, the first and the most successful software company in the history first opened their office in Bangladesh, many so called intellectuals were skeptic that Microsoft’s sole purpose would be selling Windows in the market. They never welcomed Microsoft because they thought if they had to buy Windows from the stores (not by $1 DVD, rather full retail price), that will limit access to Computer and Information Technology through out the whole country. Not only Microsoft didn’t negotiate any deal with the Government or put restriction on pirated Windows selling, but also they have created more opportunities to get students and rest of the Bangladesh population get even better and official access to the resources Microsoft has to offer – most of the time those are FREE! I will talk about some of those in later posts, but today I’ll point out what Microsoft did keeping those pupils in mind who have nobody to point at the potentials they have with the possibilities of Computer and Information Technology.

The Launch of TechFire Series

Microsoft Bangladesh contacted two prominent schools of Dhaka St. Francis Xavier’s Girls High School and St Gregory’s School to send their curious students to attend a brand new series of seminars named “TechFire" where they will be able to learn what’s out there, what they can do now, and how they can prepare themselves for future. It was held on June 11, 2011 in presence of honorable Member of Parliament Mr. Mizanur Rahman Khan Dipu (Dhaka-6) as the Chief Guest of the event and was hosted by as usual Omi Azad, Developer Evangelist at Microsoft Bangladesh. It comprised of brief yet interactive sessions.

247205_10150207687138740_610263739_7237647_1505552_n 254305_2154496144087_1296945438_2702544_1722414_n 247890_2154498304141_1296945438_2702551_4695677_n

Clockwise: (1) Me presenting, (2) A student asking questions, and (3) Students collecting gifts in the end

Show Me the Money

The sessions were fun, engaging, interactive yet informative. And obviously I was more passionate about money than the rest on that day. While I was choosing my topic for the seminar, only thing that mattered to my thought for some reasons, was money. So, I took Jerry Maguire as my inspiration: http://www.youtube.com/watch?v=OaiSHcHM0PA

Let me tell you something about my life. I lived my whole life in a village. I came to Dhaka just about 4+ years ago. My objective of life was to get a job that pays $130/month. When I was 11, I had calculated that that was enough for a family of ours of 5. I am no rich, but in later part of my life, I got employed by world’s leading software companies. For someone whose life’s mission was a job of $130/month salary background, I thought my story from the very childhood was worth sharing with the future of tomorrow and as the matter of fact it’s the best that I can remember – every little piece of it!

So I told them how to learn skills, export their brains and make money. Smile

Conclusion

We should all need to find our own ways to give back to the community. TechFire is one of the great ways to do it. I hope this seminar series will go a long way. Microsoft Bangladesh will continue to arrange in different parts of the country hopefully starting with quite a few in Dhaka and so on. I am happy being part of the inaugural episode of it. I also hope that they will extend the core idea to make it even more fun and engaging in future. All the best to them!

5 Effortless Investments You Should Make NOW to Uplift Your Career

I have seen star developers to rise and fall, mostly because of their attitude towards work, employers and work environment. Many of them either did not succeed to achieve what they wanted career-wise or miserably failed to meet invaluable aspirations of life. Here are a few things that I would like to recommend that require no cash, or heavyweight lifting to master the art of personal attitude and behavior in workplace that will help automatically hop you on the career bus quickly. Trust me – the results are sweet.

1. A friend in need is a friend indeed

Not only your employer pays you money for the service that you render for them, but also they help your family excel. They give you the necessary money to survive in this wild flat world, educational expenses for your brothers and sisters or such dependents, medical fees for your parents, seed money for your wife to start own business, a better and securer childhood for your kids. When you’re sick or you have family programs, your employer grants you leave. What not. If there’s a single friend indeed for you in the whole world, that’s your employer. Another point to remember is that your employer’s clients are not more important to you than your employer. Whatever happens, you employer is your ultimate client and they are always right.

1aeastertravelersgfairy003b
source: unknown (internet, of course) 

2. Know that smile is free at least, if you can’t laugh out loud

Not just because it keeps your heart healthy, it is important because it helps to create a very positive atmosphere which is incredibly helpful to create and maintain very healthy relationships with the coworkers. Humor works, or at least responding to the humor broadcasts positive messages from you. What does it take for a smile by the way? A little peace of mind? Don’t push it. Try to earn that peace – the rest comes automatically. A very common myth is that creating a culture in the company is hard. It’s not hard – it just starts from YOU. When you’ll be leaving your workplace, and even your kitchen boys/cleaners/peons smile at your when you enter and exit the room, you know you have set the trend that not many people have the courage to do.

3. The WOW factor

Deliver “WOW!” It’s a priceless investment. No matter how shitty your boss is and how least much s/he appreciates your great effort, good work and awesome dedication round the clock, if you can be consistent about successfully delivering WOW, chances are your boss will call you again in new ventures down the road s/he will be on with may be better offer. If you boss is even meaner than you might have imagined that he will not look forward to working with you again, s/he doesn’t deserve to work with you anyway.

Even when you are applying to new workplace, if there are ex-coworkers of yours working there and your soon-to-be-boss waves your resume in front of them, chances are that your ex-coworkers will shout out loud, too: “WOW! Steal, Tanzim Saqib. He’s just so awesome!” The bottom line is do not makes foes, just make friends.

4. Little more about your friends at work – not just all about you

Do not work like a fat selfish cow. Help others to get helped. Become so friendly with your coworkers that even the meanest of them will start to have a very hard life not to be friendlier with you. Remember, friendship is not made. It’s not something you can build in a workshop or get by/from charity. Friendship is earned and it goes a long way in your career. If your coworker wants a help from you, help him/her by all means. Just do not expect immediate return. Every individual is unique, so is their thought pattern. May be it takes more time for him/her than the rest to return the favor or be even friendlier. It is just too essential for teamwork that you cannot ignore.

5. Be not try to be that icon by yourself

Do not follow company idols blindly. You were given an unique personality. You do not have to be Scott Gu or Scott Hanselman if you’re lucky to be working with them. The way how ScottHa measures his blood sugar not necessarily you have to follow that. Learn from them, but try not to be that person. Do not sacrifice the identity associated with your individuality. I have come across people at workplace, whose only thought in their lives, is wishing if they could be X, Y or Z. That is just plain wrong. Folks such as those have no peace of mind. Set goals according to your life’s demands, aspirations, tasteful to your soul, and beneficial to the world. Both employers and employees effortlessly remember the individuals with unique personality. So, invest deeply on that. Smile

Change can start to happen any time. Like right now. The moment you really decide to change, things already start to change. So, start today and young!

    A Must Read: The Thank You Economy

    You can call me a mean guy, because I rarely buy books as much as for the reason I have put miserly less priority on reading books of my monthly free time, if there’s any such thing called “free time”. As you can imagine, books have been replaced in my life by more than 50 blogs delivered via RSS everyday. I have stumbled upon one of such blog posts and come to know about Gary Vaynerchuk’s The Thank You Economy. I have quickly read the review on Amazon, decided to purchase the book and discovered myself reading it on my Kindle immediately. Gary consumed me for straight 2 days by his amazingly addictive write up. Most interestingly it took me by surprise, many of the concepts described in this book, I have been following lately in my personal life, without even being aware.

    ThankYouEconomy_cover

    I was never a big fan of Gary, and one of the reasons was he talks with too much enthusiasm, almost like a show-off, to provoke my suspicion that he is trying to acquire me by the material he is trying to deliver. And what sort of Software guy will hear lecture on Social Media from a Wine seller anyway? Now that I have read his first book for me, I know this guy put substantial amount of time thinking about the philosophy behind human nature, business, social media and how business is moving forward using social media and satisfying age-old static human nature. All my skepticism is gone by now, because no matter how technologically sound you are, social media is about people, and nobody understands better than a business guy whose only passion in life is pursuing incredibly happy customers.

    I was becoming more skeptical by his almost show-off enthusiasm about social media (or you can say about everything!), as I had been progressing through the book. But behold, he is aware of the fact that I am not yet ready to accept his too much passion for what he does, and what a great disclaimer that was in “Why I Speak in Absolutes:

    I’d rather shock you in paying attention, and admit later that business rarely requires an all-or-nothing approach than take the chance that you won’t take the situation seriously enough.

    He wants to give us an inch, so that we can run a mile with it as he claims. 

    The Bottom-line aka. Preface

    Couple of points (mostly action items) that I have made out of this book, should be helpful for me in future as well. In his introduction he laid out two simple criteria for success in highly customer-focused businesses:

    Business

    First step to liking something or someone is getting to know about that thing or person well. Hence, a conversation about the product or with the person is required to happen. Communication makes people happy, because it allows them to know about the thing that you want them to like about. This is where social media enters empowered by people’s chatty nature. Current businesses meanwhile, are changing themselves to take advantage of the social media thing. And this books tells us the philosophy, dos and donts.

    Chapter 1: How Everything Has Changed, Except Human Nature

    I am not associated with an underworld group, but I like a few concepts of Mafia. Make your customers so happy that they automatically owe something to you, and ready to return the favor like right now – it could be even by word of mouth or refer your products to their friends. A good business should expose its heart and soul, then people will respond. In one sentence: in order to be cared by your customers, you have to care them first. As he says:

    Deliver shock and awe to your customers without investing a lot of money, just a whole lot of heart.

    What is this social media driven Thank You Economy anyway? That is genuinely treating each customer as the most valued customer in the world.

    We’re living in what I like to call the Thank You Economy, because only the companies that can figure out how to mind their manners in a very old-fashioned way—and do it authentically—are going to have a prayer of competing.

    Care everyone. The tiniest customer of yours might be spending elsewhere, which could be yours in time.

    Chapter 2: Erasing Lines in the Sand

    A bit of historic essay why businesses should get rid of the resistance in adopting the new way of doing business.

    Chapter 3: Why Smart People Dismiss Social Media, and Why They Shouldn’t

    He, then goes over 11 myths that he frequently encounters with by the execs he meets.

    Myth 1: There’s no ROI in social media

      – turn customers into advocates, because people tend to buy things that are mostly recommended by F&F.

    Myth 2: The metrics aren’t reliable

      – SEO, Analytics, targeted Facebook Ads, Impressions.

    Myth 3: Social Media is still too young

      – the right time to start building relationships is right now, because Social Media will grow old.

    Myth 4: Social media is just another trend that will pass

      – it’s like jumping to a new car, so jump along with them; the relationships will not evaporate.


    Myth 5: We need to control our message
      – You can fix anything unless you’re doing something grossly wrong. As long as you’re keeping your communications civil and honest, there’s no point in worrying about controlling the message and image going out there on your behalf.

    Myth 6: I don’t have time to keep track of what every Joe or Jane says, and I can’t afford/don’t want to pay someone else to do it

      – the issue here is, you simply cannot afford not to! Your big spenders and casual browsers are all living in the same ecosystem, one where news of how you treat one customer can easily spread to hundreds of other current and even potential ones. That’s a big, big deal.


    Myth 7: We’re doing fine without it

      – if you are fine by it. So be it. You do not deserve to stay relevant anyway. A competitive company is always on the offense. Always. Always. Always.


    Myth 8: We tried it; it doesn’t work

      – it requires tons of patience.

    Myth 9: The legal issues are too thorny

      – varies by industry verticals.


    Myth 10: It takes too long to pay off

    – it’s a marathon, you can’t win it without much patience and determination


    Myth 11: Social media works only for startup, life style, or tech brands

    – works for any entity as long as you care your customers

    Buy it now!

    In Chapter 4 and onwards there are whole lot of real life, granular level and fascinating examples from Amazon, Zappos, Boloco, etc. many big brands and gives a detailed framework on how exactly you can put the theories in action. But, that’s it for the review. The rest you should discover by yourself reading it. This book is a goldmine for anyone who wants to succeed in B2C. Worth every penny!

    10 Ways Your Team Can Go Green Right Now Using Microsoft Technology

    If you have seen one of my favorite films, Apollo 13, you know how mission critical strict power budget could be. Fortunately, most of us do not live up on the space, and we have supply of money to purchase power and in some cases, abundance of power supply even it is the result of burning trillion tons of coal and gallons of oil. Essentially, the environment as we know it, is changing and reacting, and we will continue to grow its rage as long as we will not stop being selfish and become sensible about our energy consumption.

    1. Upgrade desktops to Windows 7

    Monitor brightness can be responsible for drawing as much as 43% of overall power consumption. Automatic display dimming, hybrid sleep, USB Selective Suspend, etc. many features are there in Windows 7 to start stopping energy waste more than you should be needing. For more energy efficient workstations, upgrade your operating systems to Windows 7.

    2. Choose the appropriate Windows 7 edition

    Windows 7 has several editions, and if you start from Starter to all the way to Ultimate/Enterprise each of them are less energy efficient than the prior. Starter, ideal for Netbooks for its less power consumption, does not feature Windows Aero, multitouch, Desktop Window Manager, Windows Media Center and so on. In the same fashion, Home Basic, Home Premium, Professional gradually have more features than the prior, hence requires more power. So, choose your edition friendly to the environment.

    3. Upgrade servers to Windows Server 2008 R2

    Windows Server 2008 R2 was designed to apply the same mobile and notebook energy saving technologies in server space. You will find role based feature installation in Windows Server 2008 R2, and that helps you cause lower carbon emission. There are also energy centric metrics available for the system administrators along with other so that they can monitor the consumption. There’s this very useful tool called System Center Operations Manager (SCOM) allows to monitor such activity in all the workstations across the company. SCOM requires separate download and installation.

    4. Better Live on Cloud

    Move your apps to the cloud. It’s the super environmentally optimized solution for server solutions. And also as an user, use more cloud based apps, than desktop apps. Cloud nodes are turned on automatically based on needs. So when apps are on low load, nodes are asleep. They are waken up only when they are needed. This saves tremendous amount of carbon emission which can take place in the datacenters that are not on cloud. Choose Windows Azure.

    5. Switch to Windows Thin PC

    Microsoft has made substantial progress on Virtualization technologies over the years. Virtual Desktop Infrastructure is one of such fruits, which let Microsoft introduce Windows Thin PC, that is basically a lightweight and heavily permission driven version of Windows 7. It allows multiple workstations (instances of OS) from one server. Windows Thin PC is yet to make its debut in June 30, 2011 or so. Its predecessor was known as Windows Embedded Standard 7.

    6. Get rid of daily bad computing habits

    If leaving your desktop powered on is a habit, you need to change that. Either turn it off for the day, or at least put it in sleep/hibernation. Some companies even find it as much as $200/workstation/year waste for leaving workstations turned on. Use Windows Power Options from Windows Control Panel.

    Always update Windows. Updates sensitive to power consumption are pushed via Windows Update. So, make sure you always apply those.

    7. Use tools for green computing

    I am confident a very few of you might know that Windows 7 has an excellent command line utility that generates a very comprehensive HTML report after diagnosing your system on how you can reduce carbon footprint by your workstation. Type it now in your Command Prompt:

    powercfg /energy

    Here’s a sample report:

    Power-plan

    For advanced view on how your machine is consuming power, use this tool: Joulemeter written by Microsoft Research. And if you live in the US, check out Microsoft Hohm which tells your energy consumption by street address. There’s this nice article on MSDN about how your computing behavior should be towards energy efficiency.

    8. Commute together

    Provide a shuttle bus for your team. Smile  Instead of everybody driving his/her own car, you can provide them a single mode of transportation so that you emit less carbon. Put up a WiFi router inside of the bus, so that their Windows Phone and Windows notebooks don’t have to access GPS/EDGE/3G or WiMAX modems for work while commuting. Even better if you could put up a solar panel on the root of the bus to supply power to the notebooks. Or at least encourage them to use public transportation.

    9. Attend meetings together

    If your teams are geographically dispersed, instead of attending calls in the individual cubicles, all should get in a conference room and initiate the call and switch to speaker phone and projector, so that it will save so many calls, hence less carbon. Also, if your teams are within a distant reach, make use of Microsoft Live Meeting and Microsoft Skype, Office Communicator, SharedView to share your screen and audio conversations among multiple users. Next generation to look out for is Lync 2010.

    10. Write parallel code

    If your code can take advantage of seamless parallelization features of .NET 4.0, that’s even better. It will save time on operation even though will use more processors, time saved will save uptime for other peripherals as well.

    11. Non-technological free tip: Talk face to face when you can

    It requires no technology. Talking in person is the most ancient, manual and cleanest technology to stop making server roundtrips for chatting to your peers. It will also give you opportunity to walk a bit may be to relax stressed muscles of your body, which will help you to stay away from RSI.

    Hope this helps your team to respond to nature’s cry for less carbon.

    What Changes Were Made in SVN?

    This is a very common question for CTO of a small company or technical management to track what changes are being made when to the SVN everyday. It is not only applicable for small companies, but also large corporations who often tend to recruit a dedicated team to track everyday changes. Their only aim in life is to patrol like police and ensure what was supposed to change and what wasn’t.

    Powershell

    I have recently written a PowerShell script to aid such effort. Obviously, PowerShell is just a scripting engine, and it has no power over SVN except for querying, so we need Subversion Command Line client to pull data out of SVN.

    The SVN Command

    The following svn command, returns an XML report on differential changes between two dates given the repository URL, username and password. If your repository is not password protected for read operation this will still succeed.

    svn diff --username USERNAME --password PASSWORD --xml --summarize --revision {2011-04-15}:{2011-04-22} https://coding4fun.svn.codeplex.com/svn

    The PowerShell Script

    The script that I have written is very simple. First of all, I have declared the global variables. Then, I have written a parameterized method writeDiffToXml, which executes the svn diff command.

    [string]$today = [DateTime]::Now.ToString("yyyy-MM-dd")

    [string]$yesterday = [DateTime]::Now.AddDays(-1).ToString("yyyy-MM-dd")

    [string]$common_style = 'Style.xslt'

     

    'Comparing codebase from: ' + $yesterday + ' to ' + $today

     

    function writeDiffToXml

    {

        param ($url, $fromDate, $toDate, $outputFile)

        ([string](svn diff --username USERNAME --password PASSWORD --xml --summarize --revision `{$fromDate`}:`{$toDate`} $url)).Replace('<?xml version="1.0"?>', '<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="' + $common_style + '"?>') | out-File $outputFile

        'Successful. ' + 'Now open ' + $outputFile + ' using a browser.'

    }

     

    writeDiffToXml 'https://coding4fun.svn.codeplex.com/svn' $yesterday $today 'D:PsScriptscoding4fun.xml'

    One thing you will notice that before I am sending the output to an XML file, I am injecting an XSLT to transform the result into good looking browser friendly table (see the screenshot).

    The XSLT

    The style that I have written enables the XML to render in a table, including color codes, such as blue for addition, red for deletion, gainsboro for modified, black for none.

    <?xml version="1.0"?>

     

     <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

     

     <xsl:template match="/">

       <html>

       <header>

         <style>

           body { font-family: Segoe UI, Tahoma; }

           table tr th { background-color: Gainsboro; padding: 5px; }

           .modified { color: Gainsboro; }

           .added { color: Blue; }

           .deleted { color: Red; font-weight: bold; }

         </style>

       </header>

       <body>

       <h2>SVN Changes</h2>

       <table border="0">

         <tr>

           <th>Kind</th>

           <th>Operation</th>

           <th>Filename</th>

         </tr>

         <xsl:for-each select="diff/paths/path">

         <tr>

           <td><xsl:value-of select="@kind" /></td>

           <td>

             <xsl:attribute name="class">

               <xsl:value-of select="@item"/>

             </xsl:attribute>

             <xsl:value-of select="@item" /></td>

           <td><xsl:value-of select="." /></td>

         </tr>

         </xsl:for-each>

       </table>

       </body>

       </html>

     </xsl:template>

     

     </xsl:stylesheet>

    Running the Script

    If this is your first time running the script, you may not be able to run your own script just yet:

    .GetSVNDiffsSinceYesterday.ps1

    Run ExecutionPolicy and see what’s the current execution policy of PowerShell scripts in your system. Default is Restricted, so you have to unrestrict it:

    Set-ExecutionPolicy Unrestricted

    When you are done, it is wise to set it back to the original.

    There you have it. By tweaking the yesterday variable you can generate daily, weekly, month reports. Hope this post helps to track SVN history in your company. Smile

    Is Google a Major Software player?

    All the Google fans out there, this is not a hatred post. I am a Google fan myself as well. This post is going to be informative, and an eye-opener to some people, because they have many misconceptions.

    Google has an excellent branding strategy. For many people web is all about Google, while it’s not all wrong, except for social networking but definitely software is all web is wrong. Software is a huge market. Due to Google’s web branding general people tend to think Google is a major software player. This post is not going to be a hypothesis based/futuristic statements using Crystal balls (eg. Chrome OS will be a blast – they’re gonna be profitable), but rather facts, and valid logic with no biasness which I hope would reflect present software industry.

    Head to Head

    Please not another Microsoft vs. Google. Oh, come on now. If someone needs to be compared with, it obviously should be done against a model or standard. Microsoft is the first software company in the world, most successful as of now since its establishment 36 years ago, most revenue earning gigantic software company. And also I have worked with Microsoft and their tools for 13+ years and I know one or two things about them, it would be wise to compare two different entities on their products available in all verticals of software to establish whether Google is a major player in software industry or not based on impact in those verticals. Based on dominant visibility I will score 0 to 5. Just to make sure what it takes to be a giant, I’ll score Microsoft alongside.

    Web & Cloud

    Backed with Search & Ad, Google has a series of excellent products such as Google Maps, GMail, etc. Since they built almost flawless cloud for their products, they decided to put it up to the market. It works for many, but with less interoperability and lack of SLA, this makes a unsuitable option for most enterprises. (Have they started to offer SLA lately?) Who does business without SLA anyway? Not to mention they couldn’t beat Amazon, yet they have visibility in the cloud space.

    Oh, one thing, we are not going to repeat the same product of it’s different flavors in other categories. For example, Google Maps has a variant in iPhone/Android and a desktop version. So, we are not going to mention those again in phone and desktop category.

    Google’s web history is not all about successes, though. AFAIR, Buzz, Wave, Orkut, Knol, Lively utterly failed faster than the hypes were risen.

    Google’s Score: 5. Microsoft’s score: 3 (Live Services + Azure – Bing – Ad, again Ad is the heart of web as of now).

    Mobile

    Android rocks, and there’s no doubt. It probably has equal market share of iOS, if not more. Microsoft is fighting hard with Windows Phone 7, really hard.

    Google’s Score: 5. Microsoft’s score: 1.

    Desktop

    Which desktop software have you used lately from Google? Chrome and Picasa? That’s it? Both works really well in their categories. Chrome although has only 13% market share whereas IE (45%) and Firefox (30%), but its visible in the browser market. But, let’s not forget there’s a whole universe left in desktop business.

    In order to indulge their urge to start something in desktop, they developed Chrome OS for years, and it is still not available to the masses, and everybody says on the internet that it’s way way too basic. I don’t even credit them for Chrome OS, since it is just another distribution of Ubuntu. Credit goes to the extremely hard working and passionate open source activists out there around the world. Sometimes I just don’t understand why a major player (for the sake of argument) in software takes 3+ years and still counting to complete one of the tiniest OSes for desktop given that the source is taken from ready-made Ubuntu!

    We see no collaboration and communication, education, entertainment, music, science, media, finance, drivers, firmwares, classroom, digital typography, standards, runtimes (like Flash, Silverlight), biometrics/identity management, training simulation, AntiVirus, utility, backup, compression, multimedia authoring/editing software from Google. You name it. Google is totally absent in desktop.

    Google’s Score: 0. Microsoft: 5.

    Desktop publishing & multimedia authoring

    “Use Microsoft’s Office Live (instead of Google Docs)” — don’t laugh at me. It was demonstrated as Chrome OS Office capability and recommended to use by that lead (forgot name, the chief scientist) of Chrome OS project. Why am I even talking about it? It has no better feature than 15 year old WordPad comes with Windows. There are strong competitors such as Zoho in online Office space. If you think you have ever thought Google Docs could replace Microsoft Word, Excel, OneNote, PowerPoint, Sharepoint, Project, Publisher, Visio, stop right here. You do not need to read this post any further. Let’s put a simple question here: what Google product would you use to produce professional grade publications (eg. Magazines)?

    You want to be blown away, like right now? Try beta version of the next release of Office, Office 365 now!

    Flash, Premier, After Effects, Fireworks, 3D Max, Maya, Microsoft’s Expression Design, Blend. I just cannot imagine how many decades it might take for Google to beat these wonderful tools. I have almost forgotten the wonderful line of DTP tools such as Photoshop, Illustrator, InDesign, Acrobat, Microsoft Expression Design. Google doesn’t even have a diagram (ie. UML) designing tool. For the magnitude of the market, I’d declare Google has no presence.

    Google’s Score: 0. Microsoft: 5.

    Server tools & Virtualization

    Google has nothing to offer in Virtualization. For example, Microsoft offers Hyper-V, Virtual Desktop Infrastructure, Enterprise Desktop Virtualization. Google has no server OS/tools. Let’s take a look what’s possible in this landscape to name a few only from Microsoft:

    • Server OSes
    • Exchange Server
    • BizTalk Server
    • Commerce  Server
    • Groove Server
    • Project Server
    • Host Integration Server
    • ISA Server
    • Live Comm. Server
    • Office Comm. Server
    • Lync Server
    • Search Server
    • Sharepoint Server
    • Systems Management Server
    • Storage Server
    • Small Business Server
    • Home Server
    • Advanced Server

    Google’s Score: 0. Microsoft: 5.

    LoB

    Google has nothing more than stack of Search, Maps, etc. in formal name Google Apps. There’s whole other universe is left in Google’s LoB offerings. Let’s forget about the major major vendors in this space, let’s consider only what Microsoft has to offer. Sorry, but I know much about Microsoft only.

    • Dynamics AX
    • Dynamics CRM
    • Azure Hosted Online CRM (forgot the name)
    • Dynamic GP
    • Dynamics NAV
    • Dynamics SL
    • Small Business Accounting
    • Microsoft Money
    • Small Business Manager Financials

    Google’s Score: 0. Microsoft: 5.

    Software Development tools and Database

    Google is invisible here once again. Who uses GWT anyway? Until I can find an enormous community who use GWT, I’d say they are slightly visible. Forget those Java, PHP, Eclipse and other massive massive communities, let’s just see what Microsoft offers:

    • Visual Studio (C++, J#), unique languages = C#, F#, VB for web, desktop, cloud, mobile, VCS, Test, SDLC & Process Management, what not?!
    • Embedded programming tools
    • Robotics Studio
    • XNA Game Studio
    • Expression Studio

    Google has no deployable database. They want your business data to store only on their cloud. The world has MySQL, SQL Server, Oracle, PostGre, SQLite and what not!

    Google’s Score: 0. Microsoft: 5.

    Entertainment and Gaming consoles

    Google TV – although Intel have written 50% of their code, let’s still give Google 50% credit for their software. They are visible, but nowhere near Apple TV and Kinect. You can use Microsoft’s Kinect with your hand gestures, play Games and TV! Anyway, like Playstation, Microsoft’s XBOX, Google have nothing to offer to gaming consoles.. no gaming experiences whatsoever, forget Surface Computing.

    Google’s Score: 1. Microsoft: 5.

    Games

    I have no statistics in my hands, but from my wild guess it could be 25% of the whole software industry. It’s that massive! We see Microsoft, Blizzard, Activision, EA, Nintendo, Sony, but there’s no Google.

    Google’s Score: 0. Microsoft: 4.

    Now, is Google a Major Software Player?

    Total: Google = 11, Microsoft = 41 (of 45). That’s what the difference is. That’s what happens when you only focus particular verticals of the whole software market. Software market is complex. A company who develops and distributes/deploys software is a software company. Now the question is whether it is a major player or not. To be able to call one major, we should judge its appearance in the proper scale and right magnitude of the market itself. Even if I agree for the sake of argument that Google is a major player, which is clearly not, let’s take for example a report that ranks software companies worldwide according to revenue. As you can see Microsoft ranks #1 as usual and Google ranks #97 closely falls behind Kaspersky and Intel!. :-)

    http://www.softwaretop100.org/global-software-top-100-edition-2010

    Although I understand that the revenue not necessarily should come from direct sales, business is a complex ecosystem. Google earns a lot of its revenue from Search and Ad (discussed in web category), that’s why to establish its dominion over the software market overall, we have dissected what Google has to offer in various verticals of the industry and tried to judge its position. I am unfortunate to say that Google has barely any appearance except for in the web and mobile (2 of 9 categories), and is clearly not world’s major software player.

    Debugging ASP.NET Applications Interactively on Production

    Production is often like a blackbox to the developers. An ideal server system does not have Visual Studio installed. If it is your website that is hosted in such a server, I hope there are couple ways you trap critical application messages and see how your application is doing. You can write Windows Logs, which you can access from Event Viewer of Windows. You can also write logs to the file system or web service. However, none of the Windows Logs, File based and Web service based logging is interactive. You have to dig through the pile of log messages and investigate in forensic style.

    DebugView for Windows

    The quickest, lightest and the most interactive way you can do is using DebugView for Windows brought to us by Microsoft Sysinternals team. This tool can capture debug output on your local system as well as any computer in the network that you can connect via TCP/IP. If you are connected to work via VPN, this should ideally work as well. It is as interactive as Wireshark for network tracing and Fiddler for HTTP tracing. Let us quickly see what we are talking about. Here’s an example of what you might expect to see in DebugView view:

    Output

    If you drill down to the Capture options, you will find various types of messages that it can trace. You can also specify whether it should show clock time, time elapsed and process IDs.

    Capture

    One of the very useful features of DebugView is that you can export the messages to files, share with coworkers and they can open it using DebugView. If you intend to run tracing for longer period of time, you can specify file path where it will be saved and should it roll beyond certain size of the file.

    Making Your Application Talk to DebugView

    Two ways your application can talk to DebugView: Trace.WriteLine and Debug.WriteLine. Because, ideally traces are captured by the Trace listeners, it is preferable that you use Debug.WriteLine.

    System.Diagnostics.Trace.WriteLine("debug: finding customer: 10928309");

    System.Diagnostics.Debug.WriteLine("debug: debit method has been invoked by: 10928309, 5000");

    No matter it is invoked from your referenced assemblies inside the bin folder, HttpModule, HttpHandler, WebService, class files in App_Code or codebehind files for that matter, DebugView is capable of capturing it and instantly showing it in its interactive screen.

    If you doubt your application is not doing what it was supposed to be in certain scenario, or you have found it is responding slower than acceptable range/SLA, you may want to put Debug.WriteLine as many places as you want, run down the suspected scenario and trace where it is taking the most time.

    Activate Debugging in Your Application

    Now that you have setup the probes, it is time that you activate debugging in your application. In order to do that, you can set debug=true in the web.config file.

    <system.web>      

        ...      

        <compilation debug="true"/>      

        ...

    </system.web>

    Alternatively, you can insert preprocessing directive on top of the class(es) that you will be debugging:

    #define DEBUG

    This will prevent the compiler to exclude Debug.WriteLine instructions as part of the build.

    Gotchas

    DebugView needs to capture Global Win32 messages, but Visual Studio already sets a system-wide hook on that. So, close Visual Studio and run from IIS. Should you have the Visual Studio debugging facility, you do not need DebugView anyway, because you can then see the trace messages in the Output window of Visual Studio.

    Hope it helps.

    Presentation 1-2-3 for geeks

    I know you are probably a proud geek, who loves to leave his geeky marks in everything. Being a geek you do not prepare a simple slide, because you do not understand that there could be even simpler version of what you think “simple” is. You do not care explaining the keywords or even being too enthusiast about simplicity, you actually put whole complete sentences in all over your slides. You produce a very less number of slides and you think the viewer is capable enough to make sense out of the intensely clumsy, have-it-all slides. You think your audience reads your mind, hence it is enough to put out just about something and get appreciated of the hard work. Because you are a geek, you pay very less attention to the organization, and you do not understand the reality of the pain of a viewer of your presentation.

    post-it

    I was someone who had the same problems too. There may be tons of very good references how to improve communication skills, but here’s the recipe that I had to develop by myself and for myself to overcome those difficulties and think like John Doe.

    :Begin

    The Problem
    I know it’s a lot of work, but please try to increase the number of slides. It’s easy to build on ideas in someone’s mind in that way, rather spending processing cycles in understanding a complicated slide. Now that if you add voice narration and/or subtitle, it will be even harder. See how it will use a viewer’s five threads:

    1. making sense of the slide (eg. What’s this icon, what’s that text)
    2. hearing your voice
    3. trying to relate with the previous slides and starting to predict what exactly you are trying show
    4. fearing the slide is gonna disappear any time (trust me – nobody likes timebombs)
    5. checking out the subtitle at times

    After your presentation, people will be so tired and in some cases clueless of what has just happened.

    Solution
    Life is hard as a viewer. So, I propose the following action items:

    1. Clean slides, just about adequate meaningful content, properly positioned text, icons and consistent background color (easy on eyes)
    2. Provide a smooth transition from one slide to the other
    3. Let your presentation guide his/her imagination since humankind has cognitive ability. Because, when people are watching your video, you’re in control! So, exploit that.

    Benefits
    So how many threads now the viewer needs to use?

    • Just one: Follow the presentation (video) + audio/subtitle

    What message am I trying to deliver?
    Keep It Simple & Stupid.

    :End

    Now think about what I have just done between :Begin and :End. I’ve properly defined the problem space (which is geeky slides). What and why are we talking about, what I am proposing (three action items), and how it is saving the world, and then finished with a nice slogan (KISS – Keep It Simple and Stupid).

    It is better to follow some sort of frameworks, instead of keeping your clumsy old habit with presentation.

    Software Innovation: Imagine Cup 2011 Bangladesh Part-1

    April 9, Saturday was one of the best days of my life. It was Imagine Cup 2011 Bangladesh Boot Camp post-Phase 1. I am obviously not a contestant, but I was honored to be invited to the event to engage in mindshare with the young innovators of Bangladesh, who are putting their best feet forward to the Imagine Cup 2011 finals to be held in New York.

    I was present there for about six hours and was privileged to exchange ideas with the participating teams. I have tried my best to give them a third person view on their ideas and really wanted to make sure they had received it correctly. Because I needed to make sure the product that will showcase Bangladesh in the finals should be awesome! You know why? Because as a developing country, Bangladesh has the largest share of responsibility to show off what’s possible, not only because we have some of the brightest youngsters, but also the problems are within our very reach – they’re just around the corner.

    If you are a contestant this time, aspire to be the next, or at least generally curious about the contest, keep an eye on this series.

    The Next Leaders of the World

    The theme of this year’s Imagine Cup is noble: Imagine a world where technology helps solve the toughest problems. To help the contestants realize what the toughest problems are, they set Millennium Development Goals as the baseline. Ten teams from all across Bangladesh came in under the same roof, some bailed out from exams, some were temporarily staying at friends house, some traveled overnight, willing to solve the world’s most difficult problems, are surely not another guy/girl you see next door. They are the innovators, they are the future leaders of Bangladesh, of the world. When I was entering into the room to meet such code-crazies, (ummmm-haaa) I could surely smell energy pumping out of the young hearts, who wanted to change the world. I call these hungry leaders: Noble Innovators.

    215703_10150152930508740_610263739_6741751_2928581_n

    Photo credit: Omi Azad

    On a relevant note, from my experience after the event, I can tell Imagine Cup pushed software innovation ability of the contestants to the extreme. And who is the winner here? The most underprivileged community of the world. We should be thanking Microsoft for bringing this incredible opportunity to exercise healthy design innovation exclusively for mankind.

    Although I did most of the talking, I learnt 5x from them of what I could deliver. It was such an honor to be among such passionate ones, and spending six hours thinking about how we could improve quality of life regardless of the color, sex, race, and religion of the world population. You do not get this opportunity too many times in your life. And I am just happy to be me. Smile

    I’ll talk about the teams and their ideas in subsequent blog posts, but let me first share what message I wanted to convey to the youngsters.

    What is Software Innovation?

    Software is a product like no other in the industry. By setting up production facilities, machineries and equipments, hiring as-many-as-possible human resources, may guaranty in many cases that the products will be built and delivered on time. However, unlike those, software is not manufactured, rather it is engineered. Like all engineering disciplines, it has its drivers, manual and resources to learn from. Learning how to build software now a days has become incredibly easy. Oracle serves us big time – I call it BSc: Bing + StackOverflow + CodeProject. BSc answers it all!

    The collection of articles, tutorials, screencasts on any topic are now abundant than any other time. If you want to learn ASP.NET, visit: http://asp.net/learn. It’s that easy! However, software innovation cannot be manufactured, engineered, or learnt from manual or experience for that matter. It is all about thinking different, simple in order to enrich peoples’ lives and making it a regular exercise.

    Don’t Make Me Think

    Consider me an idiot and build software for me. For example, think about a rickshaw-puller, who works and lives in a very remote location, whose educational profile is next to nothing. That’s him, who needs the solution for toughest problems most. You may have sophisticated workflows in your applications, your software may run well on iPhone or Windows Phone for that matter, but are you enabling that rickshaw-puller by that? Do not leave all the blame for current technology and age old barriers, ex. SMS push-pull service and lack of literacy. If need be, try invent alternatives. Software design is not all about how efficiently your code will run, rather how effectively it solves the actual problem.

    Solve the Hardest Problems

    Don’t skip a problem just because it appears to be the hardest problem ever. The Millennium goals require very serious innovation, and if those were easy, there wouldn’t be any competitions worldwide. The problems call for everybody’s effort. Since you are young and fresh brains, and already have shown promise by coming up with compelling ideas, you have no backdoor to go away from them. Think outside of the box, yet provide with simple and elegant solutions. For example, complex workflows deliver only complexity for a problem in disguise of the intention to provide a solution. If your audience profile is unreachable, because they live in remote area, lack language literacy and insufficient infrastructure, that’s not their fault. Reach the unreachable. You can do it only when you believe in yourself. Take help from corporate success stories and mix it up with your solution space. If Coke can make 1.2B servings daily which covers even the remotest locations in the planet, where there’s not even a radio, why cannot your idea travel that far? See, where not even radio waves could reach, Coke did!

    Microsoft delivers world’s best software development products and tools. From desktop, to web, mobile and even cloud – you name a presence Microsoft is there well established with the same Visual Studio development experience. They realize such immense success comes with responsibilities. So, they arrange such competitions for *you* to innovate. The framework is there; the problems are well defined. The world just needs youngsters like yourselves to do the brainwork and innovate.

    Unleash The Bruce Lee Within

    There’s nothing more rewarding than being honest to yourself. Review nightly or at least weekly, what you have done, what you should have done, and what you should have done better. Maintain a healthy level of hunger. Over-hunger will make you unsocial and under-hunger will seduce you to failure. Regular review will help you understand your current position and you can only advance if you know where you stand. Let me quote Bruce Lee here:

    One must constantly exceed his/her limit.

    You and mankind both will receive its reward.

    Continue Innovating Beyond The Contest

    Work for the community. I know you will be completing your degrees soon, and you will be all busy with searching new jobs, pursuing next degrees, some of you even might give up the projects you are doing for the cup now after the contest, and remember after several years – oh, yeah we did this and that. I would suggest to continue working on the ideas that you have come up with. In addition, working for not-for-profit changes the way how you look at life and the world. It makes you even smarter, cooler, better person and gets you a wide open mind and a lion-heart. After years of practice, you would even achieve the power to distinguish people for profit and not-for-profit. You will see someone walking down the hallway and you could tell that’s a meanwalk. Smile with tongue out

    No, seriously, engage into the community of all sorts. It could be for the underprivileged, not-so-underprivileged like the technology community, etc. Love sharing and let passion guide you. I personally spend 40% of my weekly time for the three different types of community beside my day-job. For technical community, I write blog posts, articles, produce video podcast episodes, write tons of open source code, because I know somewhere around the world, someone is consuming the contents that I produce, learning and enjoying the benefits.

    That feeling, my dear, is so much more rewarding than the hard work, effort, time and energy I put in!