Subscribe by Email


Tuesday, June 30, 2009

MIMO ROUTERS - A quick summary

MIMO routers build on the MIMO technology, a relatively new set of technology protocols that reinvent the way signals are transmitted and received. MIMO routers send out multiple data streams at the same time and then use multiple antennas to sift through the signals for the requisite pattern. All this is done while maintaining a fast connection and, hence, a fast data stream. One characteristic sign of a MIMO router is multiple antennae.

Benefits of MIMO Routers. These include:
• Faster speeds.
• Greater distances between your paired devices.
• More simultaneous users.
• Less signal fading and dead spots.
• Better resistance to interference.

Concerns of MIMO Routers:

1. MIMO routers have a premium associated with them. The prices can fall as the product gets matured.
2. Pending 802.11N standard.


MIMO (Multiple Input Multiple Output) technology

1. MIMO is a new wireless technology conceived in the mid 90’s
2. It is based on an entirely new paradigm for digital signal processing that multiplies the data rate throughput achievable in wireless communication products.
3. Greatly improves the reliability, range and robustness of the connection providing a much better user experience that is closer to “wired” Ethernet quality.
4. MIMO technology is now being introduced to the Wi-Fi market.

MIMO is a smart antenna technique that increases speed, range, reliability and spectral efficiency for wireless systems.
MIMO is one technology being considered for 802.11n, a standard for next-generation 802.11 that boosts throughput to 100M bit/sec.

• Smart antenna techniques use multiple antennas to improve wireless performance and reliability.
– Antennas themselves are “dumb” pieces of metal.
– “Smartness” comes from signal processing that is applied to the multiple antennas.
– There are differing degrees of smartness.
• Conventional, “single-dimension” (1D) smart antenna techniques transmit just one data stream per channel
– RF beamforming.
– Digital beamforming.
– Digital receive diversity combining.
• MIMO makes smart antennas “multi-dimension”.
– Multiple data streams in the same channel.
– 2-D signals.

BENEFITS OF MIMO TECHNOLOGY:
For Business
• Enables truly wireless office – replaces Ethernet
– Improves wireless reliability and robustness
– Reduces infrastructure cost - Doubles coverage area of each AP
– Rates to 108 Mbps in each channel – similar to wired Ethernet speed
• Improves VoIP performance
– Extends handset battery life
– Increases call capacity
For Consumers
• One AP covers your whole home with reliable service
– Penetrates more walls at higher rates
– No need to sit in the right place to use your laptop
• Supports new wireless multimedia applications
– Whole-home coverage for high-speed broadband access
– Reliable SDTV and HDTV video transport in home networks
– Multi-service applications – voice, video, data


What are Routers, Switches, Hubs — Is There a Difference between them ?

Each device has its own function in a network environment. Two reasons confusion exists are
(1) all three are simple boxes with several plugs that accept cables and
(2) at times the functions of each device are rolled into one single device.

A hub, also known as a repeater, is a simple device used for years to connect all nodes, or computers, on a network to a central location. Each node on a network has a unique hardware address called a MAC address. A hub is known as a repeater because when a packet of data, or frame, is sent through the hub, it is repeated to each and every computer on the network.

A switch-based network is one that utilizes switches instead of hubs. A switch is a major upgrade to a hub. Instead of sending all network data to each and every network node, the switch will analyze the MAC address and determine where to send the data. Network bandwidth is not wasted by sending every frame to every port.

Routers not only provide connections to the internet, they also protect the LAN from the Internet. The router could block any Packet that has a destination address outside of the LAN. In short, a router can perform many of the same functions as switches and hubs, but it has address translation and filtering capabilities.


Quick description - How does a Router work?

