|
After
a gap of many months, I am back with your favourite TechForum.
During this time, many of you have sent feedback either to
me or to Express Computer requesting resumption of the column.
It was long overdue, but finally the wait is over
In TechForum I intend to take a very practical approach and
bring in hands-on experience wherever relevant. There are
so many new developments taking place all the time in Information
Technology. It is impossible for everyone to try out every
new or upgraded technology when it is introduced. However,
I am in the business of learning technology. Therefore, I
would like to share the practical experience gained by my
team during their learning process. This would help to reduce
trial-and-error at your end, and would help you to build confidence
in a given technology faster.
As usual, I encourage you to send feedback to techforum@mediline.co.in.
We are also discussing various ways of making TechForum more
effective and interactive. Your ideas and suggestions are
most welcome. Enough of introduction! Now let us get down
to business.
The new theme
The theme of TechForum for now is Exploiting technology
to the fullest. Although this has been the focus of
TechForum over the years, I will be highlighting this issue
as the central theme.
In the highly competitive scenario today:
-
Everybody wants to maximise return on investments.
-
Every step of technology utilisation right from tool selection
to maintenance requires justification.
-
There are too many products, tools and features.
-
Nobody has the time to learn everything about everything.
-
More importantly, nobody has the time to learn everything
that a selected tool/ language has to offer.
Thus, on the one hand we want to maximise the utilisation
but on the other, we have no time to learn! TechForum will
highlight such opportunities for technology utilisation that
are right there in front of you, on your development machine,
in your organisation.
Why are features added?
All of us like to grumble that there are far too many features
being added into software by vendors, and that it is just
impossible to learn all of them. That may be true on the face
of it. However there is a deeper meaning to features. Let
us consider why features are added. The best way to show this
is by giving an everyday example:
Open MS Word
Create a new blank document
Type anything in it.
Now view the tool-tips of the Standard toolbar icons.
If you dont see tool-tips, then choose ToolsCustomizeOptions
tab. Check the Show tooltips option.
Now see the tool-tips for the following icons
| Icon |
Tool-tip |
 |
New
Blank Document |
 |
Open |
 |
Save |
 |
E-mail |
 |
