Bombay Pilsner

May 18, 2011 § Leave a comment

Bombay Pilsner


Bombay Pilsner is the only preservative-free, unpasteurised premium beer in the Indian market, for a purer, more pleasurable beer drinking experience!

Specially made to a traditional Indian recipe, the brewing process creates a genuinely smoother and less gassy beer with a refreshing and crisp taste to complement food with more complex flavours.

No detail has been ignored; from the svelte bottle to the eye-catching design, Bombay Pilsner will visually entice, and impress with its taste!

“(Bombay Pilsner) has a crisp, fresh finish, making it the best beer for curry I have ever tried.”

The Top 10 Attributes of a Great Programmer

May 18, 2011 § Leave a comment

The Top 10 Attributes of a Great Programmer

by Steve Riley

With all the latest attention again on what does and doesn’t make a good programmer, I couldn’t help but put together my own top 10 list.

  1. Being a great problem solver.
  2. Being driven and lazy at the same time.
  3. Ability to understand other people’s code
  4. Having a passion for programming
  5. Loving learning for the sake of learning
  6. Being good at math
  7. Having good communications skills
  8. Strong debating skills
  9. Extreme optimism
  10. Extreme pessimism
  1. Being a great problem solver – Hopefully everyone recognizes this one. Most good programming is all about being able to find solutions where others can’t see them. If you don’t have this skill the others matter far less.
  2. Being driven and lazy at the same time – This one surprises some people. Programmers question things and are often “too lazy” to take the long route. The will spend countless cycles trying to simplify the problem and simplify their task. That said they having a burning need to get the job done, they just want to do it as efficiently as possible.
  3. Ability to understand other people’s code – This point is essential but cuts some good programmers off from being great programmers. It doesn’t matter how well you can rewrite everything yourself – you need to be able to work with other people’s code on existing projects, lean on opensource in new projects, and learn good techniques from the code base that is already out there.
  4. Having a passion for programming – on some level you have to love programming for programming’s sake. I suppose to be truly great at anything you have to love it in most cases.
  5. Loving learning for the sake of learning – Programming is a moving target. Unless you love the art of edification you will sink fast. There are no laurels to rest on and no one cares what you did yesterday. Unless you are aware of the techniques on the horizon, you won’t be ready to embrace them when they become relevant.
  6. Being good at math – Different people will have different opinions here – but at the very least having a strong grip on pre-Calculus math. I’ve never seen a great programmer without a solid grasp of at the very least algebra and trig.
  7. Having good communications skills – This doesn’t mean that they can communicate with anyone and everyone. Specifically this means that they are able to clearly express their thoughts on their own terms. I’ve met plenty of great programmers who couldn’t communicate well with the world at large. However, given someone to talk to who understands the problem domain, they were all able to clearly state the problem and the solutions proposed.
  8. Strong debating skills – This follows the same logic as #7.
  9. Extreme optimism – Great programmers I have encountered have an insane certainty they can get the job done once they have chewed on it a bit.
  10. Extreme pessimism – Great programmers I have encountered have an insane insistence that when they lack the information needed to make a good judgment that they won’t be able to make one at all.
      After putting together this list some aspects surprised me, and I was the one who put together the list. So let me explain each in detail.These attributes describe those I’ve found in pretty much every great programmer I’ve come across. There were a number that fell through the cracks and I’ll explain those later.

Some of the things I instinctively wanted to put on the list but couldn’t say were true of at least 95% of great programmers include the following:

  1. Being extremely organized – Understanding when and where organization is important, yes. But anal attention to detail is something present in great programmers as often as it is people in other disciplines.
  2. Being good at managing other people and or programming projects – Somehow these skill sets are wonderfully synergistic when they sit side by side, but management and programming are often completely different disciplines.
  3. Being able to write good design documents – Same as #2. This skill may make some people better programmers and I am in favor of learning it. However, plenty of great programmers I have encountered couldn’t write a coherent design doc if their life depended on it. This will know doubt be debated by heavily by some.
  4. Having an ability to estimate time frames – Once again like #2. This is an acquired skill and a very useful one. However, I have seen absolutely zero correlation between great programmers and estimation skills.
  5. Prolific reading of tech books – I do this all the time myself, but many great programmers don’t. Let me be clear though – most programmers who aren’t all that hot could definitely benefit from bootstrapping their skills with some good reading.
  6. Ability to transfer their programming skills to any programming domain – Although many can, some great programmers can’t, or refuse to, grok other programming technologies. I like to think that this is a “refuse to” situation.
  7. Write code that is correct the first time around – Many great programmers commonly have syntactic issues flagged by compilers or at runtime interpretation. Some are zealots about the details the first time out, others are much more “extreme” in this area.
  8. Having other areas of great skills – some great programmers are good at only one thing – programming.
  9. Social or antisocial – Great programmers come in both forms.
  10. Are someone you’d want on you team – Unfortunately some of them just can’t work with others well.