Here is a technical description of how a router works. This would make sense if you have already an understanding of the network protocols.
The layers 2 and 3 of the OSI model i.e. Data Link layer, is where the Ethernet protocol, MAC addresses and switches fit in.
Layer 3, the Network layer, is where the IP protocol, IP addresses and routers fit in. All traffic is sent from your computer, starting with Layer 7 (your network application) and going down to Layer 1 (physical). With the physical layer, the traffic is going across your network medium.
Traffic goes to a router only if it is not on your local LAN. Routers work primarily at Layer 3 but must understand Layers 1-3, at a minimum. Many routers understand traffic all the way up to Layers 4-7 in varying ways.
One of the tools a router uses to decide where a packet should go is a configuration table. A configuration table is a collection of information, including:
• Information on which connections lead to particular groups of addresses
• Priorities for connections to be used
• Rules for handling both routine and special cases of traffic
Internet data, whether in the form of a Web page, a downloaded file or an e-mail message, travels over a system known as a packet-switching network. In this system, the data in a message or file is broken up into packages about 1,500 bytes long which includes information on the sender's address, the receiver's address, the package's place in the entire message, and how the receiving computer can be sure that the package arrived intact. Each data package, called a packet, is then sent off to its destination via the best available route -- a route that might be taken by all the other packets in the message or by none of the other packets in the message.


Introduction to Routers

A computer networking device which forwards data packets across a network toward their destinations, through a process of routing is known as Router. In companies and large corporations, a central computer system acts as a router to connect all of the company's computers to one network. This allows group participation and collaboration on large projects or just to connect all of the company's resources at one central location. It also aids in reliable communication between employees working on different floors in the building or in different countries.

1. Router is required to connect multiple networks, like your LAN to the Internet.
2. Routers store large tables of networks and addresses, then using algorithms to determine the shortest routes to individual addresses within those networks.
3. Routers not only facilitate intra-network communications, but also play a role in overall network performance.
4. Routers help in delivering the information faster.
5. Routers also protect LAN from Internet.
6. Router blocks any packet that has a destination address outside of the LAN. If the destination address is valid, the router could check the Packet for an error. If there is an error, the router could discard the Packet and send a message to the originating address.
7. Routers have address translation and filtering capabilities.


eXplore the eWorld!

In the world of computers we encounter a lot of words starting with 'e' which means electronic and it refers to the digital representation of the content.
Lets have a look at some of these eWords, and try to understand them in a very easy way...

e-paper - its a portable, reusable storage and display medium that can be repeatedly written on (i.e. refreshed) - millions of time.
Information to be displayed is downloaded through a connection to a computer or a cell phone.
epaper is used for applications such as ebooks, electronic newspapers, portable signs and foldable, rollable displays.

ebrochure - its like the brochure which explains the reader about the product, company etc, but the difference here is that ebrochure is a digital presentation style that consists of bullets, images, animations, graphics to inform the viewer (reader) about the product, company or service.

ebook - this is an electronic book which consists of variety of content that is published in a format that is small in size, portable and at the same time have all the features of a print version plus even there is an option of text being converted to speech.

eLibrary - its a virtual library that stores and delivers content that is exclusive, collection of articles, reports, features and tools. It can be seen as a personal online research centre. Its available for online reading or downloading.

e-form - a digital representation of a paper form. eforms can be filled out easily and even faster. It can automatically format, calculate, look up, and validate information for the user. And all this possible due to the programming associated with them. With electronic submission of completed forms one not only saves time but also eliminates the cost of errors.

e-outsourcing - term used for a business, where buying information technology products and services that could be furnished in-house from one or variety of sources on the internet.

e-services - these are electronic services which are very fast services. And they perform work, achieve tasks, or complete transactions where many business services can be provided for a business or consumer using the Web.


Friday, June 19, 2009

Refactoring - Code improvement without changing behavior

Refactoring is the process of changing a software system in such a way that it does not alter the external behaviour of the code/design, yet improves its internal structure. When the software is refactored, the existing design is examined for redundancy, unused design elements, inefficient or unnecessary algorithms, poorly constructed or inappropriate data structures, or any other design failure; once this inspection is done, then the results are analysed for getting a more improved design.
If you were to ask for a simple explanation, then code refactoring means that you 'clean up' the code. Refactoring is not meant to be used for changes where you added new functionality, or fixed bugs, or something similar. It is in principle used for analysing code to remove dead code, to make the code more understandable, and modify the internal structure and design (maybe to make the code more elegant, as well as to follow some standard code processes and layouts).
Why do refactoring ? The process intends to make code easier to read and comprehend, and also to be able to make modifications to it. Given the amount of time that code remains in-use, and with the people handling the code not remaining constant, it is important that the code be easy to understand and maintain. Sometimes people take on the task of improving the code in order to fix defects or solve other design issues, but that is not refactoring.
A common method used within refactoring is to change the definition of variables, such as when a non-meaning variable such as 'j' is instead changed to actually be closer to the real use of the variable, say 'ItemWeight'. This makes it easier for somebody else to quickly read the code and comprehend. This however, has its own set of complications since the same variable may be used in many different parts of the application, and the person making the modification may need to study each usage before making the change.


