Friday 11 October 2013

Demystifying 32 bit vs 64 bit

For IT Engineers it seems that 32 bit vs 64 bit should be something everyone should be knowing like the back of their hand or maybe I should say like the bits 0 and 1. However, even though we have heard these terms numerous times many of us are not sure about the differences between 32 bit and 64 bit systems.

So lets attempt to put this across in simple terms for everyone to understand.

Lets be clear that this 32 bit vs 64 bit divide exists at 3 levels:

  1. We may say that at the innermost level we have 32 bit vs 64 bit processors
  2. At the next higher level we have the operating systems that may be 32 bit or 64 bit
  3. At the highest level we have applications that are 32 bit or 64 bit
Let us understand the distinction at each of the these levels

32 bit vs 64 bit Processors

Compared to the 32 bit processors, 64 bit processors are those that have datapath widths, integer size, and memory addresses widths of 64 bits. It will be interesting to know that 64-bit CPUs have existed in supercomputers since the 1970s (Cray-1, 1975) and in RISC-based workstations andservers since the early 1990s.

In the domain of personal computers, 64 bit processors were introduced around 2003 with the introduction of X86-64 and 64 bit power PC processor architectures.

It is commonly understood that with 32 bit processor architectures containing 32-bit address registers the processor can use a maximum of 2^32 addresses (or 4 GB of RAM, could be referenced).

With 64 bit processors, theoretically 2^64 or 16 exabytes of memory can be referenced.

32 bit vs 64 bit Operating Systems

64 bit operating systems quite simply are the ones that will make use of the 64 bit processors available to them along with the higher limit of the RAM.

The 64 bit operating systems are not only capable of using more RAM but also use it more efficiently. Additionally they are able to allocate more virtual memory to any process. For example a 32 bit Windows 7 is limited to using around 2GB virtual memory for a process but a 64 bit one can use up to 8 TB of virtual memory.

Thus one will see and feel an overall better and faster performance with a 64 bit OS on 64 bit hardware vs 32 bit OS on the 32 bit hardware

32 bit vs 64 bit Applications

Lastly lets look at 32 bit and 64 bit applications.
The applications' performance with respect to 32 bit or 64 bit is dependent only on their usage of the memory. For example if there is an application that may never use more than 2GB of memory then it will run equally well on both 32 bit and 64 bit systems.

However, applications that may want to use more memory (for example applications that open large files - e.g. a video editor) will hugely benefit from the fact that the OS and hence the application will be able to make use of higher amount of RAM and hence can run significantly faster with a 64 bit OS on 64 bit hardware.

The following two tables will help you get a quick grasp of compatibility of OS and applications on 32 bit and 64 bit architectures (credit: Techsupportalert)

Table 1 — What is compatible if I have a 32-bit CPU?
Processor (CPU)32-bit32-bit32-bit32-bit
Operating System (OS)32-bit32-bit64-bit64-bit
Application Program32-bit64-bit32-bit64-bit
YesNoNoNo
Table 2 — What is compatible if I have a 64-bit CPU?
Processor (CPU)64-bit64-bit64-bit64-bit
Operating System (OS)64-bit64-bit32-bit32-bit
Application Program64-bit32-bit32-bit64-bit
YesYesYesNo

Monday 30 September 2013

Linux for Everyone

Linux is quite well known today among the IT community but I find that there are still very few people using it as their desktop system both for home as well as office/school/college use. So here I share some facts with you about Linux that may make you want to try it out.

