Saturday, November 17, 2007

Script vs Program

I think the difference between "scripts" and
"programs" relates to the human processes that
are involved in their development.

A script is basically written directly, possibly
going through several iterative cycles of refinement.
Scripts generally have a reasonably simple architecture
(even if they are quite long and complex in actuality).

A program is *designed* and code is written to
implement that design.

I mostly write scripts. Generally this is no real
"design" involved. Certainly there is some
analysis of my needs (desired outputs and/or
effects) and my inputs and resources (expected
inputs, available tools or data, etc). However,
the necessary filtering, transformation and
manipulations of my inputs are generally pretty
straightforward enough of obviate any formal
design process.

Naturally I do my scripting using languages that
are particularly well suited to this process
(interpreted, high-level languages that offer
flexible manipulations of strings, lines of input,
whole files, etc). Obviously there are many
scripting languages that are particularly apropos
for tasks in specific domains (awk and text
processing, expect for automation of interactive
processes, TCL/Tk for GUI interfaces, procmail for
e-mail filtering, sorting and auto-response generation,

I don't think of Python as a "scripting" language
though it certainly has "scripting" features.

Now are you still confused???

Comparing Frameworks: Java And PHP

On Wednesday in Frankfurt at the PHP International Conference I gave a fairly general talk on issues in Web frameworks. I had fun making a graph comparing Java, PHP, and Rails, and you might enjoy it too. [Update: has a grossly inaccurate flame-bait take on this, and won’t let me sign in to comment; won’t take my password, and also won’t take the one they email me when I say I forgot. Grr.] [Update, February 2007: There’s now a Korean translation by CHOI Jae-Hoon; thanks!]

The Context · The problem at hand is Web Application Building. Thus we are not considering general issues of compute performance, because in Web apps, you don’t do much computing. You get some values from the browser, you use them to pull some info out of a database, you report them to the user, maybe you update the database, and that’s about it.

Here’s the graph, followed by some applications.

Comparing Web Frameworks

Scaling · If you’re actually doing any computing, Java is obviously the fastest. For running web apps, the maximum scalability is probably about the same, because there’s not much computing there. After all, Java runs EBay while PHP runs Wikipedia and Yahoo! Finance. Both clearly scale “well enough”.

For Web apps, I’ve given PHP the edge, because I think building scalable PHP is a little easier. By default, PHP gives you a “shared-nothing” (or at least “shared very little”) architecture, which means you’re going to scale out pretty well until your database hits the wall. Java is a much richer system and assumes you’re smart enough to know whether a shared-nothing architecture is appropriate or not. The effect is, you have to be smarter to get the same kind of scaling out of Java.

As for Rails, I think it’s probably the case that you can build a Web-scale app, just like Java and PHP, but we don’t know because nobody’s done it yet. Also, we have to penalize Rails a bit because most apps end up having a little computing in them, and Ruby is quite a bit behind the alternatives in that department.

Development Speed · The question is “All other things being equal, how fast can I get my Web app on the air?” I think Rails has set a new benchmark here; you keep hearing astounding stories of serious applications going up in days rather than months and weeks rather than years.

Having said that, Rails’ sweet spot (CRUD-oriented greenfield apps) is well-understood; but still, it seems obvious that Rails has some lessons to teach that the rest of the frameworks would do well to learn from. And I’d argue that the current direction of Java EE is evidence that that learning is happening.

PHP’s original claim to fame was that it was the quick-and-dirty way to get a Web app on the air. There’s no point trying to sweep the “dirty” bit under the carpet; a lot of those quickie PHP apps are butt-ugly. One of the reasons Rails is interesting is that it’s quick and clean.

Developer Tools · Application building and maintenance isn’t a sprint, it’s a marathon. Your overall results in the long term are going to depend a lot on the quality of your tools. Happy developers are productive developers.

Java is the obvious winner here, by a mile. Granted, Rails has TextMate and PHP has the Zend stuff, and while there is work over in Eclipse to add support for both PHP and Ruby. But the comprehensive, integrated, polished, fast support that a Java developer gets from NetBeans or Eclipse or Idea is miles beyond any of these things. I’m not really up-to-date on Eclipse or Idea, but if you look at the recent NetBeans 5.5, the amount of automated support for Web-app development is astounding; if I’d been graphing NetBeans instead of Java, I suspect it’d have equaled or passed PHP in the development-speed department.

Maintainability · Good apps, once built, tend to be in production for an astonishingly long time. Which means that they have to be maintained for an astonishingly long time. Which means that maintainability is important. There are a lot of things that go into maintainability, but I suggest that the biggies are object-orientation, MVC architecture, code readability, and code size (less is more, a lot more).

This is PHP’s Achilles’ heel, of course. Yes, it is possible to write clean, object-oriented, modular, MVC-style PHP applications. But most people don’t; the majority of apps that I’ve seen have spaghetti PHP code wrapped around spaghetti SQL embedded in spaghetti HTML. Also, a lot of the people who really understand O-O and MVC and maintainability would rather work in Java or Rails.

I’ve put Rails ahead of Java just because there’s so much less code. The maintenance cost of code is strongly related to its size. Clearly, Java’s excellent developer tools make a difference, but still, I think that this is another area where Ruby and Rails are teaching lessons the rest of the industry would do well to learn from.

Omissions · .NET and the Python frameworks, starting with Django, are notable by their absence here. Sorry; I just don’t have any first-hand knowledge on them. And .NET isn’t open-source, so why would you use it?

Irritants · I’ve already got people mad at me, because they think I said “PHP is faster than Java” (I didn’t) and because I said Rails is faster to build and more maintainable than PHP (I did, and I stand by it).

Obviously, there are edge cases; I’m sure you can find examples where Rails runs faster than the alternatives, or a Java app can be built fastest, or there are superb PHP dev tools for some type of app, or there’s a horribly-architected unmaintainable piece of Java framework crap.

What Matters? · The question “Which of Java, PHP, and Rails is best?” is just silly. The answer, as with so many engineering questions, is “it depends”. My personal opinion is that for most Web apps, scaling isn’t really a good basis for making a choice; if you have a decent application architecture, you can make any of these scale enough, and if you don’t, you can’t.

Importance of Web-framework issues

In recent years things like PHP and Rails have taught us that development speed is more important than we thought it was. On top of the obvious business value of delivering functions faster, there’s the Agile/XP view that you really don’t understand a feature till you’ve built it, so the faster you can build them the faster you understand them.

Developer tool quality is something you ignore at your peril; application development and maintenance is an endless grind, and you’re going to be a lot happier at work, long-term, living in a tool like NetBeans or Eclipse.

Maybe it’s just because I’m a grizzled 25-year veteran, but my feeling is that in the real world in the long term, maintainability is a really really big deal, the biggest of all.

Out there in the wild woolly “Web 2.0” world, maybe getting it built quick is all that matters, because after you’ve knocked ’em dead and been acquired, you can use the money from the Yahoo! buy-out to rebuild everything right the second time. In the enterprise though, I kind of suspect that smart developers and smart managers know that for real apps, the big development cost starts to happen after they’re delivered.

Whatever; you have to make your own choice based on your own application, business, and people constraints. That’s not controversial.

PS: Integration · This stuff was only about half my talk. The other half was about integration; your stack’s internal integration, about integrating with Identity technology, and about the general problem of heterogeneous framework integration across the network. That part was actually more interesting.

So In what language you are working on??

Real Java Interview Questions

JAVA Interview questions


What is JVM (Java Virtual Machine)?
What is JIT (Just-in-Time) Compilation?
What is Object Oriented Programming?
What's a Class?
What's an Object?
What's the relation between Classes and Objects?
What are different properties provided by Object-oriented systems?
How do you implement inheritance in Java?
How can we implement polymorphism in Java?
What's an interface and how will you go about implementing an
What is an Abstract class?
What are Abstract methods?
What's the difference between "Abstract" classes and "Interfaces"?
What's difference between Static and Non-Static fields of a class?
What are inner classes and what's the practical implementation of
inner classes?
What are packages?
What is a constructor in class?
Can constructors be parameterized?
Can you explain transient and volatile modifiers?
What is the use if "instanceof " keyword?
What are Native methods in Java?
Explain in depth Garbage collector?
How does the garbage collector determine that the object has to be
marked for deletion?
Can you explain "finalize()" method?
How can we force the garbage collector to run?
What's the main difference between "Switch" and "If " comparison?
What's the use of JAVAP tool?
What are applets?
In which package is the applet class located?
What are native interfaces in Java?
what are Class loader's?
what is Bootstrap, Extension and System Class loader?
Can you explain the flow between bootstrap, extension and system class
Can you explain how can you practically do dynamic loading?
How can you copy one array in to a different array?
Can you explain the core collection interfaces?
Can you explain in brief the collection classes which implement the
collection interfaces?
What's the difference between standard JAVA array and ArrayList class?
What's the use of "ensureCapacity" in ArrayList class?
How can we obtain an array from an ArrayList class?
What is "LinkedList" class for?
Can you explain HashSet class in collections?
what is LinkedHashSet class?
what is a TreeSet class?
what's the use of Comparator Interface?
How can we access elements of a collection?
What is Map and SortedMap Interface?
Have you used any collection algorithm?
Why do we use collections when we had traditional ways for collection?
Can you name the legacy classes and interface for collections?
What is Enumeration Interface?
what's the main difference between ArrayList / HashMap and Vector /
Are String object Immutable, Can you explain the concept?
what is a StringBuffer class and how does it differs from String
what is the difference between StringBuilder and StringBuffer class?
What is Pass by Value and Pass by reference? How does JAVA handle the
What are access modifiers?
what is Assertion?
Can you explain the fundamentals of deep and shallow Cloning?
How do we implement Shallow cloning?
How do we implement deep cloning?
What's the impact of private constructor?
What are the situations you will need a constructor to be private?
Can you explain final modifier?
What are static Initializers?
If we have multiple static initializer blocks how is the sequence
Define casting? What are the different types of Casting?
Can you explain Widening conversion and Narrowing conversion?
Can we assign parent object to child objects?
Define exceptions?
Can you explain in short how JAVA exception handling works?
Can you explain different exception types?
Can you explain checked and unchecked exceptions?
Can we create our own exception class?
What are chained exceptions?
What is serialization?
How do we implement serialization actually?
What's the use of Externalizable Interface?


What's difference between thread and process?
What is thread safety and synchronization?
What is semaphore?
What are monitors?
What's the importance of synchronized blocks?
How do we create threads?
what's the difference in using runnable and extends in threads?
Can you explain Thread.sleep?
How to stop a thread?
What is wait() and notify() ?
Can you explain how Scheduling and Priority works in threads?
Can you explain Yielding in threading?
what are daemon threads?


How does JAVA interact with databases?
Can we interact with non-relational sources using JDBC?
Can you explain in depth the different sections in JDBC?
Can you explain in short how you go about using JDBC API in code?
How do you handle SQL exceptions?
If there is more than one exception in SQLException" class how to go
about displaying it?
Explain Type1, Type2, Type3 and Type4 drivers in JDBC?
What are the advantages and disadvantages of using JDBC-ODBC bridge
What are the advantages and disadvantages of using Native-API/
Partially Java Driver?
What are the advantages and disadvantages of using Net-Protocol/ All-
Java driver?
What are the advantages and disadvantages of using Native-protocol/
All-Java driver?
Define meta-data?
What is DatabaseMetaData?
Can you explain "ConnectionFactory" class?
I want to display tables of a database how do I do it?
Define "ResultSetMetaData"?
What is the difference between "ResultSet" and "RowSet"?
Can "ResultSet" objects be serialized?
Can you explain "ResultSet", "RowSet", "CachedRowset", "JdbcRowset"
and "WebRowSet" relation ship?
what are the different types of resultset?
Explain the concept of "PreparedStatement "statement interface?
What's the difference between "Statement" and "PreparedStatement"?
How can we call stored procedure using JDBC?
Can you explain "CallableStatement" interface in detail?
How do you get a resultset object from stored procedure?
How can we do batch updates using "CallableStatement" Interface?
Define transactions?
what is ACID in transaction?
what are the four essential properties of a transaction?
Explain concurrency and locking?
What are different types of locks?
What are the different types of levels of resource on which locks can
be placed?
Define lock escalation?
What is Table level and Row level locking?
What are the problems that can occur if you do not implement locking
What are different transaction levels?
Twist: - what are different types of locks?
What is difference between optimistic and pessimistic locking?
What are deadlocks?
How can we set transaction level through JDBC API?
Can you explain transaction control in JDBC?
What are Savepoints in a transaction?
Servlets and JSP
What are Servlets?
What are advantages of servlets over CGI?
Can you explain Servlet life cycle?
What are the two important API's in for Servlets?
Can you explain in detail "javax.servlet" package?
What's the use of ServletContext?
How do we define an application level scope for servlet?
What's the difference between GenericServlet and HttpServlet?
Can you explain in detail javax.servlet.http package?
What's the architecture of a Servlet package?
Why is HTTP protocol called as a stateless protocol?
What are the different ways we can maintain state between requests?
What is URL rewriting?
What are cookies?
What are sessions in Servlets?
What's the difference between getSession(true) and getSession(false) ?
What's the difference between "doPost" and "doGet" methods?
Which are the different ways you can communicate between servlets?
What is functionality of "RequestDispatcher" object?
How do we share data using "getServletContext ()"?
Explain the concept of SSI?
What are filters in JAVA?
Can you explain in short how do you go about implementing filters
using Apache Tomcat?
Twist: - Explain step by step of how to implement filters?
what's the difference between Authentication and authorization?
Explain in brief the directory structure of a web application?
Can you explain JSP page life cycle?
What is EL?
how does EL search for an attribute?
What are the implicit EL objects in JSP?
How can we disable EL?
what is JSTL?
Can you explain in short what the different types of JSTL tags are?
How can we use beans in JSP?
What is tag for ?
What are JSP directives?
what are Page directives?
what are include directives?
Can you explain taglib directives?
How does JSP engines instantiate tag handler classes instances?
what's the difference between JavaBeans and taglib directives?
what are the different scopes an object can have in a JSP page?
what are different implicit objects of JSP?
what are different Authentication Options available in servlets?
Can you explain how do we practically implement security on a
How do we practically implement form based authentication?
How do we authenticate using JDBC?
Can you explain JDBCRealm?
Can you explain how do you configure JNDIRealm?
How did you implement caching in JSP?


What is EJB?
what are the different kind of EJB's?
you are designing architecture for a project how do you decide whether
you should use session, entity or message driven bean?
Can you explain "EJBHome" and "EJBObject" in EJB?
Can client directly create object of session or entity beans?
Can you explain the concept of local interfaces?
What are the limitations of using Local object?
Which application server have you used for EJB ?
Can you explain step by step practically developing and deploying EJB
what is Passivation and Activation in EJB?
Can beans who are involved in transaction have "Passivation" process?
How does the server decide which beans to passivate and activate?
In what format is the conversational data written to the disk?
Can you explain in brief Life cycle for Stateless and Stateful beans?


What's MVC pattern?
Define struts?
Can you explain the directory structure for a struts folder in brief ?
Can you give an overview of how a struts application flows?
Twist: - What are action and action form classes in Struts?

XML and WebServices

What is XML?
What is the version information in XML?
What is ROOT element in XML?
If XML does not have closing tag will it work?
Is XML case sensitive?
What is the difference between XML and HTML?
Is XML meant to replace HTML?
Can you explain why your project needed XML?
What is DTD (Document Type definition)?
What is well formed XML?
What is a valid XML?
What is CDATA section in XML?
What is CSS?
What is XSL?
What is element and attributes in XML?
What are the standard ways of parsing XML document?
In What scenarios will you use a DOM parser and SAX parser?
What is XSLT?
Define XPATH?
What is the concept of XPOINTER?
What is a Web Service ?
What is DISCO ?
What is SOAP ?
What is WSDL ?
Can you explain UDDI ?
Can you explain JAXP ?
What is a XML registry?
What is JAXR?
What is JAXM?
Can you explain how JAXM messaging model works?
Can you explain JAX-RPC?
Can you explain i18n and l10n?
Can you explain internationalization and localization?
What is Locale?
How do we display numbers, currency and Dates according to proper
Locale format?
what are resource bundles?
How do we load a resource bundle file?
How can we do inheritance in resource bundles?


What is Native Interface in JAVA?
Can you say in brief steps required to implement Native interfaces in
Can JNI be used for VB6, C# or VB.NET directly?
What are JNI functions and pointers?
How does the garbage collector know JNI objects are no more used?
Twist: - What are the different types of references JNI supports?
Twist: - How to do you delete global objects?
how does the native language C or C++ understand data types in JAVA?
Can you explain exception handling in JNI?
What are limitations for "JNIEnv" pointer in multi-threading
What are the advantages and disadvantages of using "JNI"?


What are design patterns ?
What is the difference between Factory and Abstract Factory Patterns?
What is MVC pattern?
Twist: - How can you implement MVC pattern in Servlets and JSP?
How can we implement singleton pattern in JAVA?
How do you implement prototype pattern in JAVA?
Twist: - How to implement cloning in JAVA? What is shallow copy and
deep copy ?
Can you give a practical implementation of FAÇADE patterns?
How can we implement observer pattern in JAVA?
What is three tier architecture?
What is Service Oriented architecture?
What is aspect oriented programming?

Project Management

What is project management?
Is spending in IT projects constant through out the project?
Who is a stakeholder ?
Can you explain project life cycle ?
Twist :- How many phases are there in software project ?
Are risk constant through out the project ?
Can you explain different software development life cycles ?
What is triple constraint triangle in project management ?
What is a project baselines ?
What is effort variance?
How is normally a project management plan document organized ?
How do you estimate a project?
What is CAR (Causal Analysis and Resolution)?
What is DAR (Decision Analysis and Resolution) ?
What is a fish bone diagram ?
Twist:- What is Ishikawa diagram ?
What is pareto principle ?
Twist :- What is 80/20 principle ?
How do you handle change request?
What is internal change request?
What is difference between SITP and UTP in testing ?
What is the software you have used for project management?
What are the metrics followed in project management?
Twist: - What metrics will you look at in order to see the project is
moving successfully?
You have people in your team who do not meet there deadlines or do not
perform what are the actions you will take ?
Twist :- Two of your resources have conflicts between them how would
you sort it out ?
What is black box testing and White box testing?
What's the difference between Unit testing, Assembly testing and
Regression testing?
What is V model in testing?
How do you start a project?
How did you do resource allocations?
How will you do code reviews ?
What is CMMI?
What are the five levels in CMMI?
What is continuous and staged representation?
Can you explain the process areas?
What is SIX sigma?
What is DMAIC and DMADV ?
What are the various roles in Six Sigma implementation?
What are function points?
Twist: - Define Elementary process in FPA?
What are the different types of elementary process in FPA?
What are the different elements in Functions points?
Can you explain in GSC and VAF in function points?
What are unadjusted function points and how is it calculated?
Can you explain steps in function points?
What is the FP per day in your current company?
Twist :- What is your company's productivity factor ?
Do you know Use Case points?
What is SMC approach of estimation?
How do you estimate maintenance project and change requests?


What is UML?
How many types of diagrams are there in UML ?
Twist :- Explain in short all types of diagrams in UML ?
What are advantages of using UML?
Twist: - What is Modeling and why UML ?
What is the sequence of UML diagrams in project?
Twist: - How did you implement UML in your project?
Just a small Twist: - Do I need all UML diagrams in a project?
Give a small brief explanation of all Elements in activity diagrams?
Explain Different elements of a collaboration diagram ?
Explain Component diagrams ?
Explain all parts of a deployment diagram?
Describe the various components in sequence diagrams?
What are the element in State Chart diagrams ?
Describe different elements in Static Chart diagrams ?
Explain the different elements of a Use Case ?
Twist: - What is the difference between Activity and sequence diagrams?
(I leave this to the readers)

I think you're finding the answers.... go here

Now Prepare Yourself for the interview.. and be a Java Geek

Friday, November 16, 2007

Group devises list of most essential security skills for Java programmers

Many analysts consider Web application vulnerabilities to be among the biggest security threats facing companies these days. A lot of attention has been paid to understanding risks such as input-validation flaws, cross-site scripting errors and other Java Web application security threats.

Receiving somewhat less attention, however, has been the question of what application software developers need to know to reduce the likelihood of such vulnerabilities in the software they write.

A group of security managers from over a dozen organizations, including Booz Allen Hamilton, Deloitte & Touche, Boeing and Ounce Labs, hope to address that shortcoming. They're set to publish a document listing what they consider to be the essential skills needed for secure Web application development.

The group was pulled together by the Bethesda, Md.-based SANS Institute, which provides a range of security training and certification programs. The goal was to create a document that can help Java developers understand how to address some of the more common security problems plaguing Web applications, said Alan Paller, director of research at SANS.

The document will be available for public comment and suggestions for the next few weeks, after which it will be released as a formal security blueprint for Java application developers sometime early next year.

Many of the items on the list of essential skills touch upon issues that are already well understood within the security community, according to Ryan Berg, chief security officer at Ounce Labs. The idea, he said, is to get developers to focus on many of the "common weaknesses that we are seeing inside Java and how they manifest themselves in the source code," the sort of security knowledge that any competent Java programmer should be expected to know going forward. "These are the top issues that we see arising, and it should be part of the base knowledge that your Java programmer should know about and be able to implement efficiently," Berg said.

According to the group, the following are among the essential skills that Java programmers need:

  • Input handling. To protect their code against cross-site scripting, SQL injection and similar attacks, Java programmers must be able to write programs that read input from interfaces and properly validate and process these inputs. They need to know when to validate input and not just what to validate. Programmers need to recognize the common sources of input to Java applications, such as HTTP requests, Applet sockets and back-end databases.
  • Authentication and session management. This is one area on which Java programmers especially need to focus, according to Berg. Java applications often require making security decisions based on the identity of a person. Therefore, Java programmers need to understand authentication processes, how to use encryption and certificate technologies to protect those various processes, and how to manage then through a session, the document states.
  • Access control. Java programmers need to understand how to make applications support the enforcement of access control rules. They need to support functions for restricting access to system resources and functions based on policies. They also require an understanding of Java's authentication and authorization services and how they can be used to implement access control.
  • Error and exception handling. This is another area that Java programmers typically have not paid too much attention to but should, according to Berg. Developers need to understand the principles behind logging security-related events such as user log-ins, log-offs and credential changes. They need to know how much information should be logged when an error or an exception is encountered.
  • Encryption services. Developers need to know when and how to use encryption to protect sensitive data. They should also be responsible for knowing which of their application's external links need to be supported via encryption.
In addition to familiarity with such areas, the SANS list notes other necessary security skills for Java programmers. Those include an understanding of how their own applications interface with other applications and what needs to be done to secure the interface. They should also have an understanding of the security implications of built-in data types and Java-specific memory management functions.


Incredible Comet Bigger than the Sun

A comet that has delighted backyard astronomers in recent weeks after an unexpected eruption has now grown larger than the sun.

The sun remains by far the most massive object in the solar system, with an extended influence of particles that reaches all the planets. But the comparatively tiny Comet Holmes has released so much gas and dust that its extended atmosphere, or coma, is larger than the diameter of the sun. The comparison is clear in a new image.

"It continues to expand and is now the largest single object in the solar system," according to astronomers at the University of Hawaii.

The coma's diameter on Nov. 9 was 869,900 miles (1.4 million kilometers), based on measurements by Rachel Stevenson, Jan Kleyna and Pedro Lacerda of the University of Hawaii Institute for Astronomy. They used observations from the Canada-France-Hawaii Telescope. The sun's diameter, stated differently by various sources and usually rounded to the nearest 100, is about 864,900 miles (1.392 million kilometers).

Separately, a new Hubble Space Telescope photo of the comet reveals an intriguing bow-tie structure around its nucleus.

The comet's coma—mostly microscopic particles—shines by reflecting sunlight.

See for yourself

Holmes is still visible to the naked eye as a fuzzy star anytime after dark, high in the northeast sky. You can find it by using this sky map. It is faintly visible from cities, and from dark country locations is truly remarkable.

"Right now, in a dark sky it appears as a very noticeable circular cloud," said Joe Rao,'s Skywatching Columnist. Rao advises looking for the comet this weekend, before the moon becomes more of a factor. The comet will likely diminish in brightness yet remain visible for the next two to three weeks, he said.

"Over the next few weeks and months, the coma and tail are expected to expand even more while the comet will fade as the dust disperses," Stevenson and her colleagues write.

On Monday, Nov. 19, the comet will create a unique skywatching event with its see-through coma, according to the Web site "The comet will glide by the star Mirfak [also called Alpha Persei] and appear to swallow it—a sight not to be missed."

A small telescope will reveal the fuzzy coma. Lacking a long tail characteristic of some great comets, however, Holmes is not the most dramatic object in the sky for casual observers.

Mystery outburst

Nobody knows why Holmes erupted, but it underwent a similar explosive brightening in 1892. The recent display, which began Oct. 24, brought the comet from visual obscurity to being one of the brighter objects in the night sky. It has since dimmed somewhat as the material races outward from the nucleus at roughly 1,100 mph (0.5 km/sec).

The Hawaiian astronomy team writes in a press statement: "This amazing eruption of the comet is produced by dust ejected from a tiny solid nucleus made of ice and rock, only 3.6 kilometers (roughly 2.2 miles) in diameter."

The new image from the Hawaiian observatory also shows a modest tail forming to one side, now just a fuzzy region to the lower-right. That's caused by the pressure of sunlight pushing on the gas and dust of the coma.

But the comet is so far away—149 million miles (240 million kilometers), or about 1.6 times the distance from Earth to the sun—that even Hubble can't resolve its nucleus.

The offset nature of the coma, seen in ground-based images, suggests "a large fragment broke off and subsequently disintegrated into tiny dust particles after moving away from the main nucleus," Hubble astronomers said in a statement today. The comet's distance, plus all the dust, prevent Hubble from seeing any fragments, however.


Processing, a language for visual output

It would seem that the computer science world is, in general, populated by firm believers in the idea that you can never have too many programming languages. I’ve covered all sorts of languages over the centuries I’ve been writing Gearhead and today I want to discuss a really cool language called Processing.

First I must comment that the only name that would have been worse for the language might have been “Language” or maybe “Program.” The authors sort of acknowledge this in the FAQ.

New! Watch this Network World Webcast - New Webcast: Policy Driven Personality Migration for the Enterprise

Anyway, to understand Processing you need to understand its predecessor, Design By Numbers (DBN). DBN was created by Professor John Maeda for a specific user community: Visual designers and artists. Maeda notes that “DBN is not a general purpose programming language like C or Java, but was designed to familiarize people with the basic concepts of computational media. Studying DBN is a first step to take – not a final step.”

Maeda cited the advantages of DBN as being free to use and multiplatform, easy to understand with a syntax that is designed for beginners, and immediately accessible on the Web.

As far as I can determine, with the release of Processing, the planned 2003 release of DBN Version 4 was abandoned and development stopped.

So, what is Processing? It is “an open source programming language and environment for people who want to program images, animation, and interactions … created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool.”

Processing runs on Windows, Mac OS X and Linux, and there are also projects to create a mobile version of the language as well as hardware developments that run close derivatives of the Processing language. The really cool hardware is based on an open source platform called Arduino that has a huge following and scores of subprojects. You can build your own Arduino boards or buy ready-to-run boards from a number of U.S. suppliers.

Underlying the Processing system is Java, so a prerequisite to running the integrated development environment (IDE) is ensuring Java is installed. On OS X Java is installed by default, but the Windows version of Processing includes versions both with and without a Java installer, depending on your circumstances.
Like DBN, Processing was designed primarily for the development of visual output. It consists of an IDE called the Sketchbook (also called the Processing Development Environment, or PDE), in which coding is done. You can enter code under multiple tabs to improve legibility, but there are complexities to this scheme that programmers need to be aware of. When the code is run the Display Window opens, showing the results.

A really great feature of Processing is its support for both 2D and 3D graphics and multiple rendering engines, which include Java2D (the default 2D engine), P2D and P3D (custom graphics engines for 2D and 3D rendering, respectively), and OpenGL (the best choice for 3D performance if you have a video card that supports OpenGL).

The beauty of Processing is that coding is simple and debugging pretty easy. There are libraries for sound functions, video capture and movie creation, serial port input/output, OpenGL functions, DXF and PDF file handling, XML functions and, yes, network services.

Finally, you can export Processing programs as Java applications, which makes Java development much easier. There are a lot of opportunities to use a language like Processing in the IT environment. Let me know what you think of it.


Disappearing Gmail messages baffle users

When Jeneane Sessum logged into her Gmail account on the afternoon of Oct. 27, she was greeted with a horrifying sight: an empty inbox.

A Gmail user since 2004, Sessum, a social media consultant and writer in Atlanta, had thousands of messages there, enough to use up almost 30% of her allotted storage space.

Since Gmail is her primary work and personal e-mail service, Sessum lost many important messages, including some she needed at that moment for a project.

Days earlier in Chicago, Jessica Squazzo, a writer and editor, accessed Gmail and stared at her computer screen in disbelief: All messages from 2007 had disappeared from her inbox.

Sessum and Squazzo are two of a small but steady stream of Gmail users who regularly report losing some, many, or all of their messages without a clue as to why. It seems that hardly a week goes by without at least several users reporting this problem on discussion boards, such as the official Gmail Help forum.

Asked to comment about multiple lost-message reports in 11 different threads created in September and October in the Gmail Help forum, a Google spokesman declined to address any of the specific situations, citing privacy reasons.

However, he did emphasize that, as far as Google is concerned, "most issues like this are a result of phishing attacks or compromised passwords -- or sometimes simply messages mistakenly deleted or marked as spam -- not a data corruption issue."

That explanation makes little sense to savvy and experienced Internet users like Sessum and Squazzo, who are aware of phishing scams and know better than to reply to suspicious messages, let alone include in them confidential, sensitive information, such as passwords. In addition, they say they are the only ones with access to their respective accounts.

Moreover, both Sessum and Squazzo, interviewed separately via e-mail, question why a malicious hacker would go through the trouble of trying to access someone's e-mail account in order to delete messages, instead of acting stealthily to harvest information they could exploit, such as credit card numbers.

"If someone had hacked into my account, why would they have just erased some of my e-mail and not all? The fact that precisely all my e-mail from 2007 -- and no earlier mail -- was wiped out leads me to still conclude that it must have been some technical error on Gmail's servers, whether they want to admit that or not," said Squazzo, who has used Gmail for personal communications since 2005.

In the case of Sessum, while the inbox was empty, she still had copies of messages she had sent in the "All Mail" file of her account, along with saved transcripts of instant messaging chats she had conducted using Google Talk.

For the sake of comparison, a review of discussion forums for users of Yahoo Mail and Windows Live Hotmail reveals far fewer reports of lost or disappearing inbox messages than for Gmail, even though those rival services have larger user bases.

Matt Cain, a Gartner vice president and lead e-mail analyst, hasn't investigated reports of lost messages in Gmail, but said the problem hasn't been observed as a common one in Yahoo Mail or Hotmail, both of which have traditionally enjoyed a high degree of data integrity in their message repositories.

"I can't validate [that this is a problem with Gmail] but if it's true, it's coming at an unfortunate time for Google, because the company is aggressively pushing into the enterprise e-mail space," Cain said, referring to the Gmail component of the Google Apps hosted collaboration and communication application suite, designed for organizations of all sizes, including large ones with its Premier edition.

A review of the Gmail Help forum reveals that reports of lost messages have become more common in the past year, with a higher volume of complaints occurring since July.

Another user who encountered the problem was Gary S. Moore of Fort Worth, Texas, who had used Gmail without problems for two years until one day last month, when he noticed all his archived messages had vanished from his account, including more than 100 photos.

In Greenwood, Mo., Monroe Johnson was also affected when a portion of his stored messages disappeared in October. Johnson, like Sessum and Squazzo, doesn't believe an error on his part or a compromised account might be to blame.

"I doubt it. I have been working with computers since 1997," Johnson said via e-mail. He's the only one who has access to his account, he said.

Like other interviewed users who contacted Google seeking help and technical support, Sessum only received a canned reply saying Google had determined that her problem wasn't due to a technical issue with Google systems and that she should change her Gmail password.

"I guess they are insinuating someone bothered to break into my Gmail account with the express purpose of deleting my incoming mail, while deciding to leave my chats and sent mail. Not likely," she said.

Sessum, who also uses the hosted Google Docs applications and other Google services, expected a more helpful answer from the company, considering the extent of her data loss.

"In many respects, I'm building my small business on the back of Google. And I believe that's what Google wants us to do. So it's imperative that they provide at least a little support when something goes wrong," said Sessum, who hosts her blog on Google's Blogger service.

Although consumer Webmail services such as Gmail are generally free, the user expectation is that the data stored in them will not be corrupted, Gartner's Cain said.

One of Gmail's innovations when it was introduced in April 2004 was the size of its inbox -- 1GB, huge by the standards at that time -- so that users wouldn't have to bother deleting messages if they didn't want to.

Google didn't deliver POP3 support for Gmail until November 2004, and didn't offer IMAP support until late last month. POP3 and IMAP are protocols that let users download e-mail messages from servers to desktop PC software.

There doesn't seem to be a pattern to the reports of lost Gmail messages, as the problem has hit users with a variety of PCs, operating systems and browsers, according to interviews and discussion forum messages.

For example, Sessum uses a Mac computer and the Firefox browser, and doesn't synchronize her Gmail account with a desktop e-mail software. Meanwhile, Johnson accesses Gmail from a Windows Vista PC and downloads the messages to his computer, although he keeps copies of them on the Google servers.

Sessum, echoing other users, is hoping Google will look deeper into this problem of disappearing e-mail messages. Its users deserve a better explanation, she said.

"Google's back-end support function is MIA. You can't find a number to call. You have to tap our personal network of friends to find a name and a way in through the back door, do a dance and rub a stone for good luck, and hope that someone will help," she said.

It's also in Google's best interest to beef up this support part of its business, because even users who don't pay Google for services or software contribute significantly to the company's success, she said.

"Google makes it easier for us to collaborate, work, and publish. We provide the content, the searches, the clicks, and the destinations for those clicks. It's a win-win. Until you lose something important -- like all your data," she said.


Photos: From the moon to the Earth in HD

The Japan Space Agency's (JAXA's) Kaguya spacecraft re-created one of the most memorable photos from space--an Earth-rise from lunar orbit. But this one was taken for the first time with a high-definition camera.

