Green Computing


In simple terms Green Computing means the usage of computer devices and their resources in an environmentally friendly manner. It’s a combination of Green Design, Green Manufacturing, Green Use, and Green Disposal. It’s also known as Green Information Technology (Green IT). Since the main aim is to reduce the bad impact upon environment, there are many other advantages for all the entities who are gained with the process. So, let’s see what the main advantages of Green Computing are.


  • Reduce environmental pollution by lowering the emission of Greenhouse Gases (GHG) like Carbon Dioxide, bulk disposal of e-waste, fossil fuel used in power plants and transportation                                                                                                                 Some of the harmful elements including in e-waste

Lead  ,  Tin  ,  Copper

Silicon  ,  Carbon  ,  Iron

Aluminum  ,  Cadmium  ,  Mercury


  • Increase the durability of hardware devices
  • Reduce energy consumption and lower energy cost
  • Improve the operational efficiency
  • Save rare raw materials which are needed to manufacture new devices
  • Lower the overall cost
  • Ability to maintain a healthy environment for employees
  • Ability to easily compliance with the required standards
  • Enhance company reputation as an environmental friendly organization
  • Self-satisfaction and a pride to the company employees of being upholding a social responsibility







  • Initial cost of being Green might be costly. And also maintenance cost is high
  • It’s hard to adapt to the rapid changes of technology
  • Some devices might not work properly under Green computing process
  • Green computing is still not a fully finalized concept. So, implementing it has a probability of occurring risks

How to go Green

  • Recycle computer equipment
  • Use energy efficient hardware (Eg: Use LED monitors instead of LCD and CRT)
  • Maintain best practices of using computer devices in day to day activities (Eg: Turn off the computer when not using it, use power saver mode as a regular practice)
  • Go for Virtualization. Means, running number of logical computer systems on one set of physical hardware
  • Use Telecommunication systems
  • Engage with Cloud Computing
  • Reduce energy consumption by proper usage of resources (Eg: Use an automatic power – down system)
  • Use natural cooling systems
  • Reduce paper waste (Eg: print only if needed, use soft copies instead of hard copies)
  • Buy recycled paper
  • Buy green products
  • Increase awareness about Green computing concept and its advantages




Heuristic Evaluation

Usability problems is a common issue that UI designers, developers, users have to face and a bad design affects to the end user satisfaction directly. So, to overcome that, UI evaluators should follow an inspection method before designing phase or after development phase. Heuristic evaluation is one of those inspection methods. In here evaluators check whether the user interfaces covers the required usability principles and some of the beneficiary facts of this method is that it can conducts at the very beginning of the designing phase and user testing is not required. If there are many heuristics introduced in usability inspection, Jakob Nielsen’s one is the mostly used collection. According to the book “Usability Engineering” published by Jakob Nielsen, he has identified 10 heuristics as below.

  1. Visibility of system status
  2. Match between system and the real world
  3. User control and freedom
  4. Consistency and standards
  5. Error prevention
  6. Recognition rather than recall
  7. Flexibility and efficiency of use
  8. Aesthetic and minimalist design
  9. Help users recognize, diagnose, and recover from errors
  10. Help and documentation

Let’s consider each of them separately.

Visibility of system status

The system should always keep users informed about what is going on, through appropriate feedback within reasonable time.

Otherwise users may not know what’s going on or whether they have done the task correctly or how much of time that they have to wait in order to proceed. Or else users may confuse without knowing the process going on inside the system. It’s not necessary to display the remaining time duration for all the tasks but if it takes more than few seconds it’s better to state the waiting time. Some of the common techniques designers use to display system status are loading spinners, progress bars.


Match between system and the real world

The system should speak the users’ language, with words, phrases and concepts familiar to the user, rather than system-oriented terms. Follow real-world conventions, making information appear in a natural and logical order.

Normally, people quickly recognizes things which are familiar with day to day objects. If we put a folder icon to represent a document, users get the hint that what we are presenting is a document. If we put a dustbin to represent deleted items then users will know that refers to send trash or unwanted stuff. Likewise we can use command phrases that are similar to real world. We can use ‘Open’ to enter into a new view and we can use ‘Exit’ to get out of that view.


User control and freedom

Users often choose system functions by mistake and will need a clearly marked “emergency exit” to leave the unwanted state without having to go through an extended dialogue. Support undo and redo.

Making mistakes is a common characteristic of human nature. So, a good design should always has a functionality to roll back the changes to prevent getting things worst. Below image shows the message which gives by the Gmail when the user delete a received email. That email won’t be deleted permanently until 30 days and Gmail also allows to undo the deleting process.