Programming is…

May 17, 2011 § Leave a comment

Programming is…

Myth: Programmers get to write code all day.

Truth: Most programmers spend a ton of time (in no particular order):

  • Carefully composing e-mails to other programmers/mailing lists/non-technical folks
  • Sitting in on meetings, working on mockups and DB schemas, worrying about performance implications of proposed features
  • Writing bug reports and searching through bug DBs
  • Scrambling to figure out why systems with numerous opaque layers are failing, digging through multi-GB log files with command line tools
  • Explaining downtime to users/higher ups
  • Contributing solutions to strangers’ problems
  • Reading documentation/books/programming blogs/release notes/vulnerability announcements
  • Searching for existing code that does what you want, maybe without knowing what that’s called
  • Evaluating if code you found solves your problem/would perform acceptably/fits in your environment/has a compatible license/has a lasting support community
  • Installing, configuring, and testing a codebase then finding it won’t work for you
  • Googling error messages
  • Digging through public code repositories to see “how [some open source project] does it”
  • Learning source control tools, bash, GNU utilities, and Linux file permissions (and/or the Windows equivalents)
  • Configuring IDEs, virtual machines, web servers, databases
  • Figuring out how to shoehorn together codebases that weren’t designed to coexist
  • Determining which tasks to prioritize from an endless supply

7 Surprising Trends That Show What Tech Skills You Need to Succeed

May 17, 2011 § Leave a comment

By Klint Finley

Visit the Qwest resource center forrelevant briefs and reports to help you better manage your enterprise. Learn how you can outsource your infrastructure in this brief from Qwest: Do More with Less – How Service Providers Can Help Consolidate IT Expenses.

IT workerIT salaries are up after a two year decline, according to CIO.com. That’s good news, considering the level of dissatisfaction IT professionals are experiencing.

Meanwhile, hiring is up as well. Dennis B. Moore has analyzed listings from Dice.com and found an overall increase of 6.1% in the past three months, and a 46.2% increase over the past year. Moore looked at four areas: database, applications, languages and platforms. Moore found some surprising results.

Here are some of the biggest surprises. Keep in mind that these are just the results for one job board and may not be representative of the industry overall:

  • Demand for Hadoop knowledge grew slower than other NoSQL related technologies.However, there were still more Hadoop jobs than there were jobs in every other NoSQL technology combined. Also, traditional RDBMS technologies are still the most popular, with the most jobs and strong growth.
  • Demand for Oracle eBusiness Suite skills dipped. Skills on Oracle’s database, unsurprisingly, remained strong. SAP hiring experienced the most growth in the applications area in the past three months, followed by PeopleSoft.
  • Silverlight overtook Flash. Silverlight jobs experienced 12.6% growth in the past three months, while Flash experienced just 2.2%. Silverlight also surpassed Flash in total number of jobs, with 982 job listings for Silverlight and 646 for Flash.
  • Demand for iPad skills decreased by 3.5%. However, iOS demand increased by 24.9%. Moore didn’t tracked Macintosh or OSX demand in the past so he couldn’t make a comparison.
  • Android had 1,019 jobs, which beat iOS’ 832 jobs. But iOS is growing faster, at a rate of 24.9% to Android’s 19.8%.
  • There was an increased demand for skills in Facebook and Twitter.
  • Azure was the fastest growing platform, with 80.7% growth. But it still trailed Amazon in total number of jobs 1,019 to 103.

The five programming languages with the top growth in the past three months were:

  1. HTML5 (45.2%)
  2. SAP Sybase PowerBuilder (26.0%)
  3. Ruby (15.8%)
  4. Python (15.8%)
  5. Silverlight (12.6%)

PowerBuilder demand grew quickly, but only had 155 jobs total. Assembler also experienced strong growth at 12.2% in the past three months, but only had 212 jobs. Moore didn’t rank Node.js separately from JavaScript, so there’s no indication of how quickly demand for it is growing.