For Everyone
  1. Linux is a very mature Operating System. With its first release in early 90s it has become extremely powerful and mature in the last 20 years and is under very active development and improvement constantly by several hundred developers contributing to its open source
  2. Linux is extremely fast and runs very well on even lower end desktops and laptops. It runs quite well even with 286 MB RAM. With 512 it flies on most hardware. Most people today have 1gb or more on their computers
  3. Linux is extremely customizable - more than any other operating system in use today and you can modify its looks easily and for free
  4. It has a rich suite of productivity applications like OpenOffice, LibreOffice, ApacheOffice among the most popular ones. All of them are feature rich and even provide support for MSOffice file formats
  5. Linux supports all software that you may ever want to use normally. With the increasing trend of software applications on the cloud (like Google Drive, Google Office, Office 365 etc.) this is hardly a constraint for Linux
  6. Support for Linux is as easy as searching for a term on Google. The tutorials for doing anything on Linux are plenty and easy to find
  7. Linux is also pleasing to the eye (an example below of a customized Linux desktop) and with very powerful desktop management systems today (GNOME, KDE among the most popular ones) you can make it look like anything you want - even make it look like a Mac OS or Windows (if that is what you want)
  8. Of course it is also free and almost all of the software that you will want to use on it is also free (and mostly opensource)
A Customized Linux Desktop Looks Beautiful

Suse Linux