JAXA's spacecraft is currently orbiting the moon and its equipment is being tested in preparation for its real mission to map the moon with high-definition images later this month. Two satellites carried by Kaguya, including one that will eventually land on the moon, have already been launched into lunar orbit to help the lunar mapping project.

NHK, the Japan Broadcasting Corporation, developed HDTV for use in space. Click here to see a video of the Earth-rise and Earth-set from the JAXA project site.


On Christmas Eve 1968, Apollo 8 astronauts Frank Borman and Jim Lovell awed the world when they transmitted the first images of Earth rising over the moon while the two read passages from the Bible.

Apollo 8

The high-definition shadows on the moon make these Earth-set photos almost look like cartoons. Technically, there is no such thing as an Earth-rise or Earth-set from the moon. Since the moon's rotation matches the Earth's rotation of the sun, the Earth will always appear to be in the same spot if seen by an astronaut standing on the moon. The Earth-rise or Earth-set can only be seen by a moving object--in this case a spacecraft orbiting the moon.


Here is a series of images showing the Earth setting.

The Earth is setting

Below, center of this image shows "Repsold," a crater that is about 66 miles.

Oceanus Procellarum

The dark area on the right is the western side of the "Oceanus Procellarum" while the lighter area is called the "Highlands."

Oceanus Procellarum