Consistency and standards

Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions.

It’s easy to understand if all the interfaces follows a standard format. If an interface follows a totally different format rather than the other interfaces then users have to put an extra effort to understand that interface. But also interfaces should emphasize differences while maintaining consistency. Most of the times people do things as a habit. If we put a button in a particular interface and put the very same button with a totally contrast  functionality like first one is for Save and second one is for Exit, most probably users hit Exit button by mistakenly even though they need to save the stuff. To avoid those unintentional mistakes, the designers should maintain a proper format keeping standards.

Microsoft Office Package maintains a unique interface structure, so the users can easily get familiar with the tasks with less effort.




Error prevention

Even better than good error messages is a careful design which prevents a problem from occurring in the first place. Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action.

‘Parking at your own risk’ is a common signing board that we have all seen in front of most of the supermarkets. Like that a good error message should advice the users about the impact or the result of their action and request the confirmation.

Below image is a good example which supports the above fact.


Below is the message which gives by Microsoft Excel when a user try to close the window without saving changes.


Login or Signup interface is the initial and relatively easiest step of a process. If the users cannot login to the system, then there’s nothing to talk about the rest of the system. Of that login stage, username and the password is the most important facts. So, the interface should enriched with a proper guidance to the users. According to the below example, when a user try to type the password a message displays the criteria of a valid password and line by line it shows the validity and invalidity, preventing occurring an error.


Recognition rather than recall

Minimize the user’s memory load by making objects, actions, and options visible. The user should not have to remember information from one part of the dialogue to another. Instructions for use of the system should be visible or easily retrievable whenever appropriate.

For an example it’s better to display a suggestion list while typing a term in order to easily approach and avoid typing long phrases.


Flexibility and efficiency of use

Accelerators — unseen by the novice user — may often speed up the interaction for the expert user such that the system can cater to both inexperienced and experienced users. Allow users to tailor frequent actions.

For regular, experienced users we can allow short cut keys to proceed tasks without going to a full ride again and again. And also there’s no need to display all the advanced features to novice users until they are thorough with given few features. And give the opportunity to frequent users to experience more features as their desire.

Below image is an example to a design which allows shortcut keys.


Below image shows that we can display frequently or most commonly used actions in an easily accessible place. So, the users can use those features with less time.


Aesthetic and minimalist design

Dialogues should not contain information which is irrelevant or rarely needed. Every extra unit of information in a dialogue competes with the relevant units of information and diminishes their relative visibility.

In our language, a design should be Short and Sweet. The more and more we try to push things into the interface, it’s getting more and more complicated. As much as it is simple, users can easily grab the idea. Long phrases takes times to read and users are getting bored and misses the important facts.



Help users recognize, diagnose, and recover from errors

Error messages should be expressed in plain language (no codes), precisely indicate the problem, and constructively suggest a solution.

We cannot expect that all the users are subject experts or technical experts. There might be a knowledge gap between users and designers. So, a good design should be able to reach to different users with different knowledge capacities. So, error messages should not contains high technical terms or complicated instructions. It should simply state the problem and a possible solution.

Below one is an example to a good design. It simply state the requirements.


Below images shows a bad design. User has to go through lots of complicated terms in order to find out the error.


Help and documentation

Even though it is better if the system can be used without documentation, it may be necessary to provide help and documentation. Any such information should be easy to search, focused on the user’s task, list concrete steps to be carried out, and not be too large.

Below images displays that the Cloud9 allows various types of help options for their users.


Below one is the help option provided by the google.




Tor Network

Tor browser is a free and open source software which runs on Linux/Unix, Windows, Mac and Android operating systems and allows users to browse internet and communicate via internet preserving their anonymity with the intention of increase user freedom and decrease the possibility of being monitored by external parties and exposure of confidential and sensitive data to unauthorized persons. So. Most of the people use Tor network in order to protect their privacy while using internet, avoid being monitored or eavesdropping, avoid censorship, etc. Tor is like nuclear power. Some people use it to generate power and some people use it for malicious purposes like war. Likewise there are people who use Tor for bad purposes as well as with good intention. People like terrorists, criminals, hackers, drug dealers, gun dealers, child pornographers, illegal vendors who are involving in black market use Tor for illegal activities.


The main concept behind Tor network is Onion routing. So, before we learn about Tor network it’s better to have quick look at what is Onion routing. Onion is a data structure which covers and hide the original message with number of encrypted layers until it comes to the destination. So, Onion routing means encrypt application layer of a communication protocol stack, nested by following that onion data structure. The encrypted message (including the starting location IP address) passes through several number of network nodes called Onion routers. Those routers are randomly selected and the message passes through a path which is not predefined. Those routers in the middle know only the IP addresses of the routers which are located besides in the path. So, the anonymity of the source is protected. When the encrypted message comes to the first router, it decrypts one layer of the message and pass it to the next router to decrypt the next layer. Likewise the message passes through number of routers until it fully transform to the original message and then pass it to the destination point.