Software processes: Effective Modular Design

Information hiding: Modules should be specified and designed so that the internal details of modules should be invisible or inaccessible to other modules. Hiding implies that effective modularity can be achieved by defining a set of independent modules that communicate with one another only that information necessary to achieve software function. Hiding defines and enforces access constraints to both procedural detail within a module and any local data structure used by the module.

Major benefits: reduce the change impacts in testing and maintenance.

Functional independence:
Functional independence is achieved by developing modules with “single minded” function and an “aversion” to excessive interaction with other modules. Independent modules are easier to maintain because secondary effects caused by design or code modification are limited, error propagation is reduced and reusable modules are possible.

Design modules based on independent functional features
Major benefits: effective modularity

Independence is assessed using two qualitative criteria : cohesion and coupling.
Cohesion: a natural extension of the information hiding concept a module may perform a number of tasks. A cohesive module performs a single task in a procedure with little interactions with others.

Goal: to achieve high cohesion for modules in a system.

Different types of cohesion:
- coincidentally cohesive: a set of tasks related to each other loosely.
- logical connection among processing elements ---> logically cohesive.
- data sharing among processing elements --> communication cohesion.
- order among processing elements --> procedural cohesion.

Coupling : a measure of interconnection among modules in a program structure. Coupling depends on the interface complexity between modules.
Goal: to strive for lowest possible coupling among modules.
Good coupling ---> reduce or avoid change impact and ripple effects.
---> reduce the cost in program changes, testing, maintenance

Types of coupling:
- data coupling: parameter passing or data interaction
- control coupling: share related control logical (for a control data)
- common coupling: common data sharing
- content coupling: module A use of data or control information maintained in another module.


Quick tip: What is Abstraction and how to do effective modular design ?

Abstraction is the process of taking away or removing characteristics from something in order to reduce it to a set of essential characteristics. Through the process of abstraction, a programmer hides all but the relevant data about an object in order to reduce complexity and increase efficiency. In the process of abstraction, the programmer tries to ensure that the entity is named in a manner that will make sense and that it will have all the relevant aspects included and none of the extraneous ones.

Effective Modular Design

Information hiding:
Modules should be specified and designed so that the internal details of modules should be invisible or inaccessible to other modules. Hiding implies that effective modularity can be achieved by defining a set of independent modules that communicate with one another only that information necessary to achieve software function. Hiding defines and enforces access constraints to both procedural detail within a module and any local data structure used by the module.

Major benefits: Reduces the change impacts in testing and maintenance.


Software Design - Structural Partitioning

The program structure should be partitioned both horizontally and vertically.

(1) Horizontal partitioning defines separate branches of the modular hierarchy for each major program function.

Simplest way is to partition a system into: input, data transformation (processing), and output

Advantages of horizontal partition:
- easy to test, maintain, and extend
- fewer side effects in change propagation or error propagation

Disadvantage: more data to be passed across module interfaces
- complicate the overall control of program flow

(2) Vertical partitioning suggests the control and work should be distributed top-down in program structure.

Advantages:
- good at dealing with changes:
- easy to maintain the changes
- reduce the change impact and and propagation


What is Software Architecture ?

Software architecture is the hierarchical structure of program components and their interactions. One goal of software design is to derive an architectural rendering of a system. This rendering serves as a framework from which more detailed design activities are conducted.

Set of properties of architecture design are:

-Structural properties:
The architecture design defines the system components and their interactions.

- Extra-functional properties:
The architecture design should address how the design architecture achieves requirements for performance, capacity, reliability, adaptability, security.