The Kaguya spacecraft is not the newest piece of hardware at the moon. China's Chang'e 1 spacecraft was launched on October 24 for its mission to study the lunar environment and pave the way for future Chang'e missions.

In addition, Russia and India on Monday signed an agreement to launch an unmanned spacecraft into lunar orbit.

Chang'e 1

This image of the moon's surface was taken from Apollo 8 in 1968.

Apollo 8 image

The center of this image shows "Repsold," a crater that is about 66 miles wide. The channel that crosses this crater is called the "Repsold Valley."

Repsold Valley

This is a prelaunch photo of the HD camera that's being used by the Kaguya spacecraft.

HD camera

You Like this pics or not??? How you feel looking at this pics?? Please give your valuable comments on this.

Is Microsoft's SOA vision blinkered?

Microsoft risks alienating potential customers of its service-oriented architecture (SOA) solutions by using closed standards and proprietary interfaces, and failing to provide clear product roadmaps, analysts have warned.

Speaking at Microsoft’s annual SOA & Business Process Conference at the end of October, chief architect Donald Ferguson outlined the company’s “Oslo” strategy, which is designed to deliver a unified platform to support the integration of services and application modelling.

Microsoft also announced plans to add SOA functionality to its forthcoming BizTalk Server 6 and .Net Framework 4 last month, while Visual Studio .Net 10 will gain application lifecycle management features. Microsoft said it is working to align metadata repositories across all its middleware products.