“There was such strong demand growth for all skills, that it is more useful in this category to speak about the area of weakest growth – Adobe Flash,” Moore wrote.

The top languages, by total number of jobs, were:

  1. Java (16,152 jobs)
  2. HTML (9,736 jobs)
  3. XML (9,651)
  4. JavaScript (9,618)
  5. C# (7,940)

Take aways:

  • Microsoft professionals are doing well, with strong growth in C#, Silverlight and Azure.
  • Java is still sitting pretty, as expected.
  • SAP is rebounding.
  • Oracle database skills remain vital, but other Oracle applications are questionable.
  • Demand for CRM skills are in decline, with Siebel, Salesforce.com and Microsoft Dynamics all taking hits in the past three months.
  • NoSQL is a small but growing niche.
  • You can’t go wrong with HTML5 and JavaScript.

10 Ways LINQ Can Improve Your C# Programming

May 9, 2011 § Leave a comment

10 Ways LINQ Can Improve Your C# Programming

Introduction

MSDN describes it as “A query syntax that defines a set of query operators that allow traversal, filter and projection operations to be expressed in a direct, declarative way in any .NET framework-based programming language.”

It allows you to query with a strongly typed syntax. LINQ has its own set of Query operators which make it powerful. These exist in the System.LinqNamespace within the System.Core assembly. These are extension methods on the Enumerable and Queryable objects. Below is a table highlighting them. The standard LINQ query operators can be classified into the following types:

The standard LINQ query operators
(Full Size Image)
Figure 1

There are good numbers of websites that explain these operators with sufficient source code. MSDN, MSDN Magazine, 4guysfromrolla are few of them. This article will focus on a handful of LINQ queries that can improve our C# programming.