For Developers
  1. Linux as a platform is great for developers as well with almost all development tools having excellent support on the platform. Even for Microsoft Technologies - With tools like MONO (http://www.mono-project.com/Main_Page) developers can develop real cross platform .Net applications using C#
  2. The well known Android OS for mobile devices is a variant of Linux and it looks like linux is fast gaining mainstream focus as a mobile device platform too
Try it out yourself
If you wish to experience Linux in Action you may want to try out one of the following very popular linux distributions. They run out of the box and install as smoothly as any other popular operating system on your desktop or Laptop:

PS: 
For those who have heard of or tried Chromebooks based on Chrome OS from Google - that too is a cut down version of Linux that is optimized to work with Chrome Browser as the main interface for the users.

Wednesday 25 September 2013

Java, C, C++ still rule

Lets start by admitting that there is no "industry standard" ranking mechanism for popularity of programming languages in the world.

There are however many ways in which people do surveys, analyse data from different sources like job offerings, training courses, searches on internet and technology sites etc. that help us conclude which programming languages are taking the top mindshare at the moment.

There are three articles that I'm going to link to at the end of this post. All three of them have based their ranking on different ways of measuring the programming language popularity. However, if we combine the results from these three and try to make a conclusion we will find that the top 3 most popular programming languages today are:

  1. Java
  2. C
  3. C++
They appear among the top 5 in almost any similar survey or data analysis and it is safe to arrive at our conclusion.

There are other's that come close in popularity and usage - namely Objective-C, PHP and C#.

What does that mean for the young IT graduates?

It means that if you focus on building good programming skills using the popular 3 languages, you will have a higher probability of finding the right jobs sooner. 

There are of course other skills that will go along with it. Databases is one.
Databases are used on almost all business applications and even if you learn the programming languages, you may not be able to use them much unless you learn how to interact with and use databases. So learning about databases and SQL is important too.

Three sources that have inspired this blog post are:
  1. TIOBE Programming Community Index for September 2013
  2. InfoWorld.com
  3. Best Programming Languages to Learn in 2013

So buckle up and build your skills if you want a rewarding career as an IT Engineer.

Monday 23 September 2013

I want to be only a developer!!

How many times we hear this from the fresh graduates just out of college, looking for an IT job and rejecting some job offer that may not be a profile for a java or .net or some other programming language developer. I, for one, hear this very often from fresh graduates these days.

But there is another take on this, and that is my personal view about the situation.

I think if you want to be a developer but are getting your first break as a tester or an infrastructure management engineer then it may still be worthwhile to take up that job.

What will you gain?

  • For one you will gain professional experience
  • Then of course you will gain money from the job
  • The job will also give you the time and the environment to understand much better what people do in various profiles in IT companies and you can make a more informed decision about what you want to do in your professional life
In a nutshell, you will have several avenues to explore once you start on a job in the IT industry and keep a keen lookout for what you would like and prefer to work on.

If you are actually good at programming you will not give that up even if you are not getting a break as a programmer in your first job. In fact, the keen programmers are generally busy picking up new skills by creating apps on different software platforms or writing code to make some piece of software. They will generally be spending time outside of their formal jobs to gain new knowledge and to hone their skills. After all so many excellent open source projects are done by people in time outside of their formal jobs.

Now what will you lose if you do not take up the opportunity for starting on your first job?
  • For one you will lose on possible professional experience
  • You will lose money
  • You will lose the opportunity to make a more informed decision about your career preference
  • You may spend time looking up for jobs that you might have otherwise spent learning new skills
  • If the job scenario is challenging for fresh graduates, as it is this year for the IT graduates in India, you may find it even more difficult to find a job by the time the next batch graduates and then you will find yourself getting outdated
Again, I say that this is my personal opinion and may be different from that of many others, but I feel strongly that one will learn a lot from any professional experience especially on one's first job.

There are several examples of prominent people around who have found success in their professional life doing something quite different from what they started their careers with and leveraged all their experiences in previous jobs as stepping stones to their success.

So, take a pause, think rationally rather than emotionally about taking up that first job and move on. In a professional career of an average of 40 years or more, the first few months will not count so much towards the technical knowledge that you will acquire but much more for the professional experience that will help you shape your career.


Saturday 21 September 2013

What is Multi-Path TCP

It's an interesting new technology that is quietly getting added to our daily life. Read on:
Apple’s iOS 7 includes a surprise: a ticket to the next generation of the internet

Thursday 19 September 2013

Starting off with Infrastructure Management

One career option that is quite a remarkable one in the IT services field is that in Infrastructure Management. The job in this domain deals with management of IT infrastructure both hardware and software.

Broadly speaking we may classify service providers in this area into two groups:

  1. Those managing both hardware and software
  2. Those managing only software
The first category of service providers comprises of data centers, network service providers etc that have the hardware installed in a facility that they manage. They manage at least the basic service providing software that is installed on top of this hardware.

The second category of service providers comprises of organizations that have people managing only the software that is running on such hardware infrastructure and almost all of these people would be doing this management remotely.

Typcially the software management would deal with 
  1. Management of server operating systems (Unix/Linux, Windows or even operating systems in virtualized model). We will talk about virtualization in a separate post.
  2. Management of databases (for example Oracle, MS SQL, MySQL or any other database installation)
  3. Management of software applications (for example mail servers, or any other applications that are made available to people over the internet). there are thousands of such applications that are used in this manner by people as individuals as well as by organizations for their business processes.
An Infrastructure Management professional may be dealing with any or all of these in their day to day work and would tell you that it is extremely challenging work. What makes it challenging?

For one, most of the time the software that is running in this model is extremely business critical for any organization (think about banks running their applications that cannot afford even a second of downtime). 

Professionals may have to deal with hardware failures, software failures, upgrades, updates, migration of software and many other operations that involve lots of planning and careful execution (taking and restoring huge backups among other things).

All in all, this makes this career path among IT professional very interesting with daily chunks of problem solving and opportunity to take very serrious responsibilities in ensuring that the businesses of today run without a hitch.

A few interesting links that the readers may explore for further information are:

Tuesday 17 September 2013

Exploring Career Options for IT freshers

These days I get a chance to meet and talk to a lot of fresh graduates in Bangalore. They are generally 2013 and sometimes 2012 graduates.

I find that most of them are looking for a job in "Java" or "Testing". A smaller set of people mention Microsoft technologies and even smaller set of people say that they want to work on "SAP" and some new technologies in the field of mobile and "Big Data". None of them have heard about "Infrastructure Management" that has been a fast growing business for several IT services companies.

When I explore to find out what they understand about the kind of work profile in any of these technologies it is quite sad to know that they have little to no clue about what people in these profiles will do, what will be their career path etc.

Hence it will be useful if through a series of blog posts we provide some information about each of these career openings in the field of IT. I refrain from using the term "career path" because for the fresh graduates of this year, the career path will most probably be radically different from what most people in the industry have had and probably we cannot estimate correctly what that might turn out to be.

Over the next posts we will aim to take up some of these areas in the IT domain and try to explain to the fresh graduates what they entail.