The big advantage of using standards-based SOA as a foundation for web-based application and service development is that it creates components that can be reused in different environments and by different vendors. It also allows companies to share web-based services without the requirement for special software translators or integration modules.

One analyst has argued that Microsoft’s SOA approach will offer none of these benefits, and that the company is undermining SOA’s perceived benefits by using closed standards and proprietary interfaces in its products.

“[Microsoft] is not playing ball with anybody else playing the SOA game,” said Ron Schmeltzer, a senior analyst with ZapThink. “The core Microsoft customer base will be excited, as it’s a strong step forward for them, but enterprise architects with a heterogeneous architecture will wait until it’s based on open standards.”

Dwight Davis, a vice president with research company Ovum, pointed out that even according to Microsoft’s own schedule, it will still take another couple of years at least to deliver on Oslo’s promise.

“Oslo represents a step forward in clarifying Microsoft’s plans for service enablement and process-led, model-driven development, but remains very much an aspirational roadmap at this point,” wrote Davis in a research note. “Furthermore, Microsoft risks confusing customers and partners by failing to draw clear lines between its current Oslo vision and the services and model-driven initiatives that have preceded it, including the Dynamic Systems Initiative and Dynamic IT.”

As well as dealing with proprietary standards and confusing vendor roadmaps, IT managers also have to contend with an acute lack of SOA skills among IT professionals. More than half of the companies interviewed for an IBM survey earlier this year said that they had only 25 per cent or less of the skills required to build a functioning SOA.