Print
(<your default printer name>) |
All other tooltips only show the meaning of the icon. (If
you have enabled shortcut keys, the keyboard shortcuts will
also be shown). But the print icon also shows the name of
the default printer. Ever noticed it? It was not there in
earlier versions. Why has this feature been added? Think...
It is definitely because it added some competitive value to
MS Word. It is simply because, clicking on print icon directly
prints the document on the default printer. It DOES NOT show
the print dialog where you can change the printer. As a result,
in earlier versions, many users ended up printing the document
on some wrong printer. To avoid this mistake, it is important
and relevant to show the default printer name. That way such
mistakes can be prevented.
Why was this feature not there earlier? It was added after
analysing utilisation of Word and by responding to user feedback.
If you analyse every feature like this, you will soon realise
that features are not added just for competitive advantage
amongst vendors. There is much more depth, user focus and
effort involved.
Active ignorance!
The problem is that we, as end users of these products, do
not look at all the features at all. During code audits, seminars,
while conducting interviews and so on, I am amazed by the
lack of awareness about features amongst all cadres and types
of IT professionals.
Here is a typical conversation with a hard-core(!) developer
during an interview. Normally I dont reveal my name
or position in the organisation initially in the interview
to avoid unnecessary stress!
| Nitin
You have mentioned so many technologies in your résumé.
Which ones are you best at? |
| Candidate
VB and ASP. |
| Nitin
Okay let us consider VB. On a scale of 1 to 10 (10 being
the best) where do you rate yourself? |
| Candidate
7 (I am amazed at the number of people who rate themselves
as 6-8, without any second thought! So much for the popularity
of IT) |
| Nitin
How many commands and functions are there in VB? |
| Candidate
(Gives me a weird look; thinks for few seconds)... Dont
know. |
| Nitin
No problem. How many functions/features do you use? |
Candidate
(Now a harsh look) (He is expecting questions like - what
are the different cursor types; what is binary compatibility;
what is type library; and so on).
(Finally answers ...) ... dont know, may be 50 to
60 |
| Nitin
Fine. Now if I tell you that there are more than 2000
commands, functions, optional arguments in VB, isnt
60 a very small number? |
|
Candidate Maybe. (By now he is convinced that he
has landed up in the wrong place) |
| Nitin
No problem. Dont you think you should know about
these 1900 odd features also? |
| Candidate
Not really. I know all the features that I need! |
| Nitin
But you just said you dont know almost 90 percent
of features. How can you say that you dont need
them unless you KNOW what those are? |
| Candidate
(Completely confused by now) ... If I need a feature,
I use online help to find it. |
| Nitin
(Persisting with the demolition...) How often have you
found a new feature you needed by referring to help in
the last six months. |
| Candidate
(After a lot of thinking) Twice. |
| Nitin
Would it not be a good idea to just preview all the available
functions, commands, menu options, dialogs in VB so that
you are AWARE of what is available? If it is not useful,
ignore it. Otherwise use it. |
| Candidate
Yes. Maybe. Never tried that. |
|
Nitin Can you go through all commands and functions
in VB and ASP in next 7 days and come for a repeat interview?
|
| Candidate
(The response is so varied that it would be better not
to mention it here. Even if the guy never comes back,
if he does go through the entire feature set, I am happy
to have added some value to his life!) |
Such is the state of affairs. Unfortunately, only candidates
who are hands-on developers can get tested like this. What
about architects, system analysts, database designers, consultants,
administrators and so on?
The moral of the story is that there is a huge amount of underutilisation
around. And believe me, it is an OPPORTUNITY. For all of us.
In upcoming articles of TechForum I will highlight many such
opportunities that can add value to your day-to-day workinstantly.
As a trailer of what you can expect, here is a very useful
example:
Updating incremental data in SQL Server quickly
Very often we need to update data into a central table based
upon data coming in from different locations. This is a typical
consolidation scenario where data is updated only in remote
locations and pooled in the Head Office for further analysis.
It is important to know whether each record being uploaded
is entirely new or represents an existing record being updated
or in an unchanged record. Based upon this, you need to insert
or update or do nothing. In short, row-by-row, we need to
find out if the source and destination rows have changed.
This involves comparing each row field by field for all the
rows to be uploaded. This is time consuming and cumbersome.
Fortunately, SQL Server offers a simple SQL function to help
you decipher this quickly.
The approach is simple. Rather than comparing each field,
make a string out of all the fields in a row, make a hash
total (checksum) based upon this and compare it in source
and destination. This way it is very easy to detect rows that
have changed.
The checksum function has three variants in SQL Server (2000).
| Function |
Usage |
| checksum() |
Calculate
checksum for a row or expression |
| binary_checksum() |
Same
as checksum, but handles multi-locale data differently |
|
checksum_agg() |
Aggregate
version of checksum. Useful to detect changes in an entire
table. |
Syntax
of Checksum() function
CHECKSUM ( * | expression [ ,...n ] )
...
means all columns of table. CHECKSUM returns an error if any
column is of noncomparable data type. Noncomparable data types
are text, ntext, image, and cursor, as well as sql_variant
with any of the above types as its base type.
This can be used very easily to create hash indexes.
Using this function you calculate the checksum of the data
to be uploaded, row-by-row, and then check it against the
checksum of the target row. If the two are equal you dont
need to upload/update the row.
Simple, and effective!
More such useful and often unknown things from the world of
technology in upcoming columns in Tech Forum.
Feedback
Your feedback, suggestions, requests for covering specific
topics or issues are welcome. Please send feedback to techforum@mediline.co.in
 |
About
the Author Dr Nitin Paranjape is the Chairman and MD of
Maestros (Mediline). He is a consultant with many organisations,
covering appropriate technology utilisation, business
application of relevant technology, application architecture
and audit as well as knowledge transfer. He has authored
more than 650 articles on various technology-related subjects.
He can be contacted at nitin@mediline.co.in |
|