- Families of related systems:
The architecture design should draw upon repeatable patterns in the design of families of similar systems.

Different architectural design methods:
- Structural models: represent architecture as an organized collection of components.
- Framework models: increase the level of design abstraction by identifying repeatable architecture design frameworks (patterns).
- Dynamic models: address the behavior aspects of the program architecture.
- Process models: focus on the design of the business or technical process.
- Functional models: can be used to represent the functional hierarchy of a system.


Sunday, June 7, 2009

Product Development - Getting requirements and prioritization - Part 2

The previous post talked about how the Product Management team generated requirements for the new version of the product. When this happens, the next most important task is to get an idea about how much effort getting all these requirements into the product will take. This is easier said than done. Doing effort estimation when the requirement is a stated 2 line statement can be really difficult, and requires some amount of refinement.
What would next happen in most cycles that I have seen is that the requirements are next discussed between the Product Management team and the engineering team (typically senior engineers along with the engineering manager); this process also envisages that the requirements are discussed to some extent in terms of what the workflow would be (keep in mind that this is not the right time of the cycle to start designing screens or dialogs or detailing the workflow other than a top level attempt - doing such an effort for most requirements would take too long and is difficult to attempt).
What really helps for this effort is to use some sort of documentation (I know people who use Word or use an internal Twiki implementation, or some other tool to capture such requirements in a medium level of detail (this is somewhat tricky, you need to have enough detail that you can take a rough guess at the effort estimate), and where you can break down the top level requirements into one step lower of requirements (example, if you need to add a new editing capability to a tool, the intermediate level requirements could be about having different file formats supported, or about different levels of editing such as having 3 quick buttons, or a slider to allow the user to have more control)).
Another element of this cycle is to press for prioritizing the requirements. It is incredibly important to make sure that prioritization is done, and there is a possibility that the product management team may have some hesitation in terms of doing the prioritization of these requirements. However, given my earlier statement about resourcing not being infinite for the product development cycle, setting a priority means that the team can focus on those requirements that are most critical, and then on the ones that are deemed less critical. The other advantage of forcing the priority is that this process forces the product management team to take a deep look at the features (including sub-features) in terms of whether this is something that will really benefit the product. This also ensures that resources are spent wisely.


Product Development - Getting requirements and prioritization - Part 1

I have in mind a series of posts that explains how the product development process works inside one of the teams for a product development company (based on previous experiences). However, this story has been interrupted in the past, and I believe I last posted on this topic many months back. I will try to be more regular on this topic in the future. Previous topics that I had written about were pre-release planning and metrics.
This topic will be about the meat of actually starting work on new feature development; the need is to actually define what the team needs to deliver in this new cycle. At this stage in the cycle, the only known facts are:
- It is decided that a new version will be required
- Dates are typically known for the release. Dates can be decided based on having to schedule for a certain condition of the market (in the US, to meet the enhanced marked season starting from Black Friday to Christmas, product development needs to conclude by a certain time so that the product can make its way through the retail chain and into the hands of retailers, large and small); dates can also be scheduled to meet projected customer needs (so if a software / hardware producer faces rivalry from Apple, it used to be that they would schedule release near MacWorld to prevent Apple from running away with the market)
- The number of resources are typically known. For most product development situations (unless there is the need to scale up to meet a competitor), the resources are not changed based on the number of features available. What would happen is that the features that can be implemented are decided based on the number of resources available.

So what happens next ? Well, what needs to happen next is that the product management team needs to decide on the features that are sought to be included in this release. If the product is something large such as the next version of Visual Studio C#, then the product management team would normally comprise of multiple product managers, each of whom would be tasked with a different area of the product. It is part of the responsibility of the product management team to decide on the features that are part of the consideration set for the release (and sources for new features include competitor analysis, user requests through forums, changes suggested through usability studies and through group sessions; there are also features that may correspond to changes in the market but not suggested by users - as an example, consider the case when a new technology related to online technologies hits the market and the product needs to have features to integrate with these new technologies or features - as an example, with the emergence of social networks such as Twitter, Facebook, MySpace, it may be needed for products to see how they would integrate with those).
So ends Part 1 of this post, I will carry it ahead with the next post.


Facebook activity