Respondents said they lacked employees with the ability to bridge the gap between IT and business, and had insufficient experience of strategic mapping and modelling, SOA security and governance, and integration. Eighty per cent said they planned to increase their internal SOA skills within the next 12 months, however, with more than 60 per cent focused on retraining existing staff.


Vista's biggest problem remains Windows XP, survey says

Microsoft Corp.'s biggest worry over Windows Vista shouldn't be rival operating systems from Apple Inc. or Red Hat Inc., but remains competition from its own Windows XP, an analyst said today.

"The big story isn't that 32% of the companies we surveyed said that they would start Vista deployments by the end of next year," said Benjamin Gray, an analyst at Forrester Research Inc. "It's that companies have been hugely successful in standardizing on Windows XP."

According to a survey of nearly 600 U.S. and European companies that have more than 1,000 employees, 84% of all their PCs now run Windows XP, up from 67% the year before. While XP may have peaked, Gray warned not to bet against the 6-year-old operating system. "There are plenty of companies looking forward to XP SP3," he said. That next hot-fix and patch rollup is to ship sometime in the first quarter of 2008, Microsoft has said, and it will reportedly be XP's last service pack.

"Vista's biggest competition isn't Apple or Novell or Red Hat; it's Microsoft itself, it's XP," Gray said. So enamored of XP are businesses that Microsoft may feel obligated to extend the operating system's mainstream support past its current April 2009 expiration date. "I wouldn't be surprised," Gray said, although it might require some additional pressure on the company by its largest customers.

Still, XP will eventually get the boot in favor of Vista, Gray said. "Vista isn't a matter of if, but of when and how," he noted.

Nearly a third of the polled businesses -- 32% to be exact -- said they would begin deploying Vista by the end of 2008, while another 17% said they would start in 2009 or 2010. But more than half of all companies remain skittish about Vista, according to Forrester's data. A year after Microsoft released Vista to duplicators, 38% of companies claimed they had no plans at this stage to deploy the operating system. Another 14% said they just didn't know.

Gray also echoed other analysts who last week said Vista plans had been significantly scaled back by most companies. "That's absolutely the case. In May 2006, 40% of the companies we surveyed said they planned on deploying Vista within the first year of its public life," Gray said. "Forty percent were planning on deploying, but by the end of 2007, only 7% will have started. Enterprises are absolutely pulling back from their very, very aggressive deployment plans."

He attributed the lowered expectations to a lack of detailed information about Vista in 2006; too-high prices for PCs with 2GB of memory, which is essentially the minimum needed for Vista, according to company managers; and a larger-than-expected number of incompatible applications.

"Application incompatibility is a big, big headache," Gray said, citing reports from companies preparing for a migration to Vista. Those firms said applications incompatible with Vista made up between 10% and 40% of their software portfolios. "That's causing a lot of XP shops to take a wait-and-see approach to Vista."

But Gray said he was convinced Microsoft will win out in the end, if only because it has virtually no competitor worth the name in the enterprise market. "Linux and Mac have 1% or 2%, and in some cases, such as Europe and the largest corporations, they don't even register," he said. "Microsoft owns this space, and I don't see that changing."

Process images in Java with JAI

The Java Advanced Imaging (JAI) API provides a professional approach to the imaging in Java. It offers many advantages to the developer through high-level programming model. The model allows you to create your own image manipulation routines without the additional cost or licensing restrictions associated with commercial image processing software.

You can download JAI directly from Sun Microsystems for Windows, Solaris, and Linux platforms. Apple provides a version of JAI on its Web site for Mac OS X 10.3; Mac OS X 10.4 ships with the API preinstalled.

Platform-specific implementations can either use the pure Java implementation or provide an implementation that takes advantage of native technology on the platform to offer better performance.

Data representation

Images in JAI may be multidimensional (i.e., several values associated to a single pixel) and may have pixels with integer or floating point values. Pixels may be packed in different ways or unpacked in the image data array. Also, different color models can be used.

In order to be able to represent a variety of image data, you must deal with an assortment of classes. Before I present examples of the classes in action, here are descriptions of the basic classes for image data representation.

  • PlanarImage: This is the basic class for image representation in JAI; it allows the representation of images with more flexibility than the Java class BufferedImage. (BufferedImage and PlanarImage use several different classes for flexible image data representation.) Image pixels are stored in an instance of Raster object, which contains a concrete subclass of DataBuffer filled accordingly to the rules described by one of the subclasses of SampleModel. A PlanarImage is read-only (i.e., it may be created), and pixels values may be read in several different ways, but there are no methods that allow the modification of pixels values.
  • TiledImage: This subclass of PlanarImage can be used for reading and writing image data.
  • RenderedOp: This subclass of PlanarImage represents a node in a rendered imaging chain. A rendered imaging chain is a powerful and interesting concept in JAI that allows the processing of an image to be specified as a series of steps (operators and parameters) that are applied to one or more image.

Another interesting concept in JAI is tiled images. Tiles can be considered subsets of the images that may be processed independently. Large images can be processed in JAI with reasonable performance (even through rendered imaging chains), since there is no need to load the whole image data in memory at once. If the image is tiled, all its tiles must have the same width and height.

Figure A shows a simple tiled image, where the origin of the tiles coincides with the origin of the image, but the tiles are extended past the image edges (as is often the case). When a tile extends past the image edges, its contents are undefined.
Figure A

Figure A

Image creation

In order to create an image in the memory, follow these steps:

  1. Create the image data in an array in memory. This array must be a unidimensional array (for simplicity, you can create a multidimensional array and flatten it later).
  2. Create an instance of a concrete subclass of DataBuffer using one of its constructors and the image data array.
  3. Create an instance of SampleModel with the same data type of the DataBuffer and desired dimensions. A factory method of the class RasterFactory may be used for this.
  4. Create an instance of ColorModel compatible with the sample model being used. The static method PlanarImage.createColorModel() may be used for this, using the sample model as an argument.
  5. Create an instance of WritableRaster using the sample model and the image data array. The method RasterFactory.createWritableRaster() can be used for this.
  6. Create a writable image (i.e., an instance of TiledImage) using the sample model, color model, and dimensions.
  7. Associate the instance of Raster with the image using the method setData() of the class TiledImage.
  8. Do something with the instance of TiledImage, such as save it to disk or display or process it.