Tor network


  • Encryption is only applicable inside the Tor network. It doesn’t encrypt data outside the network. So, it’s easy to monitor data traffic at the end point of the network
  • Browsing speed decreases because message has to pass several number of routers before reach to the expected destination
  • Tor cannot prevent traffic confirmation
  • Increase illegal activities like conducting law against political acts, accessing censored information with illegal privileges, supporting and protecting most wanted criminals
  • Even though Tor preserves privacy of the users, it let outer world to know that you are using Tor. So, the risk of being considered as a criminal is high and authorities may put a spy eye on you even though you use Tor network for good purposes
  • There are some websites which prevent Tor users accessing their content and special features

Even though Tor network protects your anonymity, as a user you have to follow some best practices in order to experience the real advantage of Tor. As in many other browsers there’s a risk of leaking user identity from screen resolution. So, from the very beginning of the usage, Tor users are advised not to maximize the browser window. And also it’s better to use Linux Operating systems instead of Windows Operating systems when using Tor network. Because, we cannot assure the privacy even though we use Tor browser because of the security issues in Windows systems. If an intruder attacks to the operating system from a system vulnerability, then no more secured your anonymity even though you use Tor browser. So, it’s essential to ensure the back ground work like regularly updating operating system and Tor browser to benefit the Tor services. And also Google is not the best search engine for Tor users because of the data tracking done by the Google. And also avoid HTTP and use HTTPS to ensure the security. For more security it’s better to avoid using technologies like Java, JavaScript, VBScripts, Adobe Flash since those technologies may create loopholes to intruders to peek into our network to track browsing data and keep cookies.

Tor interface


Software Testing

Software testing is a main part of software quality assurance. In software testing we check and evaluate whether the software has obtained and fulfilled specified requirements. Because of human errors, compatibility errors and many other things, it’s usual that existing product is differs from the required one. So, it’s essential to conduct a software testing process in Software Development Life Cycle (SDLC).

In waterfall model, testing is comes after implementation phase. But in incremental models like agile, testing process is conducted after every iteration. And after finishing implementation the end product will be tested again.

Testing methods

White-Box testing

In here the tester or the QA engineer should have to study the source code and gain a thorough knowledge about the functions, logics and the structure of the code. While reading the source code he has to identify what are the units of the code that occur the misbehavior.


Black-Box testing

In here the tester does not have access to the source code and he tests every function by the point of view of the end user. The tester doesn’t need any knowledge about programming languages and implementation.


Grey-Box testing

Tester has a rough idea about the structure and the components of the system but hasn’t a detailed knowledge about the internal logics of the functions. Tester doesn’t have access to the source code but can see the database and other documents relates to designing. So, the Grey-Box testing can be considered as a combination of White-Box testing and Black-Box testing.


Types of testing

There are two main types of software testing.

          1) Manual testing

          2) Automation testing

Manual testing

This is the way how to test the software without any automated testing tool. Quality Assurance engineer or the tester act as the client and uses the software and check whether the functions behave according to the required condition or whether it has any bugs. In here the tester tries the software according to different scenarios or uses different test cases. He writes all the possibilities in test cases and tryout. If the delivery is urgent, he tries at least sufficient amount of test cases.

Here is the basic structure for test cases

Test No

Description Step Expected Response Actual Response Status


Test 1
Test 2
Test 3
Test 4

In Step field we write every possibility of actions/inputs for the function to be tested. In expected response field we write the actual output or the response we expected through that function according to the given inputs. In actual response field we write what we actually get. In status field we write whether that function works or not for the given inputs (by comparing expected and actual responses). If the status is “fail”, we write the error in coding a logic that causes the program to malfunction, in the defect field.

The basic manual testing process is as below.


Unit testing

Break the whole system into small units and each unit holds a separate function. Then test each and every function according to the unit basis providing inputs one at a time.

Integration testing

Then combine those units and check how it works when those units functions collaboratively.

System testing

After integration testing we check whether the system fulfill the requirements in the SRS document for data that similar to real life scenarios.

User acceptance testing

Give the system to sample set of users to experience and let them to check the system for different privileges according to real life scenarios.

Automation testing

This is the way how to test the software with a testing tool or writing scripts. It is a replacement for manual process and increases the efficiency and accuracy of testing process and reduces budget allocated for testing. Automation testing is suits for large scale projects, complex/ urgent projects, and projects with stable requirements. Automation testing process is as mentioned below.