LINQ makes the intent of the code more obvious and helps your fellow developers to quickly adapt and work on your code and this is obviously the step after the inline documentation.

  1. Avoiding FOREACH on Collections to Filter for Data

    You can avoid the FOREACH and the IF clauses inside yourFOREACH to filter for data. Check the below sample that eliminates the confusing conditional statements with a simpler LINQ query.

           CLASSIC CODE
       	 Users filteredUsers = new Users();
       	 foreach (User currentUser in Users)
       	 {
       	      If(currentUser.Active && currentUser.Enabled)
       	      {
       		If(!currentUser.LoggedIn)
       		  filteredUsers.Add(currentUser);
                               }
       	 }
    
        LINQ CODE
                        var filteredUsers = from currentUser in Users
                    		       where currentUser.Active && currentUser.AllowLogin&& ! currentUser.LoggedIn
                    		      select user;
  2. Select X Rows

    When we have to select a few rows from a collection, we check the loop counter with a fixed constant and break the for loop Or control the loop counter.

    	                        CLASSIC CODE
    	   	 Users filteredUsers = new Users();
    	   	 for(int counter=0; counter < Users.Count; counter++)
    	   	{
    	   	      If(Users[counter].Active && Users[counter].Enabled)
    	   	      {
    	   		If(!Users[counter].LoggedIn)
    	   		  filteredUsers.Add(Users[counter]);
    	                    }
    
    	                   If (filteredUsers.Count == 10)
    	   	    break;
    	   	 }
           LINQ CODE
                  var filteredUsers = Users.Where(u => u.Active && u.AllowLogin && !u.LoggedIn)
    	 		  .Take(10)
  3. Take the First Element From a Collection

    We face lot of situations where we have to read the first element in a collection. We would start off by evaluating the collection with null and then its elements count and so on. Now, there is a possibility that this collection might be empty. So our classic code would look like:

      List<string> adminUsers = RetrieveUsersForAdminRole(RoleType.Admin);
      User firstUser = null;
      If (adminUsers != null) && (adminUsers.Count > 0)
      {
      	firstUser = adminUsers[0];
      }

    This can be replaced with a simple LINQ Query.

      List<string> adminUsers = RetrieveUsersForAdminRole(RoleType.Admin);
      User firstUser = adminUsers.FirstOrDefault();

    If there are no users found, it returns the default value of the underlying type.

  4. Let Go the IComparer<T> for Sorting

    We no more need to write the tough IComparer classes to sort our custom data. We can now use the OrderBy method to order the data. Look at the sample query below for more brevity.

    	 		    var filteredUsers = Users.Where(u => u.Active && u.AllowLogin && !u.LoggedIn)
    	 		  	 		.OrderBy( u => u.Name);

    The ORDERBY function takes in a parameter that is used to sort. If you want do a multi-sort , use the THENBY operator.

    	 		    var filteredUsers = Users.Where(u => u.Active && u.AllowLogin && !u.LoggedIn)
    	 		  	 		.OrderBy( u => u.Name).ThenBy(u => u.Location);

    Yes, you can sort in a Descending fashion too. LINQ provides the ORDERBYDESCENDING operator for this very purpose.

    	 		    var filteredUsers = Users.Where(u => u.Active && u.AllowLogin && !u.LoggedIn)
    	 		  	 		.OrderByDescending( u => u.Name).ThenBy(u => u.Location);

    Note: There is a ThenByDescending operator too.

  5. Do Not Use for Loops to Initialize Arrays

    Do not use for loops to initialize arrays. We do this a lot of times to write quick test code. This can be replaced using the System.Linq.Enuemerable.Range method.

                int[] monthsInAYear = new int[12];
               for (int counter = 0; counter < monthsInAYear.Length; counter++)
              {
                       monthsInAYear[counter] = counter + 1;
              }

    Using LinQ it is just one line of code.

          int[] monthsInAYearByLINQ = System.Linq.Enumerable.Range(1, 12).ToArray();
  6. Replace Two Similar Loops With Concat

    If you have to loop through two arrays which are similar in nature, you can use the Concat extension and write concise code. See the following example.

                   int[] firstArray       = System.Linq.Enumerable.Range(1, 12).ToArray();
                   int[] secondArray = System.Linq.Enumerable.Range(13, 12).ToArray();
    
                   foreach (var fa in firstArray)
                   {
                       allElements.AppendLine(string.Format("{0}", fa));
                   }
    
                   foreach (var sa in secondArray)
                   {
                       allElements.AppendLine(string.Format("{0}", sa));
                   }

    Now, consider this piece of code which uses the Concat operator.

                   int[] firstArray       = System.Linq.Enumerable.Range(1, 12).ToArray();
                   int[] secondArray = System.Linq.Enumerable.Range(13, 12).ToArray();
    
                   foreach (var a in firstArray.Concat(secondArray))
                   {
                       allElements.AppendLine(string.Format("{0}", a));
                   }
  7. Avoid Transformations

    A transformation is a technique that you follow to return a new collection that is obtained by looping through another collection and applying filters on them. For example, refer the sample below. It creates a new Array after looping through a collection.

      public Users[] FindUsers(RoleType r)
      {
          IEnumerable<Users> users = FindUsers();
          List<Users> filteredUsers = new List<Users>();
    
          foreach (User u in users)
          {
      	if(u.Role == r)
      	{
              	filteredUsers.Add(new User
                                  {
      		FirstName = u.FirstName,	
      	                    …
                                  });}
          }
    
          return filteredUsers.ToArray();
      }

    Instead of creating a temporary list and then filling it up with users, we can use the LINQ SELECT and the ToArray Method to return the results for us.

      public Users[] FindUsers(RoleType r)
      {
          return FindUsers()
              .Select(user => new User
      	         {
      		FirstName = u.FirstName,	
      	                    …
                                  });
      	.Where(user => user.Role == r)
              .ToArray();
      }
  8. The Let Keyword

    The LET keyword lets you build temporary variables in your LINQ query, so that your SELECT query becomes easier to read, and maintain. It lets you predefine variables at a certain stage of the query that can be used in the rest of the query.

    For example, the following query calculates the average twice. This can be replaced by using theLET operator. The query will perform faster as the Average is not calculated twice.

    			   var results= from store in Stores
    			                         where store.Sales.Average(s => s.Price) > 500
    			                         select new { 
    			   				Name = store.Name, 
    			   				StoreAveragePrice = store. Sales.Average(s => s.Price)
    			   			 };

    See the following snippet that uses the LET keyword.

    			   var results= from store in Stores
    			                         let AveragePrice =  store.Sales.Average(s => s.Price)
    			   	                  where AveragePrice > 500
    			                         select new { 
    			   				Name = store.Name, 
    			   				StoreAveragePrice = AveragePrice
    			   			 };
  9. RegEx + LINQ?

    LINQ queries can help you work with Regular Expression results and make your henceforth queries simpler. Look at the following sample that iterates over a collection iterating them over the regex expression.

    Note that you can do other LINQ queries on the RegEx Matched results.

      List<string> examinerStatements = new List<string>();
      examinerStatements.Add("Mark was present.");
      examinerStatements.Add("Julie was present.");
      examinerStatements.Add("John was absent");
    
      System.Text.RegularExpressions.Regex myRegEx = new System.Text.RegularExpressions.Regex("present");
    
      var presentStudents = examinerStatements
          .Where<string>(statement => myRegEx.IsMatch(statement))
          .ToList<string>();
    
      foreach (var examinerStatement in presentStudents)
      {
           //
      }
  10. Querying ArrayList

    You would have found that you cannot run LINQ queries on an ArrayList. That is because it does not implement the System.Collections.Generic.IEnumerable<T> interface.

    	   List<string ArrayList myList = new ArrayList();
    	               myList.Add("One");
    	               myList.Add("Two");
    	               myList.Add("Three");
    
    	   var results = from value in myList
    	   	                select new { value };

    You can use the Cast Operator in such cases. The modified code snippet below shows you how to use that.

      ArrayList myList = new ArrayList();
                  myList.Add("One");
                  myList.Add("Two");
                  myList.Add("Three");
    
      var results = from value in myList.Cast<string>()   select new { value };

    I hope these ten samples helped you learn something new and enjoy reading. 🙂