Below is the Java code listing that creates a floating-point one-banded (grayscale) image.

package test.jai;
import java.awt.Point;
import java.awt.image.*;
public class CreateGrayImage
public static void main(String[] args)
int width = 1024; int height = 1024; // Dimensions of the image.
float[] imageData = new float[width*height]; // Image data array.
int count = 0; // Auxiliary counter.
for(int w=0;w for(int h=0;h imageData[count++] = (float)(Math.sqrt(w+h));
// Create a DataBuffer from the values on the image array. dbuffer =
// Create a float data sample model.
SampleModel sampleModel =
// Create a compatible ColorModel.
ColorModel colorModel = PlanarImage.createColorModel(sampleModel);
// Create a WritableRaster.
Raster raster = RasterFactory.createWritableRaster(sampleModel,dbuffer,
new Point(0,0));
// Create a TiledImage using the float SampleModel.
TiledImage tiledImage = new TiledImage(0,0,width,height,0,0,
// Set the data of the tiled image to be the raster.
// Save the image on a file.

If you want to get information about an existing image, you can use several getXXX() methods from the classes PlanarImage, SampleModel, and ColorModel.

Image operations

The JAI API contains several image operators that you can apply with minimum programming. The operators follow the concept of a rendered imaging chain, where the steps for the image processing are defined but will be carried out only when needed (deferred execution).

Those operations are specified in a simple way: First an instance of ParameterBlock is created (which is basically a vector of data that will be used for the operation), and then the static method create() of the class JAI is executed. This method gets as an argument a name for the operation and the instance of ParameterBlock and returns an instance of RenderedOp, which can be manipulated as a PlanarImage. Alternatively, you can add the original image in the instance of ParameterBlock as a parameter to its addSource() method. Other parameters are added to the ParameterBlock with its add() method. Other forms of the method do not require a ParameterBlock and accept other arguments.

One example of a JAI operator is the filestore operator, which is used in the code listing above to store an instance of PlanarImage (or of a subclass of it) in a file. The call for the JAI.create() method used the following as arguments: the name of the operator, the instance of PlanarImage, a file name, and a string containing the desired image file name (TIFF, JPEG,”PNG, etc.).

Other possible operators include: scale, rotate, and convolve. The convolve operator performs convolution of an image with a kernel, which can be created as an instance of the class KernelJAI. This instance is created with an array that represents the kernel values; then, the instance of KernelJAI may be used even without a ParameterBlock.

The code below shows how you can create a 15 x 15 smoothing kernel and apply it to an input image, resulting in an output image. The kernel values must be normalized (i.e., they must add up to one).

int kernelSize = 15;
float[] kernelMatrix = new float[kernelSize*kernelSize];
for(int k=0;kkernelMatrix[k] = 1.0f/(kernelSize*kernelSize);
KernelJAI kernel = new KernelJAI(kernelSize,kernelSize,kernelMatrix);
PlanarImage output = JAI.create("convolve", input, kernel);


The JAI API offers application developers various advantages in comparison to other imaging solutions. These advantages include the following:

  • It’s a cross-platform imaging platform with the support of distributed calculations.
  • It has an object-oriented API that is extensible and flexible.
  • It supports Java’s Remote Method Invocation and the Internet Imaging Protocol for its network-based imaging; this allows for scalable solutions from PDAs, laptops, desktops, and high-end servers.

Additional resources about the JAI API

Software firms to hire locally in tier 2 AND 3 cities; exports to rise by 25-30% by 2010

Tier 2 and tier 3 cities are in vogue. All the IT majors have been eyeing these cities and have been establishing their centers in cities such as Bhubaneshwar, Madurai, Dehradun, Ludhiana and so on. The good news is that they prefer to hire locally. Here we present what this means in terms of economic development and employment opportunities

Gone are the days when people from the hinterland migrated to the metros to pursue their careers. Initially, the influx happened into either Mumbai (the country’s financial hub) or Delhi (the national capital as well the political nerve center); later, with IT coming into the mainstream, the migration route shifted towards Bangalore and Hyderabad. This emergence of tier-2 cities, both as centers of choice for software majors as well as local markets for all major vendors, in a way symbolizes the democratization of Indian IT.

Unlike earlier, viable career options are available now for small city residents , thanks to the software majors who are moving to tier-2 and 3 destinations and hiring mostly locals. For example, in Bhubaneswar, Infosys alone has 3,000 employees; Satyam 1,000 while TCS has crossed 300 in a few months.

Tech vendors too are acknowledging the growing clout of the tier-2 and 3 cities. In 2006-07 Microsoft penetrated 21 new cities; Sun Microsystems 17; and Oracle 23 smaller locations. IBM and SAP too went upcountry into 20+ newer towns and cities. Cisco and Acer got into around 15 new locations. Every vendor"s roster has cities like Madurai, Dehra Dun, Nagpur, Bhubaneswar, Mangalore and Ludhiana .

The following numbers corroborate the successes of these upcountry forays. As per the MAIT-IMRB mid-year review of the IT industry’s performance in 2005-06, rest of India drove the market for PCs with 55% market share and a year-on-year growth of 55%. Top four metros grew by 16% compared to the previous year and 24% in the following four metros.

Together, class B and C cities accounted for 70% of the PC sales, while the sale of notebooks in the business segment in smaller towns grew by a whopping 192%, accounting for 37% of the market, up from 27% in H1/2004-05. Sales of servers too grew 110% in class C cities and 87% in class B cities.

Micro View

To acknowledge the growing clout of these small towns, Dataquest undertook an endeavor to explore what makes the IT index tick in these tier-2 and 3 cities. Twenty-five cities across India were selected keeping in mind a fair representation across the country. Mumbai, Delhi (including NCR), Bangalore, Chennai, Hyderabad, Kolkata, Ahmedabad and Pune were excluded owing to their established IT prowess.

Going by the first big influencer of a city’s IT index , Software Exports , the presence of the Big Three or Four (including Satyam in some cases) determines a city’s worth. The presence of at least two raises the prestige of a city ; three or all four in the city clearly puts it notch above the rest and on par with the other software hubs. Indeed, cities like Bhubaneswar, Kochi, Visakhapatnam, Madurai or Mysore score heavily on this front.

Data from Nasscom shows that software exports from tier-2 and 3 cities have grown dramatically from a mere 5% a couple years ago to 15-18% now. It’s expected to go up to 25-30% by 2010. What’s more, these new hotspots are expected to employ 30% of the projected strength of 850,000 IT professionals and 1.4 mn ITeS professionals by 2010.

So in future, more and more people will find their living in their own home towns and cities. As a result of such changes, the economic scene of those towns and cities will change for ever and these changes will be positive for the people living in them.

To read the detailed story, click here

Satyam brings attrition rate down from 19% to 15%

Satyam is one of India’s leading software services firm and competes with the troika of TCS, Infosys, Wipro on several global projects. It has aggressive plans to expand its market reach and intends to hire over 15,000 and mostly freshers before the year-end.

The 45,000 plus strong Satyam is a global IT services and consulting company, offering customized IT solutions for companies. Satyam has its presence in India, UK, USA, UAE, Hungary, Canada, Malaysia, Singapore, Japan, China, and Australia. Its alliance with 90 technology companies such as Adobe, SAP, SAS and others helps it to deliver end-to-end solution for any type of business establishment.

Satyam offers its solutions for companies in different industries. The services it offers can be divided into Software Development Services, Engineering Services, Systems Integration, ERP Solutions, Customer Relationship Management, Supply Chain Management, Product Development, Electronic Commerce, Consulting, IT Outsourcing etc. Its subsidiaries, Satyam Infoway and Nipuna, offer services like Internet Access & Hosting services, Network & Network-enabled services, and BPO services.

Satyam uses RightSourcingTM, a delivery model for delivery of its services and solutions. Satyam has developed two models, one each for ensuring quality and the other for business operation. The first model is called as eSCMSM (eSourcing Capability Model) which is for IT enabled Services (ITES). It has been developed along with Carnegie Mellon University and Accenture. The other model known as Business Continuity Model (BCM) is used for running the mission critical operations of any business.


Satyam serves more than 600 companies. Among the clients there are more than 173 Fortune 500 corporations. Clients of Satyam come from different verticals like BFSI, Retail, Telecom, Automotive, Healthcare, Manufacturing and others.

Type of skills sought

Domain:Automotive, Banking & Finance Services, Retail, Government, Insurance, Energy & Utility, Manufacturing, Process Industry, Healthcare, Real Estate & Construction, Telecom, Travel & Transportation

Technology:JAVA/J2EE & Struts, SAP, Java J2EE, Net Technologies. Client Server, Mainframes, VB .NET, ASP .NET, Oracle 9i+ reporting tools, XML, XSL, C#, SQL .NET, VB6, UNIX, C/C++, Oracle, Power Builder, Shell Scripting, PRO C, CGI, Crystal Reports

Techno-Functional:Leads, Developers, Architects, Lead Designers, Designers


Presently it has more than 45,000 employees working in these development centers. Satyam plans to hire over 15,000 people by the end of this fiscal (March 2008). Most of these people will be freshers from various colleges.


30 Tips to Conflict resolution at work and home

When do conflicts arise? It mostly arises following a difference of opinion--when two people have two different ways of looking at issues. There is a basic lack of communication between them. Lack of essential life skills add to their respective misery. Prevention is better than cure in conflict management. Conflict is a negative drain on energy, and productivity is ultimately compromised.

Let me give you an example: Anju and Shubham were colleagues, though in different groups of the same organization. Both were equally qualified, good at their work, but had an unspoken ‘competition’ in their workplace. There were occasions when Anju had felt bitter about Shubham’s cut-throat approach--so much so, that Anju went on high alert the moment she got a call from Shubham in order to discuss an important issue.

Nevertheless, both met and Shubham requested her help to make a presentation, similar to the one she had presented and which was highly appreciated. However, Anju, aware of the previous experience with Shubham and the general lack of goodwill between the two, put off Shubham on some pretext or the other whenever he enquired.

One morning, she got a phone call from her boss--‘Shubham’s presentation is on Saturday. I HAD SENT HIM TO YOU FOR HELP. You haven’t helped him yet.’
Anju was shocked! Shubham had been clever enough to withhold important information from her--that the boss was in the picture!

Besides, she was so engrossed and preoccupied with her own world of conflict with Shubham, she did not notice anything else. And, thanks to the conflict, she was about to get a firing from her boss!

What could Anju have done to avoid an unforeseen consequence as this????

Some pointers to avoiding conflict and management of conflict are as follows:-

1. Choose your battles wisely
2. Do not mix up issues--every issue is separate and a lot of your own well-being can be hinging on it
3. Confrontation should be avoided as far as possible
4. COLLABORATION should be encouraged in self and others
5. Empathy for the other, irrespective of past experiences should be cultivated
6. Communication skills should be developed
7. In order to resolve conflict that already exists, first resolve the conflict within your own self
8. Check if what you are fighting for is a want or a need
9. Life is a give and take
10. There are no permanent enemies or permanent friends
11. When in conflict, think with a cool head
12. Decipher what you are actually fighting for
13. Believe in yourself
14. Do not encourage childish behaviour in self
15. Be smart. Going a little distance today for someone may in fact work in your favour tomorrow
16. Keep yourself informed about going-ons around you (this does not mean gossip!)
17. In collaborative conflict resolution, focus only on the issue on hand
18. Do not make personal attacks
19. Working together with different kinds of people means handling them effectively, not ‘conquering’ them
20. For total personal effectiveness, be reasonable with the opposite person
21. Do not give room for him/her to pin you down. If you have a clear slate in dealing, in the end you will be the winner
22. Assertiveness is also valuable. When confronting, be assertive and firm (not rude). Be calm, in control of your own emotions and speak with respect and decorum

Anju and Shubham resolved their conflict by first determining what each wanted from their work graphs. They discovered that pulling the other down was neither possible nor their real goal.

Hence, collaborative effort was chosen wherein past experiences were forgotten and a new start was made in their professional relationship, as they had no areas that really clashed. They acknowledged that they had to grow individually, and not undercut each other!

When it comes to home and family, one has to be a little more careful as we have a lifelong association with relatives and we cannot wish them away.

Here, one has to be clear about maximum gain and minimum loss. Working for WIN-WIN situations is highly recommended. Gaining a point today may in fact sour things to a larger extent later.

Satish and Mita had been married ten years. His younger brother Rajesh married Padma two years back. From day one, there seemed to be a rivalry between Mita and Padma, starting with their looks, to their careers, prowess in the kitchen, to their relationships with the in-law.

Having got caught up in endless competitive tussles of ‘winning’ they would invariably make themselves and the whole family miserable.

A counsellor helped them understand that each is unique--each with her strengths and weaknesses. Working to create harmony would entail acknowledging the strengths of the other and working towards a win-win situation each time there seemed to be a pending tussle.

A black butterfly looks pretty on a white wall…
A white butterfly looks beautiful on a dark coloured wall…!

Here is how conflict can be avoided:-

23. Respect people’s individuality
24. Be empathetic to their feelings
25. Treat others the way you would like to be treated
26. Learn anger management
27. Develop a sense of humour
28. Learn to laugh at yourself at times
29. Everyone makes mistakes--no one has a boon of being infallible
30. Be clear about what you want from life--this includes your personal and professional areas

So do you have a conflict???

Thursday, November 15, 2007

Zonbu: A simple computer for everyone

Recently, I was sent a box with a Zonbox inside. What is a Zonbox you ask? Simple: A Zonbox is a tiny form-factor PC (made by Zonbu) with no moving parts, no fans, no hard drive, and an open source operating system but with most of the bells and whistles people have come to expect from a computer…and more.

The company, Zonbu, started with the idea of making a “green” PC. What they created was a device that uses a fraction of the energy that regular PCs use (to the tune of nearly $10.00 per month savings) and is totally carbon-neutral.

As I said, the device is fanless so it’s absolutely silent. Getting rid of heat is taken care of by the heat-sink-style case enclosing all of the components. The case does get warm but not so warm that you could burn yourself.

But how does it perform?

I’ve put the little machine through some testing (no benchmarking because at this point in the game benchmarking is reserved for high-end server needs and gaming), but only taking this open source-based device through the paces of the average user. What can it do and what can’t it do?

Surf the Web: Check. The Firefox browser was set up out of the box with all necessary plug ins (why can’t distributions do this????).

Check email: Check. Evolution does the trick. The only thing necessary was to plug in the account details.

Office: Check, check, and check. Word processing, spreadsheets, and presentations all with Open Office, PDF with Scribus.

Graphics: Check and check. The Gimp and Mplayer do an outstanding job. Mplayer, unlike from most distributions, worked out of the box.

Audio: Banshee connects to your iPod without hassle. Biggest problem: no MP3 support. Problem is, I couldn’t install the needed plugin for MP3 support. Why? Because your apt-get is NOT FOUND!!!! Okay, so that’s a big limitation.

Games: There are some, but nothing astounding. We’re talking about your usual minesweeper flavor of games.

Networking: Networking came up without so much as doing a single configuration. I was even able to simply connect to my Samba network by entering the username/password and voila! More space to save files.

Breaking it down

This little gem of a PC is one of those items most would overlook. But the thing is, you shouldn’t. For the average user who only wants to surf the Web, check e-mail, and do the occasional document, this thing is perfect! The setup couldn’t be any easier. You plug it in, turn it on, and log on to your machine. That’s it. As soon as it’s done booting the user has nothing more to do than to enjoy the experience. And it’s tiny (about 4″X6″X2″)…and fairly powerful. Here are the specs:

  • Intel-compatible ultra-low power CPU
  • 512 MB RAM + 4GB flash-based local storage
  • Graphics up to 2048 x 1536 (16 million colors, 75 Hz). Hardware graphics and MPEG2 acceleration
  • PC-compatible ports for keyboard and mouse
  • 6 USB ports to plug-and-play all standard USB accessories
  • Broadband ready: 10/100 Mbps Ethernet built-in
  • Wifi
  • CF card reader
  • 2 PS/2 ports

The price is fairly reasonable as well. What Zonbu has done is set up a system where you can do one of two things: Buy the machine outright for $249.00 for the device and then you can purchase one of four plans for your device:

  • Free: Disaster proof storage. I believe this will back up your operating system only.
  • $12.95 per month: 25 Gigs of storage, free automatic software updates, and a hardware rebate of $150.00.
  • $14.95 per month: 50 Gigs of storage, free automatic software updates, a hardware rebate of $150.00, and Remote file access (from any machine, anywhere).
  • $19.95 per month: 100 Gigs of storage, free automatic software updates, a hardware rebate of $150.00, and Remote file access (from any machine, anywhere), and overnight free hardware replacement limited warranty.

At first you may think this is a scam. But it’s not. I’ve tried the device and the plans. I’ve loaded files and downloaded files from various locations. The device works flawlessly (with the exception of MP3 support) and the remote access is superb. The OS is based on Ubuntu so it enjoys that same reliability.

I know there are plenty of naysayers out there who are probably thinking, “Why not just pay around $300.00 and get a standard desktop machine?” Simple: If you’re really looking to cut costs you can think outside the standard PC-Box and add in the energy savings you will enjoy with the Zonbu, as well as the added safety of suffering no-virus-no-malware-no-trojan-no-worms. You won’t be kicking yourself saying, “Dude, why’d I get a Dell?”

Of course it’s not for everyone. But who is it for:

  • Students
  • People on the go that need remote access to the their files but don’t want to lug a laptop around with them.
  • Your grandparents.
  • Your mom and dad.
  • Temporary employees.
  • Anyone on a low budget who needs a computer for the basics.

Because of its size, simplicity, and reliability this little machine could serve anyone who needed to handle basic computing tasks. It’s not perfect, but it’s as close to the pull it out, plug it in, and use it that PC manufacturers have been questing for all these years.

Where you most likely deploy a Zonbox?

How do I… Create an animated image in Flash for my Web page?

Because Flash has evolved into a ubiquitous multifaceted tool for deploying all kinds of content to the Web, it is easy to overlook its streamlined and easy-to-use Timeline animation features. Flash’s Timeline allows you to create smooth and smart animations that can be as simple or as complex as you would like them to be.

In this document, I’m going to show you how simple it is to create the illusion of depth in a Flash animation using nothing more than the Timeline palette and the Oval tool — without a hint of ActionScript code. Mind you, most professional Flash animators do rely on (rather complex) ActionScript for their animation effects, but we’ll work up to that later.

This blog post is also available in PDF form as a TechRepublic download, which includes a sample Flash file created using the technique described.

If you don’t own a copy of Flash CS3, you can download a fully functioning 30-day trial.

Creating a file

Let’s start by opening Flash CS3 and creating a new file. From the File menu, select the New option. In the dialog box that appears, select Type: Flash File ActionScript 3.0. Even though we won’t be using ActionScript at all in this example, let’s keep the file compatible with the most recent iteration.

Your layout should look like Figure A.

Figure A

The default layout of the Flash CS3 workspace

Lots of animation tutorials get you started by having you animate a bouncing ball, but we’ll go a little farther than that. We’re going to animate a moon coming out from behind a planet, revolving around to the front, and then disappearing behind the planet — while increasing and decreasing in size as it comes toward and moves away from the camera on its orbit.

The orbiting idea came from a TechRepublic member who is trying to perform the same function using JavaScript. Can you describe how to accomplish this animation using JavaScript? Submit your answer using our new Blog Submission Tool.

Start by saving your file. It’s always a good idea to save your file as soon as you create it, because as you work and save every few minutes, a fast hit on [Ctrl]+[S] will be a habit that you’ll form quickly.

Let’s start by changing the color of the stage to black so that our planet and moon will be living in outer space instead of on a boring whiteboard.

Go to the bottom of the screen and in the Properties palette, click the Background color box and choose a black swatch. While you’re in the Properties palette, click in the field labeled Frame Rate and change the number from 12 to 24. Since most film animation displays 24 frames per second, this setting will look much more pleasing to the viewer. Refer to Figure B to see how these changes should appear.

Figure B

Making the background of the Flash movie black and changing the Frame Rate to 24 frames per second (FPS)

Next, go to the Layers palette at the top of the screen. It’s tied directly to the Timeline window, so as you add layers to your file, you add layers to the working Timeline. Double-click the first layer and rename it “Planet.” Click the Insert Layer button again and rename the new layer you create “Moon.” Finally, click the Insert Layer button one more time and name the third layer “Mask.” Your Layers palette should resemble Figure C.

Figure C

Creating the layers for the animation

Now let’s get drawing.

Start by selecting the layer named Planet in the Layers palette to ensure that the planet you’re about to draw is on the correct layer. Then, select the Oval tool from the Toolbox on the far left, and for the Fill color, choose a pleasant blue. Also, make sure that no Stroke option is selected; otherwise, when you draw the planet on the stage, it will have a line around it. Refer to Figure D if you are unfamiliar with the Toolbox.

Figure D

Selecting the Oval tool with a blue fill and no stroke in the Toolbox

Go to the Black stage and while holding down the [Shift] key (to constrain our Oval tool into drawing a circle), click and drag to draw a circle on the stage that will represent our planet. Don’t draw the planet too large, or there will not be enough room to animate the moon in orbit.

Next, lock the Planet and Mask layers and select the Moon layer in the Layers palette.

This step is important!

The Timeline can animate only one object on a layer, and it will be much easier for you to create your animations if you keep all of your stage objects on separate layers. Figure E shows you how to lock a layer.

Figure E

Locking the Planet and Mask layers and selecting the Moon layer

Now, go back to the Toolbox and select the Oval tool again. For the fill color, choose an orange-yellow hue. Then, go back to the stage and draw a smaller circle that will represent the moon. Your stage should look like Figure F.

Figure F

The stage with the planet and moon in place

The planet and moon are on the stage, so it’s time to animate the moon. Flash can put an object in motion only if it exists as a Symbol. So before we can put the moon in orbit, we have to turn it into a Symbol.

Click on the moon to select it, then right-click on it to bring up a contextual menu. From that menu, choose Convert To Symbol. A dialog box will appear, as shown in Figure G. Give the Symbol a name of (you guessed it — Moon) and select the Movie Clip option. Click OK to return to the stage, where you’ll notice that the moon has a blue bounding box around it.

Figure G

Converting the Moon object to a Symbol

Rather than painstakingly animating the moon in orbit by hand, you’re going to rely on Flash’s Motion Guides and keyframes to do all of the heavy lifting.

A Motion Guide is exactly what it sounds like: a line that will guide a symbol about the stage. Keyframes are specific frames in the Timeline in which you can change the position or properties of a symbol and have Flash animate the transitions between the frames.

Right-click on the Moon layer and from the contextual menu, select Add Motion Guide. Click on the Motion Guide layer to select it, as shown in Figure H.

Figure H

Selecting the new Motion Guide layer for the Moon layer

The Motion Guide layer is where you will create your orbit path for the moon. Select the Oval tool from the Toolbox again, but this time, select a White stroke and no fill. Then, go back to the Stage and draw a narrow, horizontal oval around the center of the planet, as shown in Figure I.

Figure I

Creating the Motion Guide for the moon’s orbit

Motion Guides work best when they have a beginning point and an end point, but right now our orbit is a closed circle. Choose the Selection tool from the Toolbox and click and drag to select a small segment of the orbit path near the top center. Press the [Backspace] key to delete it. Your Motion Guide should look like Figure J.

Figure J

Breaking the oval to give the Motion Guide a beginning and ending point

Select the Moon Symbol and place it at the left-hand open end of the Motion Guide. It should snap into position via an anchor point in the center of the Moon Symbol. Then, choose the Free Transform tool from the Toolbox and reduce the size of the Moon Symbol to about half of its current size. Your stage should look like Figure K.

Figure K

Reducing the size of the moon and placing it at the start of the Motion Guide

Here’s where keyframes come into play. Go up to the Timeline and click and place your mouse into the 48th frame at the top layer (the one labeled Mask). Click and drag straight down to the bottom layer to select the frame across all four layers. Then, right-click in the selection and from the pop-up menu, choose the Insert Keyframe. Your Timeline palette should look like Figure L.

Figure L

Inserting keyframes at the end of the animation

Now, go back to the Stage and select the Moon symbol. Click and drag it to the opposite end of the Motion Guide, allowing it to snap into place, as shown in Figure M.

Figure M

The Moon at the ending position of the animation

Here is where the magic happens. Go back to the Timeline and select Frame 1 of the Moon layer. Right-click the frame and choose Create Motion Tween. The Moon layer will turn blue, with an arrow leading from keyframe 1 to keyframe 48. If you press the [Enter] key, you will get a preview of the animation, as the moon revolves around the planet.

But our animation lacks depth. Let’s start by making the moon appear bigger as it revolves toward us. Use your mouse to select Frame 24 in the Moon layer and right-click on it. Select Insert Keyframe again, making your Timeline look like the example in Figure N.

Figure N

Inserting a new Keyframe into the middle of the timeline

Now, select the moon on the stage and choose the Free Transform tool from the Toolbox again. This time, increase the size of the moon by about 100 percent (Figure O). Hit [Enter] again to preview the animation and see the moon increase and decrease in size as it moves to and from the camera.

Figure O

Increasing the size of the moon at the new Keyframe

We’re almost there. All we need to do now is make it look as if the moon disappears behind the planet at the back of its orbit.

Lock the Moon layer and the Motion Guide layer and then unlock the Planet layer and the Mask layer. Select the planet and copy it to the Clipboard. Go back to the Timeline and just as you did before, select Frame 6 of the Mask layer and insert a Keyframe. Then, in the same layer, insert another Keyframe at Frame 43. Your Timeline should look like Figure P.

Figure P

Inserting new Keyframes in the Mask layer

Select Frame 1 of the Timeline in the Mask layer. From the Edit menu, choose Paste In Place to drop a copy of the planet in the exact position as it exists on the Planet layer. Repeat this process at Keyframe 43 of the Mask layer. Finally, select Keyframe 48 of the Mask layer, right-click and then select Clear Keyframe to remove the empty Keyframe and extend the mask to the end of the movie.

Press [Ctrl]+[Enter] to test your movie. You’ll see that the Guide layer is not visible in the final SWF file.

That’s all there is to creating an animated 3-D effect with 2-D objects in Flash. Keep the Flash Timeline in mind the next time you need to quickly create a simple, attention-grabbing animation.

Isn't it easy???