Another "gem" that I received in today's mail :-
During World War II, a US marine was separated from his unit on a Pacific island. The fighting had been intense, and in the smoke and the crossfire he had lost touch with his comrades.
Alone in the jungle, he could hear enemy soldiers coming in his direction.
Scrambling for cover, he found his way up a high ridge to several small caves in the rock. Quickly he crawled inside one of the caves. Although safe for the moment, he
realized that once the enemy soldiers looking for him swept up the ridge, they would quickly search all the caves and he would be killed.
As he waited, he prayed, Lord, if it be your will, please protect me.
Whatever your will though, I love you and trust you. Amen.
After praying, he lay quietly listening to the enemy begin to draw close.
He thought, well, I guess the Lord isn't going to help me out of this one.
Then he saw a spider begin to build a web over the front of his cave.
As he watched, listening to the enemy searching for him all the while, the spider layered strand after strand of web across the opening of the cave.
Hah, he thought. What I need is a brick wall and what the Lord has sent me is a spider web. God does have a sense of humor.
As the enemy drew closer he watched from the darkness of his hideout and could see them searching one cave after another. As they came to his, he got ready to make his last stand. To his amazement, however, after glancing in the direction of his cave, they moved on.
Suddenly, he realized that with the spider web over the entrance, his cave looked as if no one had entered for quite a while. Lord, forgive me, prayed the young man. I had forgotten that in you a spider's web is stronger than a brick wall.
We all face times of great trouble. When we do, it is so easy to forget the victories that God would work in our lives, sometimes in the most surprising ways.
Remember: Whatever is happening in your life, with God, a mere spiders web can become a brick wall of protection. Believe He is with you always and you will see His great power and love for you.
Monday, February 25, 2008
Network Troubleshooting - 6 : Application Issues
I believe that after eliminating the possibilities of problems at the previous steps, the only remaining option at this step is to troubleshoot the application. You may need to scrounge through log files, check application consoles, etc.
However, the possibility of a problem occurring due to the underlying network is extremely minimal at this level - even if it does, it's probably due to some idiosyncrasies of the Operating System or the Application Platform.
However, the possibility of a problem occurring due to the underlying network is extremely minimal at this level - even if it does, it's probably due to some idiosyncrasies of the Operating System or the Application Platform.
Network Troubleshooting - 5 : NETSTAT
You need to now move on to the Remote System & check if the program / process is listening on a particular port that you are trying to connect to.
Netstat (network statistics) is a command-line tool that displays network connections (both incoming and outgoing), routing tables, and a number of network interface statistics.
- Wikipedia
You can use the simple NETSTAT command on the remote system to check the open Network ports, active connections, etc . You just need to open a Command Prompt ( Terminal in LINUX ) & type :-
( LINUX )
netstat -an | grep port_name
OR
( WINDOWS )
netstat -an | findstr port_name
You should see a bunch of Network statistics like this :-
TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING
TCP 127.30.22.11:1521 10.177.239.210:2527 ESTABLISHED
TCP 127.30.22.11:25271 10.177.239.210:1521 ESTABLISHED
TCP 127.30.22.110:28802 10.177.145.53:1521 ESTABLISHED
If you don't get this response, you can conclude on these :-
1. The program / process on the remote system that should be "listening" on the port is not running.
Now, it's time to call up the IT Help Desk & tell them that there's a problem with Network Access.
At the end of this exercise, you have :-
* tried some basic troubleshooting steps.
* identified the source of the problem.
* communicated effectively to the IT Support Staff.
You can now confidently communicate with the IT Support Staff & they'd be more than happy to work with an "educated" colleague.
Netstat (network statistics) is a command-line tool that displays network connections (both incoming and outgoing), routing tables, and a number of network interface statistics.
- Wikipedia
You can use the simple NETSTAT command on the remote system to check the open Network ports, active connections, etc . You just need to open a Command Prompt ( Terminal in LINUX ) & type :-
( LINUX )
netstat -an | grep port_name
OR
( WINDOWS )
netstat -an | findstr port_name
You should see a bunch of Network statistics like this :-
TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING
TCP 127.30.22.11:1521 10.177.239.210:2527 ESTABLISHED
TCP 127.30.22.11:25271 10.177.239.210:1521 ESTABLISHED
TCP 127.30.22.110:28802 10.177.145.53:1521 ESTABLISHED
If you don't get this response, you can conclude on these :-
1. The program / process on the remote system that should be "listening" on the port is not running.
Now, it's time to call up the IT Help Desk & tell them that there's a problem with Network Access.
At the end of this exercise, you have :-
* tried some basic troubleshooting steps.
* identified the source of the problem.
* communicated effectively to the IT Support Staff.
You can now confidently communicate with the IT Support Staff & they'd be more than happy to work with an "educated" colleague.
Network Troubleshooting - 4 : TELNET
A TCP/IP standard for remote terminal connection to another machine.
- Wikipedia
You can use the simple TELNET command to ensure that you can communicate with the remote system, by opening a connection to a port on the remote system. You just need to open a Command Prompt ( Terminal in LINUX ) & type :-
telnet ip_address port
OR
telnet hostname port
You should see a blank screen that allows you to type commands.
If you don't get this response, you can conclude on these :-
1. The program / process on the remote system that should be "listening" on the port is not running.
2. The remote system is protected by a "firewall" that's preventing access.
Now, it's time to call up the IT Help Desk & tell them that there's a problem with Network Access.
At the end of this exercise, you have :-
* tried some basic troubleshooting steps.
* identified the source of the problem.
* communicated effectively to the IT Support Staff.
You can now confidently communicate with the IT Support Staff & they'd be more than happy to work with an "educated" colleague.
- Wikipedia
You can use the simple TELNET command to ensure that you can communicate with the remote system, by opening a connection to a port on the remote system. You just need to open a Command Prompt ( Terminal in LINUX ) & type :-
telnet ip_address port
OR
telnet hostname port
You should see a blank screen that allows you to type commands.
If you don't get this response, you can conclude on these :-
1. The program / process on the remote system that should be "listening" on the port is not running.
2. The remote system is protected by a "firewall" that's preventing access.
Now, it's time to call up the IT Help Desk & tell them that there's a problem with Network Access.
At the end of this exercise, you have :-
* tried some basic troubleshooting steps.
* identified the source of the problem.
* communicated effectively to the IT Support Staff.
You can now confidently communicate with the IT Support Staff & they'd be more than happy to work with an "educated" colleague.
Network Troubleshooting - 3 : PING
Ping!
Ping is a computer network tool used to test whether a particular host is reachable across an IP network.
- Wikipedia
You can use the simple PING command to ensure that you can communicate with the other system. You just need to open a Command Prompt ( Terminal in LINUX ) & type :-
ping ip_address
OR
ping hostname
You should see a reply from the Network Card like this :-
Pinging sandeep-personal [127.0.0.1] with 32 bytes of data:
Reply from 127.30.22.11: bytes=32 time 1ms TTL=128
Reply from 127.30.22.11: bytes=32 time 1ms TTL=128
Reply from 127.30.22.11: bytes=32 time 1ms TTL=128
Reply from 127.30.22.11: bytes=32 time 1ms TTL=128
If you don't get this response, you can conclude on these :-
1. Your system is not connected to the same network as the remote system.
2. The remote system is not connected to the same network as your system.
3. Your system / the remote system is protected by a "firewall" that's preventing access.
Now, it's time to call up the IT Help Desk & tell them that there's a problem with Network Access.
At the end of this exercise, you have :-
* tried some basic troubleshooting steps.
* identified the source of the problem.
* communicated effectively to the IT Support Staff.
You can now confidently communicate with the IT Support Staff & they'd be more than happy to work with an "educated" colleague.
Ping is a computer network tool used to test whether a particular host is reachable across an IP network.
- Wikipedia
You can use the simple PING command to ensure that you can communicate with the other system. You just need to open a Command Prompt ( Terminal in LINUX ) & type :-
ping ip_address
OR
ping hostname
You should see a reply from the Network Card like this :-
Pinging sandeep-personal [127.0.0.1] with 32 bytes of data:
Reply from 127.30.22.11: bytes=32 time 1ms TTL=128
Reply from 127.30.22.11: bytes=32 time 1ms TTL=128
Reply from 127.30.22.11: bytes=32 time 1ms TTL=128
Reply from 127.30.22.11: bytes=32 time 1ms TTL=128
If you don't get this response, you can conclude on these :-
1. Your system is not connected to the same network as the remote system.
2. The remote system is not connected to the same network as your system.
3. Your system / the remote system is protected by a "firewall" that's preventing access.
Now, it's time to call up the IT Help Desk & tell them that there's a problem with Network Access.
At the end of this exercise, you have :-
* tried some basic troubleshooting steps.
* identified the source of the problem.
* communicated effectively to the IT Support Staff.
You can now confidently communicate with the IT Support Staff & they'd be more than happy to work with an "educated" colleague.
Revision Control for Rows
Revision Control deals with managing multiple revisions of an entity. The core functionality in any Revision Control system is to ensure that the previous version is not lost. Revision Control is a vast topic that merits hours of study & practice.
I definitely don't have the breadth of knowledge or experience to comment on various "must-have" features, etc. However, I did encounter an interesting scenario where I put Revision Control to practice for information stored in rows of a Database Table.
We can achieve Revision Control for rows in a Database Table in a simple way - with two columns. We can use one column to store the Row version and another to "flag" the row that contains the latest version.
I am using an Oracle XE Database & Oracle SQL Developer to model the tables, fashion out the queries, etc. You could do the same with any other Database & your favorite tools.
Here, I consider the example of an Item "on display" at a shop. The Product is available in multiple version ( different colors ), but only one "version" of the product is currently on display ( the item ).
First, I'll model the database table. I have made a few assumptions to arrive at this model :-
Assumption # 1 :- All the rows are linked by a common identifier ( in my case, the Product ID ).
Assumption # 2 :- At any given point of time, only one version of the product is "active".
Assumption # 3 :- Each "version" is saved into the database. Any "undo" will simply revert back to the previous saved version.
Assumption # 4 :- Each "undo" or "redo" is saved into the database as the current version.
Here's a table that shows this design :-
CREATE TABLE ITEM
(
ITEM_ID NUMBER PRIMARY KEY,
ITEM_PRODUCT_ID NUMBER,
ITEM_DESCRIPTION VARCHAR2(100),
ITEM_COLOR VARCHAR2(10),
ITEM_VERSION NUMBER,
ITEM_CURRENT_VERSION VARCHAR2(1) CONSTRAINT check_ver_flag CHECK(ITEM_CURRENT_VERSION IN ('Y','N'))
);
Here's the data that I stuffed into the table :-
INSERT INTO ITEM VALUES (1,566,'Smiley Dolls','Red',1,'N');
INSERT INTO ITEM VALUES (2,566,'Smiley Dolls','Blue!',2,'N');
INSERT INTO ITEM VALUES (3,566,'Smiley Dolls','Yellow',3,'Y');
INSERT INTO ITEM VALUES (4,566,'Smiley Dolls','Cyan',4,'N');
COMMIT;
Now, to dish out the queries...
Which is the current version of the Product ?
SELECT ITEM_DESCRIPTION, ITEM_COLOR FROM ITEM WHERE ITEM_CURRENT_VERSION = 'Y';
ITEM_DESCRIPTION ITEM_COLOR
------------------- ----------
Smiley Dolls Yellow
1 rows selected
Can we "undo" the current version & revert to the previous saved version ?
SELECT a.ITEM_DESCRIPTION, a.ITEM_COLOR FROM ITEM A, ITEM B
WHERE A.ITEM_VERSION = B.ITEM_VERSION-1 AND B.ITEM_CURRENT_VERSION = 'Y'
ITEM_DESCRIPTION ITEM_COLOR
----------
Smiley Dolls Blue!
1 rows selected
( After this, we set the current version flag to "Y" )
Revision Control can be achieved in this simple manner.
I definitely don't have the breadth of knowledge or experience to comment on various "must-have" features, etc. However, I did encounter an interesting scenario where I put Revision Control to practice for information stored in rows of a Database Table.
We can achieve Revision Control for rows in a Database Table in a simple way - with two columns. We can use one column to store the Row version and another to "flag" the row that contains the latest version.
I am using an Oracle XE Database & Oracle SQL Developer to model the tables, fashion out the queries, etc. You could do the same with any other Database & your favorite tools.
Here, I consider the example of an Item "on display" at a shop. The Product is available in multiple version ( different colors ), but only one "version" of the product is currently on display ( the item ).
First, I'll model the database table. I have made a few assumptions to arrive at this model :-
Assumption # 1 :- All the rows are linked by a common identifier ( in my case, the Product ID ).
Assumption # 2 :- At any given point of time, only one version of the product is "active".
Assumption # 3 :- Each "version" is saved into the database. Any "undo" will simply revert back to the previous saved version.
Assumption # 4 :- Each "undo" or "redo" is saved into the database as the current version.
Here's a table that shows this design :-
CREATE TABLE ITEM
(
ITEM_ID NUMBER PRIMARY KEY,
ITEM_PRODUCT_ID NUMBER,
ITEM_DESCRIPTION VARCHAR2(100),
ITEM_COLOR VARCHAR2(10),
ITEM_VERSION NUMBER,
ITEM_CURRENT_VERSION VARCHAR2(1) CONSTRAINT check_ver_flag CHECK(ITEM_CURRENT_VERSION IN ('Y','N'))
);
Here's the data that I stuffed into the table :-
INSERT INTO ITEM VALUES (1,566,'Smiley Dolls','Red',1,'N');
INSERT INTO ITEM VALUES (2,566,'Smiley Dolls','Blue!',2,'N');
INSERT INTO ITEM VALUES (3,566,'Smiley Dolls','Yellow',3,'Y');
INSERT INTO ITEM VALUES (4,566,'Smiley Dolls','Cyan',4,'N');
COMMIT;
Now, to dish out the queries...
Which is the current version of the Product ?
SELECT ITEM_DESCRIPTION, ITEM_COLOR FROM ITEM WHERE ITEM_CURRENT_VERSION = 'Y';
ITEM_DESCRIPTION ITEM_COLOR
------------------- ----------
Smiley Dolls Yellow
1 rows selected
Can we "undo" the current version & revert to the previous saved version ?
SELECT a.ITEM_DESCRIPTION, a.ITEM_COLOR FROM ITEM A, ITEM B
WHERE A.ITEM_VERSION = B.ITEM_VERSION-1 AND B.ITEM_CURRENT_VERSION = 'Y'
ITEM_DESCRIPTION ITEM_COLOR
----------
Smiley Dolls Blue!
1 rows selected
( After this, we set the current version flag to "Y" )
Revision Control can be achieved in this simple manner.
Sunday, February 24, 2008
Parent Child Relations in a Database Table
Parent - Child relationships ( hierarchical relationships ) are very common & often crop often during database designs.
You can expect to find Parent -Child relationships while modeling employee-manager, office-outlets & other similar concepts. I recently encountered the need for a parent - child relationship in a need to model a product-sub product concept.
You can find a lot of literature that talks about this topic in detail. I just want to add my 2 cents..
The hierarchical relationships are best explained by examples. Here, I consider a popular fast food chain of outlets ( "Yummies" ) that has outlets across the city.
Al the outlets in a particular part of the city "report" to a single outlet - the "parent" outlet.
All these "parent" outlets in turn "report" to a single "parent" outlet - something like a "head office".
The "report"s could be anything - daily sales figures, inventory status, customer feedback, staff shortages, etc. However, at this point of time, the main focus is to model the relationship of a parent-child outlet chain.
I am using an Oracle XE Database & Oracle SQL Developer to model the tables, fashion out the queries, etc. You could do the same with any other Database & your favourite tools.
First, I'll model the database table. I have made a couple of assumptions to arrive at this model :-
Assumption #1 : Each child outlet has a single parent outlet.
Assumption #2 : Each outlet has a parent outlet, except the "root" outlet ( head office ) .
Here's the table structure that I have designed :-
CREATE TABLE OUTLET
(
OUTLET_ID NUMBER PRIMARY KEY,
OUTLET_NAME VARCHAR2(30) NOT NULL,
OUTLET_PARENT NUMBER
);
The OUTLET_ID of the "parent" outlet is stored in the "child" outlet's OUTLET_PARENT.
Here's the data I stuffed into the table :-
INSERT INTO OUTLET VALUES(1,'Yummies M G Rd',null);
INSERT INTO OUTLET VALUES(2,'Yummies BSK ',1);
INSERT INTO OUTLET VALUES(3,'Yummies BSK I Stage ',2);
INSERT INTO OUTLET VALUES(4,'Yummies BSK II Stage ',2);
INSERT INTO OUTLET VALUES(5,'Yummies BSK III Stage ',2);
INSERT INTO OUTLET VALUES(6,'Yummies Food World ',3);
COMMIT;
Now, to dish out the queries...
Which outlet is the "mother of all outlets" ? ( root outlet / head office )
The outlet that has no parent ( OUTLET_PARENT is null ) is the "mother of all outlets".
SELECT * FROM OUTLET WHERE OUTLET_PARENT IS NULL;
OUTLET_ID OUTLET_NAME OUTLET_PARENT
--------- ------------------ ---------------
1 Yummies M G Rd
1 rows selected
Which are the outlets under the root outlet ?
SELECT
a.outlet_id,
a.outlet_name,
a.outlet_parent,
b.outlet_parent
FROM outlet a,
outlet b
WHERE b.outlet_id = a.outlet_parent
AND b.outlet_parent IS NULL;
OUTLET_ID OUTLET_NAME OUTLET_PARENT OUTLET_PARENT_1
--------- ------------------ --------------- ---------------
2 Yummies BSK 1
I can now dish out various queries that involve parent-child relationships on the chain of outlets.
The model described above works best only if the two critical assumptions are satisfied. If not, you may need to explore alternate ways to achieve this relationship - e.g.: moving the relationship data ( OUTLET_ID, OUTLET_PARENT) to a separate table, etc.
You can expect to find Parent -Child relationships while modeling employee-manager, office-outlets & other similar concepts. I recently encountered the need for a parent - child relationship in a need to model a product-sub product concept.
You can find a lot of literature that talks about this topic in detail. I just want to add my 2 cents..
The hierarchical relationships are best explained by examples. Here, I consider a popular fast food chain of outlets ( "Yummies" ) that has outlets across the city.
Al the outlets in a particular part of the city "report" to a single outlet - the "parent" outlet.
All these "parent" outlets in turn "report" to a single "parent" outlet - something like a "head office".
The "report"s could be anything - daily sales figures, inventory status, customer feedback, staff shortages, etc. However, at this point of time, the main focus is to model the relationship of a parent-child outlet chain.
I am using an Oracle XE Database & Oracle SQL Developer to model the tables, fashion out the queries, etc. You could do the same with any other Database & your favourite tools.
First, I'll model the database table. I have made a couple of assumptions to arrive at this model :-
Assumption #1 : Each child outlet has a single parent outlet.
Assumption #2 : Each outlet has a parent outlet, except the "root" outlet ( head office ) .
Here's the table structure that I have designed :-
CREATE TABLE OUTLET
(
OUTLET_ID NUMBER PRIMARY KEY,
OUTLET_NAME VARCHAR2(30) NOT NULL,
OUTLET_PARENT NUMBER
);
The OUTLET_ID of the "parent" outlet is stored in the "child" outlet's OUTLET_PARENT.
Here's the data I stuffed into the table :-
INSERT INTO OUTLET VALUES(1,'Yummies M G Rd',null);
INSERT INTO OUTLET VALUES(2,'Yummies BSK ',1);
INSERT INTO OUTLET VALUES(3,'Yummies BSK I Stage ',2);
INSERT INTO OUTLET VALUES(4,'Yummies BSK II Stage ',2);
INSERT INTO OUTLET VALUES(5,'Yummies BSK III Stage ',2);
INSERT INTO OUTLET VALUES(6,'Yummies Food World ',3);
COMMIT;
Now, to dish out the queries...
Which outlet is the "mother of all outlets" ? ( root outlet / head office )
The outlet that has no parent ( OUTLET_PARENT is null ) is the "mother of all outlets".
SELECT * FROM OUTLET WHERE OUTLET_PARENT IS NULL;
OUTLET_ID OUTLET_NAME OUTLET_PARENT
--------- ------------------ ---------------
1 Yummies M G Rd
1 rows selected
Which are the outlets under the root outlet ?
SELECT
a.outlet_id,
a.outlet_name,
a.outlet_parent,
b.outlet_parent
FROM outlet a,
outlet b
WHERE b.outlet_id = a.outlet_parent
AND b.outlet_parent IS NULL;
OUTLET_ID OUTLET_NAME OUTLET_PARENT OUTLET_PARENT_1
--------- ------------------ --------------- ---------------
2 Yummies BSK 1
I can now dish out various queries that involve parent-child relationships on the chain of outlets.
The model described above works best only if the two critical assumptions are satisfied. If not, you may need to explore alternate ways to achieve this relationship - e.g.: moving the relationship data ( OUTLET_ID, OUTLET_PARENT) to a separate table, etc.
Ten Common Database Design Mistakes
I recently chanced upon an article written by Louis Davidson titled "Ten Common Database Design Mistakes". The article summarizes the list of critical mistakes that should be avoided while designing a database.
As the author humbly points out in the article, the list also summarizes the mistakes he too did during the early stages of his career. I liked the article as I had to endure the same learning curve as the author.
Here's a summary of the most common mistakes :-
1. Poor design/planning
2. Ignoring normalization
3. Poor naming standards
4. Lack of documentation
5. One table to hold all domain values
6. Using identity/guid columns as your only key
7. Not using SQL facilities to protect data integrity
8. Not using stored procedures to access data
9. Trying to build generic objects
10. Lack of testing
I couldn't have summarized it better !
As the author humbly points out in the article, the list also summarizes the mistakes he too did during the early stages of his career. I liked the article as I had to endure the same learning curve as the author.
Here's a summary of the most common mistakes :-
1. Poor design/planning
2. Ignoring normalization
3. Poor naming standards
4. Lack of documentation
5. One table to hold all domain values
6. Using identity/guid columns as your only key
7. Not using SQL facilities to protect data integrity
8. Not using stored procedures to access data
9. Trying to build generic objects
10. Lack of testing
I couldn't have summarized it better !
Wednesday, February 20, 2008
MouseTrap
Another "gem" that I received in today's mail :-
A mouse looked through the crack in the wall to see the farmer and his wife open a package.
"What food might this contain?" The mouse wondered - he was devastated to discover it was a mousetrap.
Retreating to the farmyard, the mouse proclaimed the warning.
"There is a mousetrap in the house! There is a mousetrap in the house!"
The chicken clucked and scratched, raised her head and said, "Mr. Mouse, I can tell this is a grave concern to you but it is of no consequence to me. I cannot be bothered by it."
The mouse turned to the pig and told him, "There is a mousetrap in the house! There is a mousetrap in the house!"
The pig sympathized, but said, "I am so very sorry, Mr. Mouse, but there is nothing I can do about it but pray. Be assured you are in my prayers."
The mouse turned to the cow and said, "There is a mousetrap in the house! There is a mousetrap in the house!"
The cow said, "Wow, Mr. Mouse. I'm sorry for you, but it's no skin off my nose."
So, the mouse returned to the house, head down and dejected, to face the farmer's mousetrap-- alone.
That very night a sound was heard throughout the house -- like the sound of a mousetrap catching its prey.
The farmer's wife rushed to see what was caught. In the darkness, she did not see it was a venomous snake whose tail the trap had caught.
The snake bit the farmer's wife. The farmer rushed her to the hospital and she returned home with a fever. Everyone knows you treat a fever with fresh chicken soup, so the farmer took his hatchet to the farmyard for the soup's main ingredient.
But his wife's sickness continued, so friends and neighbors came to sit with her around the clock. To feed them, the farmer butchered the pig.
The farmer's wife did not get well; she died. So many people came for her funeral, the farmer had the cow slaughtered to provide enough meat for all of them.
The mouse looked upon it all from his crack in the wall with great sadness.
So, the next time you hear someone is facing a problem and think it doesn't concern you, remember -- when one of us is threatened, we are all at risk.
We are all involved in this journey called life. We must keep an eye out for one another and make an extra effort to encourage one another.
REMEMBER:
EACH OF US IS A VITAL THREAD IN ANOTHER PERSON'S TAPESTRY; OUR LIVES ARE WOVEN TOGETHER FOR A REASON.
A mouse looked through the crack in the wall to see the farmer and his wife open a package.
"What food might this contain?" The mouse wondered - he was devastated to discover it was a mousetrap.
Retreating to the farmyard, the mouse proclaimed the warning.
"There is a mousetrap in the house! There is a mousetrap in the house!"
The chicken clucked and scratched, raised her head and said, "Mr. Mouse, I can tell this is a grave concern to you but it is of no consequence to me. I cannot be bothered by it."
The mouse turned to the pig and told him, "There is a mousetrap in the house! There is a mousetrap in the house!"
The pig sympathized, but said, "I am so very sorry, Mr. Mouse, but there is nothing I can do about it but pray. Be assured you are in my prayers."
The mouse turned to the cow and said, "There is a mousetrap in the house! There is a mousetrap in the house!"
The cow said, "Wow, Mr. Mouse. I'm sorry for you, but it's no skin off my nose."
So, the mouse returned to the house, head down and dejected, to face the farmer's mousetrap-- alone.
That very night a sound was heard throughout the house -- like the sound of a mousetrap catching its prey.
The farmer's wife rushed to see what was caught. In the darkness, she did not see it was a venomous snake whose tail the trap had caught.
The snake bit the farmer's wife. The farmer rushed her to the hospital and she returned home with a fever. Everyone knows you treat a fever with fresh chicken soup, so the farmer took his hatchet to the farmyard for the soup's main ingredient.
But his wife's sickness continued, so friends and neighbors came to sit with her around the clock. To feed them, the farmer butchered the pig.
The farmer's wife did not get well; she died. So many people came for her funeral, the farmer had the cow slaughtered to provide enough meat for all of them.
The mouse looked upon it all from his crack in the wall with great sadness.
So, the next time you hear someone is facing a problem and think it doesn't concern you, remember -- when one of us is threatened, we are all at risk.
We are all involved in this journey called life. We must keep an eye out for one another and make an extra effort to encourage one another.
REMEMBER:
EACH OF US IS A VITAL THREAD IN ANOTHER PERSON'S TAPESTRY; OUR LIVES ARE WOVEN TOGETHER FOR A REASON.
Sunday, February 03, 2008
Health Care : HL7 V3 Foundation Documents
The HL7 V3 Foundation documents provide rich insight into this wonderful standard. The Foundation Documents are very well organized & are comfortable to read.
You can find the foundation documents here.
The Foundation Document details the new approach in HL7 V3 :-
You can find the foundation documents here.
The Foundation Document details the new approach in HL7 V3 :-
- HL7 V3 adopts an Object Oriented (OO) approach using Unified Modeling Language (UML) principles.
- Reduced Optionality. Limiting optionality is a primary goal of HL7 V3. Within HL7 V2.x, almost every field is optional.Optionality makes it harder to precisely define the semantics of a specific message and makes it virtually impossible to generate conformance claims for messaging.
- Conformance to HL7 V3 will be testable.
Tuesday, January 29, 2008
Health Care : HL7 Standard
" Health Level Seven (HL7), is an all-volunteer, not-for-profit organization involved in development of international healthcare standards. “HL7” is also used to refer to some of the specific standards created by the organization (i.e. HL7 v2.x, v3.0, HL7 RIM etc.).
HL7 and its members provide a framework (and related standards) for the exchange, integration, sharing and retrieval of electronic health information. "- Wikipedia
HL7 is a standard for Medical Applications to exchange information.
The Health Care industry segment is divided into many domains such as patient care, laboratory information systems, etc. The HL7 standard enforces a consistency of stored and shared information across many domains in Health Care.
The HL7 standard is continously being developed and enriched with new ideas. The HL7 committee has released six versions of the HL7 standard ( collectively called as HL7 2.x ) :
HL7 3.0 is a complete rework of the HL7 standard. HL7 3.0 is an attempt to overcome some of the issues with HL7 2.x. XML is medium for exchange of HL7 messages instead of the simple ASCII text that HL7 2.x used.
The basis of HL7 v3.0 is a model called the Reference Information Model ( RIM ). RIM is an attempt to further standardize the HL7 specifications between health care systems.
The differences between HL7 2.x and HL7 3.x are :-
HL7 v3.0 is a dramatic shift from HL7 2.x and introduces a lot of new concepts.
The HL7 standard is continously being developed and enriched with new ideas. The HL7 committee has released six versions of the HL7 standard ( collectively called as HL7 2.x ) :
- 2.1
- 2.2
- 2.3
- 2.3.1
- 2.4
- 2.5
HL7 3.0 is a complete rework of the HL7 standard. HL7 3.0 is an attempt to overcome some of the issues with HL7 2.x. XML is medium for exchange of HL7 messages instead of the simple ASCII text that HL7 2.x used.
The basis of HL7 v3.0 is a model called the Reference Information Model ( RIM ). RIM is an attempt to further standardize the HL7 specifications between health care systems.
The differences between HL7 2.x and HL7 3.x are :-
HL7 2.x
- HL7 2.x is the most popular and the most widely implemented HL7 standard in the US.
- HL7 2.x does not have a common information model that spans all Health care domains-of-interest.
- HL7 2.x does not have a robust data type specification.
HL7 3.x
- HL7 3.x is based on the RIM and attempts to bring consistency across the entire standard.
- HL7 3.x defines a common information model based on the RIM.
- HL7 3.x defines a data type specification.
- HL7 3.x is NOT backward compatible with HL7 2.x.
HL7 v3.0 is a dramatic shift from HL7 2.x and introduces a lot of new concepts.
Health Care : Stakeholders interested in EHR
A Patient's EHR is of great interest to many stakeholders in the Health Care Industry. Each Stakeholder is interested in different aspects of a EHR.
The important Stakeholders in the Health Care Industry are :-
The primary interests of these Stakeholders can be summarized thus :-
Hence, it is important that the EHR follow a standard. The standard should allow the Stakeholders to query the stored information or a subset of the information.
The standard for the EHR should address consistency in two areas :-
1. Storage of the data
2. Retrieval of the data ( entire data / a subset of the data ).
Health Level 7 ( HL7 ) is an international standard for storing and sharing clinical Health Information. HL7 is used to exchange EHR information as well as many other details across various Health care domains.
The important Stakeholders in the Health Care Industry are :-
- Patient
- Providers
- Payors
- Suppliers
- Academic Centers
- Government
The primary interests of these Stakeholders can be summarized thus :-
- Patient : too understand the nature of the current ailment
- Providers : the understand the Medical History of the patient.
- Payors : Insurance Companies, etc.
- Suppliers : to understand the current supply / demand for Drugs, etc.
- Academic Centers : to understand the current trends in the field & research.
- Government : to understand the overall health status of the citizens in the country.
Hence, it is important that the EHR follow a standard. The standard should allow the Stakeholders to query the stored information or a subset of the information.
The standard for the EHR should address consistency in two areas :-
1. Storage of the data
2. Retrieval of the data ( entire data / a subset of the data ).
Health Level 7 ( HL7 ) is an international standard for storing and sharing clinical Health Information. HL7 is used to exchange EHR information as well as many other details across various Health care domains.
Health Care : Patient and Medical Record
The Health Care Industry is centered around the services that can be offered to a Patient. Patients and their Health Records offer tremendous insight into Medical Histories and is of great interest to many Stakeholders.
A Patient is a person in need of Medical attention. The Medical attention could be care and treatment.
The outcome of the Medical attention is :-
1. a Medical Record
2. a Bill for the offered Services.
The Medical Record is a documentation of :-
1. Observations made by the attending Medical Professional.
2. Recommended Scans to study the problem further.
3. Recommended care / Treatment.
A collection of Medical Records is the Medical History of the patient. However, the term "Medical Record" is also used interchangeably to include the Medical History ( Health Record ) of the patient.
An Electronic Medical Record ( EMR ) is a Medical Record in digital format. An EMR contains patient information from a single Health Care Provider ( a Doctor, a Hospital, etc. ).
An Electronic Health Record ( EHR ) contains patient information from multiple Health Care Provider ( Doctors, Hospitals, etc. ). Hence, an EHR can be considered as a collection of EMRs ( this is my view of EMR and EHR ).
Hence, a Health Care Provider contributes vital information about a Patient in the form of an EMR. The EMR in turn forms a vital component of a Patient's EHR.
A Patient is a person in need of Medical attention. The Medical attention could be care and treatment.
The outcome of the Medical attention is :-
1. a Medical Record
2. a Bill for the offered Services.
The Medical Record is a documentation of :-
1. Observations made by the attending Medical Professional.
2. Recommended Scans to study the problem further.
3. Recommended care / Treatment.
A collection of Medical Records is the Medical History of the patient. However, the term "Medical Record" is also used interchangeably to include the Medical History ( Health Record ) of the patient.
An Electronic Medical Record ( EMR ) is a Medical Record in digital format. An EMR contains patient information from a single Health Care Provider ( a Doctor, a Hospital, etc. ).
An Electronic Health Record ( EHR ) contains patient information from multiple Health Care Provider ( Doctors, Hospitals, etc. ). Hence, an EHR can be considered as a collection of EMRs ( this is my view of EMR and EHR ).
Hence, a Health Care Provider contributes vital information about a Patient in the form of an EMR. The EMR in turn forms a vital component of a Patient's EHR.
Health Care : What is Healthcare
" Health care, or healthcare, is the prevention, treatment, and management of illness and the preservation of mental and physical well being through the services offered by the medical, nursing, and allied health professions. "
- Wikipedia
I wanted to write about IT in Health Care and my understanding & views. I use the Health Care category in my Blog to categorize my learning & organize it.
I have miles to go in learning an industry as exciting and diverse as Health Care - this section of my Blog is an attempt to capture my understanding and share it with the world.
Please do let me know your thoughts & perspectives on the topics I have shared here.
I wanted to write about IT in Health Care and my understanding & views. I use the Health Care category in my Blog to categorize my learning & organize it.
I have miles to go in learning an industry as exciting and diverse as Health Care - this section of my Blog is an attempt to capture my understanding and share it with the world.
Please do let me know your thoughts & perspectives on the topics I have shared here.
Monday, January 28, 2008
Network Troubleshooting - 2 : Check the Adapters
Check the Network Card.
A network card, network adapter, LAN Adapter or NIC (network interface card) is a piece of computer hardware designed to allow computers to communicate over a computer network.
A network card, network adapter, LAN Adapter or NIC (network interface card) is a piece of computer hardware designed to allow computers to communicate over a computer network.
A Network card allows you to send / receive messages to / from other computers in the same Network. Hence, the next obvious checkpoint is the Network Card.
You can use the simple PING command to ensure that the Network Card is working as expected. You just need to open a Command Prompt ( Terminal in LINUX ) & type :-
You can use the simple PING command to ensure that the Network Card is working as expected. You just need to open a Command Prompt ( Terminal in LINUX ) & type :-
ping localhost
You should see a reply from the Network Card like this :-
Pinging sandeep-personal [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time 1ms TTL=128
Reply from 127.0.0.1: bytes=32 time 1ms TTL=128
Reply from 127.0.0.1: bytes=32 time 1ms TTL=128
Reply from 127.0.0.1: bytes=32 time 1ms TTL=128
If you don't get this response, you can conclude on these :-
1. The Network Card is not properly installed.
2. The Network Card is not properly configured.
3. The Network Card is no longer functional.
Now, it's time to call up the IT Help Desk & tell them that there's a problem with the Network Card.
At the end of this exercise, you have :-
* tried some basic troubleshooting steps.
* identified the source of the problem.
* communicated effectively to the IT Support Staff.
You can now confidently communicate with the IT Support Staff & they'd be more than happy to work with an "educated" colleague.
You should see a reply from the Network Card like this :-
Pinging sandeep-personal [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time 1ms TTL=128
Reply from 127.0.0.1: bytes=32 time 1ms TTL=128
Reply from 127.0.0.1: bytes=32 time 1ms TTL=128
Reply from 127.0.0.1: bytes=32 time 1ms TTL=128
If you don't get this response, you can conclude on these :-
1. The Network Card is not properly installed.
2. The Network Card is not properly configured.
3. The Network Card is no longer functional.
Now, it's time to call up the IT Help Desk & tell them that there's a problem with the Network Card.
At the end of this exercise, you have :-
* tried some basic troubleshooting steps.
* identified the source of the problem.
* communicated effectively to the IT Support Staff.
You can now confidently communicate with the IT Support Staff & they'd be more than happy to work with an "educated" colleague.
Friday, January 25, 2008
Network Troubleshooting - 1 : Check the Cables
Check the Cables !
Yes, the most simplest method is toe check if Network Cable is properly connected to the computer.
Here's a small Checklist that I use :-
* The Network Cable is connected correctly to the Network Card (usually, rear of the Computer)
* The Network LEDs are flashing green - continuous or blinking.
If any of the above are not correct, I am sure there's something wrong with connection. If the Cable is connected correctly & your computer is still unable to get on the Network, you might want to try with a new Network Cable.
If it works - you have solved the problem :)
If you don't get this response, you can conclude on these :-
1. The Network Card is not able to get a signal from the Network.
2. The Network Card is not properly installed.
3. The Network Card is not properly configured.
4. The Network Card is no longer functional.
Now, it's time to call up the IT Help Desk & tell them that there's a problem with the Network Card.
At the end of this exercise, you have :-
* tried some basic troubleshooting steps.
* identified the source of the problem.
* communicated effectively to the IT Support Staff.
You can now confidently communicate with the IT Support Staff & they'd be more than happy to work with an "educated" colleague.
Yes, the most simplest method is toe check if Network Cable is properly connected to the computer.
Here's a small Checklist that I use :-
* The Network Cable is connected correctly to the Network Card (usually, rear of the Computer)
* The Network LEDs are flashing green - continuous or blinking.
If any of the above are not correct, I am sure there's something wrong with connection. If the Cable is connected correctly & your computer is still unable to get on the Network, you might want to try with a new Network Cable.
If it works - you have solved the problem :)
If you don't get this response, you can conclude on these :-
1. The Network Card is not able to get a signal from the Network.
2. The Network Card is not properly installed.
3. The Network Card is not properly configured.
4. The Network Card is no longer functional.
Now, it's time to call up the IT Help Desk & tell them that there's a problem with the Network Card.
At the end of this exercise, you have :-
* tried some basic troubleshooting steps.
* identified the source of the problem.
* communicated effectively to the IT Support Staff.
You can now confidently communicate with the IT Support Staff & they'd be more than happy to work with an "educated" colleague.
Network Troubleshooting - 0 : Need
A fairly good understanding of Networking concepts is important if your are working on a Multi-Tiered Distributed Project.
You could be working on JEE or any other Technology stack - without a basic understanding of he underlying network, you will frequently find yourself wondering why some of the components "don't talk to each other".
You need to have a basic understanding of the underlying Network, a few common problems & simple troubleshooting. It will help you articulate the nature of the problem to your Stakeholders & most importantly to your IT Help Desk Staff.
I also ask a few networking questions during my interview sessions to gauge if the candiate if aware of some of the basic facts.
I am definitely not an expert in Networking, but I would like to share some observations from my limited experience.
You could be working on JEE or any other Technology stack - without a basic understanding of he underlying network, you will frequently find yourself wondering why some of the components "don't talk to each other".
You need to have a basic understanding of the underlying Network, a few common problems & simple troubleshooting. It will help you articulate the nature of the problem to your Stakeholders & most importantly to your IT Help Desk Staff.
I also ask a few networking questions during my interview sessions to gauge if the candiate if aware of some of the basic facts.
I am definitely not an expert in Networking, but I would like to share some observations from my limited experience.
Thursday, January 24, 2008
EJB 3.1 : Formation of the Expert Group
The EJB 3.1 expert group is working on for the next version of the Java EE EJB specification.
EJB 3.0 brought simplicity to Java EE 5 by moving away from a heavyweight programming model. EJB 3.1 aims to build on those successes by moving further down the path of simplicity as well as adding a handful of much-needed features.
Here are a few interesting features :-
1. EJB Interfaces are Optional.
2. The Singleton Beans are Here
3. Support for direct use of EJBs in the servlet container
4. EJB Timer Service enhancements
5. Support for stateful web services via Stateful Session Bean web service endpoints.
Reza Rehman is one of the members of the EJB 3.1 Expert group. He has promised to write more articles in future regarding EJB 3.1.
You can get more information here :-
http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesinEJB3-1
EJB 3.0 brought simplicity to Java EE 5 by moving away from a heavyweight programming model. EJB 3.1 aims to build on those successes by moving further down the path of simplicity as well as adding a handful of much-needed features.
Here are a few interesting features :-
1. EJB Interfaces are Optional.
2. The Singleton Beans are Here
3. Support for direct use of EJBs in the servlet container
4. EJB Timer Service enhancements
5. Support for stateful web services via Stateful Session Bean web service endpoints.
Reza Rehman is one of the members of the EJB 3.1 Expert group. He has promised to write more articles in future regarding EJB 3.1.
You can get more information here :-
http://www.theserverside.com/tt/articles/article.tss?l=NewFeaturesinEJB3-1
User Requirements for User Interface Design
User interface is the face of your application & unless it thrills all the stakeholders, your Project is never going to be successful.
I often notice the same mistakes committed in User Interface Design at the early stages of a Project. Here are some of those "evils" :-
1. Scope : The Scope of the Project is usually not defined clearly & as a result, a lot of unwanted action items creep into the scope.
2. Ambiguity : Often, the lack of clarity in defining a particular requirement leads to multiple interpretations.
3. Assumptions : Often, the Developers assume things on the behalf of the Users. Again, this may lead to multiple interpretations.
4. StakeHolders : it's very important to involve all the Stakeholders in the Project ( Users, Managers, Developers, etc. ) early. Else, UI redesign might become the main focus of the Project !
Here are some thing that I do to capture the User Requirements ( on a Page/Page basis ) :-
1. Description
2. Trigger
3. Success & Failure Criteria.
4. Items on the page
5. Clairifications.
I often notice the same mistakes committed in User Interface Design at the early stages of a Project. Here are some of those "evils" :-
1. Scope : The Scope of the Project is usually not defined clearly & as a result, a lot of unwanted action items creep into the scope.
2. Ambiguity : Often, the lack of clarity in defining a particular requirement leads to multiple interpretations.
3. Assumptions : Often, the Developers assume things on the behalf of the Users. Again, this may lead to multiple interpretations.
4. StakeHolders : it's very important to involve all the Stakeholders in the Project ( Users, Managers, Developers, etc. ) early. Else, UI redesign might become the main focus of the Project !
Here are some thing that I do to capture the User Requirements ( on a Page/Page basis ) :-
1. Description
2. Trigger
3. Success & Failure Criteria.
4. Items on the page
5. Clairifications.
Thursday, June 29, 2006
Oracle : SQL : TRUNC Function with DATE
The TRUNC Function can be used with a DATE Datatype to get interesting results. The TRUNC can be used to get the First Day of the Month, First Day of the year, etc.
SQL> SELECT TRUNC(SYSDATE,'YYYY') FROM DUAL;
TRUNC(SYS
---------
01-JAN-06
SQL> SELECT TRUNC(SYSDATE,'MM') FROM DUAL;
TRUNC(SYS
---------
01-JUN-06
SQL> SELECT TRUNC(SYSDATE,'YYYY') FROM DUAL;
TRUNC(SYS
---------
01-JAN-06
SQL> SELECT TRUNC(SYSDATE,'MM') FROM DUAL;
TRUNC(SYS
---------
01-JUN-06
Subscribe to:
Posts (Atom)