For automation testing we can use testing tools like Selenium, Appium, SilkTest, Cucumber, Test Studio, RSpec, etc.



Cloud Computing

The simple meaning of cloud computing is the process of storing and accessing data and programs on remote servers accessed over a direct internet connection on a pay-per-usage basis, instead of storing them in our computer hard drive.

Cloud Computing

Three types of cloud computing

Private cloudService that is controlled and exclusive to the user. Infrastructure is use to operate a single organization

Public cloud Share resources among community of users. Service providers use the internet to make resources, such as applications and storage, available to the general public, or on a public cloud

Hybrid cloud- Is a combination of both private and public cloud. It enables to move workload between private and public platforms.

Three models of cloud computing

Software as a service (SaaS)- Is a software distribution model in which a third-party provider hosts applications and makes them available to customers over the Internet.

Platform as a service (PaaS)- Is a cloud computing model that delivers applications over the Internet. Users only need to log in and start using the platform given by the PaaS provider.

Infrastructure as a service (IaaS)- Is a cloud computing model which provides virtualized computing resources over the Internet. A third-party provider hosts hardware, software, storage, servers and other infrastructure components and make them available to its users.

Advantages of cloud computing

• Reduce cost by minimizing hardware requirements
• Increase collaboration through easy accessibility and visibility
• Automatic software updates and maintenance
• Flexible adoptability to the bandwidth demand
• In cloud computing, data is stored in the cloud. So we can access data without our machines and in if someone has stolen our laptop we can remotely wipe data from it and prevent unauthorized access to our data
• Cloud-based backup and recovery solutions

Disadvantages of cloud computing

• Service provider allows minimal control to the end users
• Switching from one vendor to other may arises compatibility issues
• Service provider may not be able to provide similar service throughout the whole period due to increasing customer amount and it may causes downtimes


Color Theory

In a simple form we can define color as a mixture of various frequencies of light. Number of colors is infinite and out of that human can only see which have 400nm-700nm wave length.

Shades, Tints, Tones

Shades: Colors which are derived by adding black to any hue (pure color)

Tints: Colors which are derived by adding white to any hue

Tones: Colors which are derived by adding gray to any hue

As a simple formula we can say;

Sade + Tint = Tone

Wheel of Color (Color wheel)

It is a tool which visually represents relationships between every hue in a circular manner.

Analog colors: Colors beside a certain color in the color wheel. eg: For Yellow green(light                green); it is green and yellow.

Complementary colors: In the color wheel, the color which is directly in the opposite side of a certain color is called as complementary color. As an example for Purple, it is Yellow and for Yellow, it is Purple.

        Purple <<<>>>>  Yellow


Split complementary colors: Colors besides a complementary color is called as split complementary colors.

For an example if we take Red-orange, split complementary colors are Green and Blue.


Warm colors: Colors which are located in the first half of the color wheel

Cool colors: Colors which are located in the second half of the color wheel

3 Dimensions of colors

  • Hue
  • Saturation (density)
  • Value (lightness and darkness)


This pictu8re shows how the color differs because of the light fell upon the flower in different angles. The side which is directly exposes to the light have the bright side and when the distance between the light and the flower increases, it will gradually get d

Color percentage

By mixing colors in different percentages, we can create new colors.

Color Bit Depth (Color Depth)

It is the number of bits used to indicate the color of a single pixel. Through this we can decide the number of colors a monitor can display.

Color Models

It is a kind of representation of how the colors will be appears on a paper, TV screen or on computer screen. There are number of color models and because of the characteristics of each models, their usage is differ from one to another. So, when we are choosing color model we should check whether it is the most appropriate one for our purpose. In here let’s talk about few models.

RGB [Red, Green, Blue]

This model is good for screen based designs like web applications. It is an Additive model.

CMYK [Cyan, Magenta, Yellow, Key (Black)]

This model is good for printing purposes. If we take a printout of a photograph then we should follow this model. When we use Photoshop and if are hoping to get a printout of our work, we should change the color model before we start our work. This model is a subtractive model.

YUV [Luminance, Chrominance-Red, Chrominance-Blue]

In this model we are not considering about green color because it is embedded within all the three colors. More in Luminance and less in Red and Blue. This model is widely use when creating videos.

HSV [Hue, Saturation, Value]

This model is also called as lab color model. And it is specially used in photography. And also it is use for paintings and high quality graphics. The main advantage of this model is that each of its components is directly related with basic color concepts and it is defined in a way that is similar to how humans recognize colors.