How a Single Bullet Can Get a Customer To Buy

May 3, 2011 § Leave a comment

How a Single Bullet Can Get a Customer To Buy

(By Sean D'souza)

I remember going to a workshop in the year 2003
The price of the workshop was $8000. Plus there was overseas travel involved. And yes the usual accommodation and food expenses. In all it was going to cost me almost $12,000 to get to this one workshop. And I made the decision on the basis of a single bullet.

So what are these bullets?
The bullets I’m talking about are the bullets that you see in advertising. Bullets are the same thing that you see on the cover of magazines and newspaper mastheads. And if you want to sell more effectively here’s how bullets can help you considerably. When you’re writing copy or creating a speech or rehearsing a presentation or writing an article for that matter, don’t sit down and write text or sales copy.

Write bullets instead
Bullets help you clear your mind. It gives focus to your marketing message.

Let me give you an example of bullets in marketing material 
* The Spider’s Secret. How to get customers to call you instead of you chasing them.
* How to get your fee paid 100% in advance every time.
* How to create a huge demand for your product or service. This secret is over 10,000 years old and works every single time. And most business doesn’t use it.
* Why your website, business card and your advertising can turn out to be a total waste of resources and effort. How the eye sees things and what causes customers to buy.
* The secrets of being able to sell the same product or service at up to 400% higher prices.
* How to create a sequential system that will bring business even if you don’t have a single new customer.
* The Three Prong system. This tool will change the way you look at your business forever. Ignore at your risk. * How we got over US$40,000 worth of products complimentary this year alone…and how you can do it too.
* Piggybacking: You’ll laugh and cry when you see how simple it is to piggyback on the success of others. The more the others succeed, the more you succeed. And all at zero cost to you.
*The Secrets of Conversion. How to engage and make your customer never want to leave you, and instead, continuously buy from you.

What you see are just some of the bullets that we used when we sell one of our courses. At that point the course wasn’t ready. Just the bullets were.

Bullets are your foundational material 
Bullets free you to just run wild with your thoughts and create the outline for your sales copy and syllabus. And they help the customer make a decision. Often, the customer may be too busy to read copy. So they’ll skim till they reach the bullets. Then hit the brakes.

It’s the brakes I hit back in 2003
One bullet caused me to stop and make my decision to spend all that money on that single workshop. That one bullet was my starting point. From then on, everything I read on that sales page was just an added bonus. The more I read, the more I felt that it was exactly what I was looking for.

But let’s get one thing straight
That one bullet alone can’t take the entire load. The rest of the sales page needs to do the job as well. We know this to be true, because if we turned things around and put just one bullet on the page—and no other sales copy—I would most certainly not buy into the workshop.

But the one bullet acted as a brake. It stopped me, and then got me to re-evaluate everything else. And that’s why bullets are so darned important.

No matter how good your marketing material, your customer will usually buy for just one reason 
They’ll pick one bullet out of the whole lot and say, ‘Yeah, that’s what I really, really want!’ And they’ll buy. So before you go into that long winded presentation; before you write copy; before you do anything.

Write bullets

They’re the key to getting customers to stop, read and then buy.

Where Am I?

You are currently viewing the archives for May, 2011 at Naik Vinay.