Ahoy there! This is my personal blog which I use as my memory extension and a medium to share stuff that could be useful to others.

Archive for July, 2009

When Wireless LAN (Wi-Fi), Bluetooth and other wireless technologies that use the RF Spectrum featured on many of the gadgets we use, we were thrilled to know that we weren’t tied to network cables, wired headsets, etc. and enjoyed the new found wireless freedom. However, a large part of our daily lives still involves using wires – from all the electrical appliances at our homes to the laptops and mobile phones we charge on the go. How often have you felt annoyed at the clumsy web of wires beneath your desk or the several adapters/charges/transformers that you need to carry around with you to charge your laptops, mobile phones, GPS, etc.? How often have you forgotten to charge your mobile phone only to hear that annoying beep which signals that it’s running out of electric juice? How often have we observed that when we purchase a small electronic gadget, the bulkiest and heaviest part of the packaged product is the charger or the battery? WiTricity technology (Wireless Electricity Delivered Over Distance) could eliminate all these annoyances and could revolutionize our wireless world.

 

Marin Soljačić (pronounced Maa-ren Soul-ya-CHEECH), an Assistant Professor of Physics at MIT, spearheaded the development of a technology which uses fundamental principles of physics to transfer electrical energy wirelessly over non-negligible distances. In 2006, Marin and his team presented the theory behind the technology in the Annals Of physics and in 2007, this technology was proven in experiments, details of which were published in the journal Science . This technology was called WiTricity and soon a company called WiTricity Corporation was started to commercialize the technology that was proven in MIT labs. Recently, the TED Global 2009 event at Oxford, UK included a demonstration by Eric Giler, CEO of WiTricity Corp. which has created a lot of excitement among science and technology enthusiasts.

 

 

 How does WiTricity work?: The image below, courtesy of WiTricity Corp., illustrates how this technology works.

 

how_witricity_works

 

 

How is WiTricity different from Wi-Fi?: Wi-Fi (and Bluetooth, microwaves, etc.) use radiation propagated with frequencies in the electromagnetic spectrum. On the other hand, WiTricity uses magnetic near-field resonant coupling (the principle of electromagnetic induction used to transfer electrical energy from the primary to secondary coils in a transformer with the important addition of matching resonant frequencies of both source and destination for maximum power transfer over non-negligble distances). The nineteenth century physicist and legendary inventor Nikola Tesla planned to experiment with the transfer of electrical energy wirelessly, but aborted his attempt due to lack of funds. After around a century later, Marin’s MIT team have finally made wireless electrical energy transfer possible.

Intel is working on a technology called WREL (Wireless Resonant Energy Link), based on WiTricity.

VN:F [1.6.5_908]
Rating: 0 (from 0 votes)

A couple of weeks ago, Google’s VP of Product Management and Engineering Director announced that Google was working on an Operating System called Google Chrome OS, scheduled to make its first appearance in netbooks in the second half of 2010. This announcement caused the IT world to buzz with excitement and within a couple of days since the announcement, there were already several articles on what Google Chrome OS might do to our Software world as we know it. Well, it’s been a busy time for me lately and I finally got some time to jot down my thoughts on this major announcement.

Ever since I had my first brush with Linux, I’ve tried several versions and distributions of it to attempt to seek a permanent alternative to Microsoft Windows. Although Linux distributions have evolved a lot over the years, there are still the odd problems with hooking up certain devices and still there’s more progress required in the GUI to really challenge Windows’ dominance in the Desktop OS market. Well, being quite familiar with UNIX, I can use the CLI shell to work around these glitches, but I still believe these Linux distributions have a long way to go to push Windows off its throne in the Desktop OS market and make Linux the first-choice OS for the average PC user. According to W3 Counter, as per June 2009 statistics, Windows Operating Systems make up around a whopping 89% of the total market share, while Linux accounts for a mere 2.11%. The primary reason – Microsoft Windows was the first OS to make it into the homes, schools and offices of the general population the world over, largely in part due to Bill Gates’ astute business acumen and Microsoft’s excellent marketing. The Mac OS and UNIX variants were confined to a small band of faithful followers (universities and geeks).

However, with Google announcing a free, Linux-based OS that focuses on speed, simplicity and security, perhaps the folks at Redmond ought to sit up and take notice. Before Google arrived with a big bang via their search engine, www Search was dominated by the likes of Yahoo! and AltaVista (now owned by Yahoo!). I was an AltaVista user until somebody asked me to try Google.  Google was not the first search engine, but it still made such a huge impact due to its simplicity, speed and accuracy of search results, such that those like me who tried Google never turned away from it, thereby making it the market leader in search. Now, Google seems all set to do the same in the OS market and I’m excited to see the results. Microsoft recently tried to challenge Google in the search market, with the launch of Bing. Only time will tell whether Google will be binged or whether Windows will be chromed!

5046_gogle

 

Some repercussions which Google’s Chrome OS could have are:

(1) Eat into the market share of Windows Desktop Operating Systems, thereby being a direct threat to Microsoft’s primary revenue churner.

(2) Wipe out several of the free Linux distributions already out there. Currently, Linux distributions are quite popular on netbooks and the Google Chrome OS will be first launched on netbooks.

(3) If Google manages to convince the popular hardware manufacturers to bundle the free Chrome OS with their products, then the prices of laptops, netbooks and Desktops could plummet. This will surely be one of Google’s key strategies to eat into Microsoft’s market share.

(4) Some third-party software like anti-virus and firewall software could become redundant, thereby wiping out some parts of the consumer software market.

Some of the challenges Google faces:

(1) Changing the users’ habits by luring them away from something they’ve gotten so used to over the years. However, the fact that the word “google” is now virtually part of every language and the huge reputation the company carries will help Google attract users.

(2) Getting it right the first time. Google will not have the luxury of trial and error via betas for a product like an OS. If users get frustrated by having to “learn” to use an OS, they’ll simply move back to familiarity.

(3) Getting the OS to (in Google’s words) “just work” on different hardware platforms and with different devices.

 

Well, if Google does score a winner with the Chrome OS,  then the ultimate winners will be us, the users. I’m eagerly awaiting the first release of Google’s Chrome OS.

VN:F [1.6.5_908]
Rating: 0 (from 0 votes)

64-bit Ubuntu: No such file or directory

Problem:

When trying to install the WebLogic 8.1 SP6 binary (platform816_linux32.bin) on 64-bit Ubuntu 9.04 Desktop, the following errors were observed:

oracle@mrkips-laptop: ./platform816_linux32.bin
oracle@mrkips-laptop: ./platform816_linux32.bin: No such file or directory

 

Background & Analysis:

The first couple of checks (obvious) for such an error are:

(1) Check if the file exists in the appropriate location

(2) Check if the file has the required permissions (read/execute)

The above checks were successful and so the error was misleading.

(3) Using the file command, the following was observed:

oracle@mrkips-laptop:/mrkips/oracle$ file platform816_linux32.bin 
platform816_linux32.bin: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 
dynamically linked (uses shared libs), for GNU/Linux 2.0.0, stripped

The above output indicates that the WebLogic installer binary is 32-bit and uses 32-bit shared libraries.

(4) The host OS was 64-bit Ubuntu and this could be confirmed using the uname command:

oracle@mrkips-laptop:/mrkips/oracle$ uname -a
Linux mrkips-laptop 2.6.28-13-generic #45-Ubuntu SMP Tue
 Jun 30 22:12:12 UTC 2009 x86_64 GNU/Linux

32-bit shared libraries are not available by default on 64-bit Ubuntu.

 

Solution:

Get the 32-bit shared library package for use on amd64 and ia64 systems, ia32-libs, using any one of the following methods:

sudo apt-get install ia32-libs

               OR

Launch the Synaptic Package Manager from the Ubuntu Desktop and install the ia32-libs package along with any required dependencies.

 

Root Cause:

The 32-bit shared libraries required for the installation of the 32-bit WebLogic binary installer were not available by default on 64-bit Ubuntu 9.04 Desktop.

 

NOTE:

(1) The solution above describes a successful problem-solving experience and may not be applicable to other problems with similar symptoms.

(2) Your rating of this post will be much appreciated. Also, feel free to leave comments.

 

VN:F [1.6.5_908]
Rating: +12 (from 12 votes)

My Tribute to Michael Jackson

I was a kid when I became mesmerized by Michael Jackson’s moonwalk. Back then, India’s only television channel, Doordarshan telecasted the Grammy Awards and I remember my family and I enjoying MJ’s performance at the 1988 Grammy awards. That performance is so fresh in mind, such that on watching it again today, it took me back to those cherished days. I remember my Dad buying the album "Bad" on audio cassette and my brothers and I playing the entire album very often and singing along. I remember learning by rote the lyrics for "The Way you make me feel" (still remember them!). Whoa! MJ simply was the best – the complete entertainer! Everybody tried to sing and dance like him. Years later, the King of Pop became involved in controversies and I was not sure what to believe (I’m still clueless). Sadly, MJ passed away on 25th June and his memorial service was held yesterday.

Michael Joseph Jackson, thanks a zillion for the wonderful songs, music and dance. You will never ever be forgotten. May your soul RIP.

 

Here are two videos with some of my favourite MJ songs:

 

(1) The 1988 Grammy Awards ("The way you make me feel" and "Man In The Mirror")

 

 

 

(2) We are the World (along with others)

 

 

VN:F [1.6.5_908]
Rating: 0 (from 0 votes)

Background:

When developing scripts, it is sometimes necessary to determine the absolute location of the script within the script, so that relative paths may be defined. For example, if a script writes logs and data files to different directories relative to the location of the script, you need to determine the location of the script, irrespective of where the script is installed or from where it’s executed. Of course, you can hard code this value in the script, but that’s a dirty solution because you’ll need to change the variable whenever you change the location of the script.

 

Implementation:

(1) UNIX Shell:

1
2
3
4
5
6
7
8
9
if [ -n "`dirname $0 | grep '^/'`" ]; then
   SCRIPT_LOCATION=`dirname $0`
elif [ -n "`dirname $0 | grep '^..'`" ]; then
     cd `dirname $0`
     SCRIPT_LOCATION=$PWD
     cd> /dev/null
else
     SCRIPT_LOCATION=`echo ${PWD}/\`dirname $0\` | sed ’s#\/\.$##g’`
fi

(2) Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sys
import os.path
from os import *
dirloc = os.path.dirname(sys.argv[0])
curdir = os.getcwd()
if dirloc.startswith("/"):
   SCRIPT_LOCATION = dirloc
elif dirloc.startswith(".."):
     os.chdir(dirloc)
     SCRIPT_LOCATION =  os.getcwd()
     os.chdir(curdir)
else:
     _SCRIPT_LOCATION = curdir + "/" + dirloc
     SCRIPT_LOCATION = _SCRIPT_LOCATION.rstrip("/.")
print SCRIPT_LOCATION

Both implementations above are based on the assumption that a script may be executed in any of the following 3 ways only:

(1) From anywhere within the directory hierarchy , using the absolute path (beginning with ‘/’)

(2) From anywhere below the directory containing the script, within the directory hierarchy (beginning with ‘../’)

(3) From anywhere above the directory containing the script, within the directory hierarchy (beginning with ‘./’)

 


NOTE:

(1) The How-To above describes a successful method of implementation. It may or may not be the best method of implementation. If you know of a better implementation or spot an error in the implementation above, kindly make readers aware via comments on this post.

(2) Your rating of this post will be much appreciated. 


VN:F [1.6.5_908]
Rating: 0 (from 0 votes)

DNS caching in JVMs

Problem:

A Java application running on a WebLogic Server uses Messaging Bridges to send messages to JMS destinations on a remote server. The target destinations were configured with the domain name of the remote server. When the remote server changed its IP address and modified DNS entries to map its domain name to the new IP address, the Messaging Bridges could no longer connect to the Remote Server.

 

Background & Analysis:

When a Java application looks up a domain name, the result of the domain name resolution is cached in the java.net.InetAddress class. By default, for Sun Hotspot JVM 1.5.x and earlier, a successful domain name resolution is cached forever (yikes!) and an unsuccessful domain name resolution is cached for 10 seconds. By default, for Sun Hotspot JVM 1.6.x, a successful domain name resolution is cached for 30 seconds (huh, why even bother caching positives only for a few seconds?) and an unsuccessful domain name resolution is cached for 10 seconds.

 

Which parameters control domain name resolution caching?

Either of the following sets of parameters control caching for successful (+ve) and unsuccessful (-ve) domain name resolutions are:

1. networkaddress.cache.ttl and networkaddress.cache.negative.ttl

OR

2. sun.net.inetaddr.ttl and sun.net.inetaddr.negative.ttl

The above parameters represent the time-to-live (expiry period) for java.net.InetAddress cache entries, in seconds. Parameters in (1) are recommended, as parameters in (2) are Sun proprietary parameters and may be removed in future releases.

How to configure the domain name resolution caching parameters?

The networkaddress.cache.ttl and networkaddress.cache.negative.ttl parameters can be configured by setting their values in the ${JAVA_HOME}/jre/lib/security/java.security file.

The sun.net.inetaddr.ttl and sun.net.inetaddr.negative.ttl can be configured by passing them as command-line options to the startup command for the JVM (-Dsun.net.inetaddr.ttl=30)

Sample Code to determine values (especially useful for determining default values):

1
2
3
4
5
6
7
8
9
10
public class DNScacheTTL
{
  public static void main(String[] args)
   {
     System.out.println(”networkaddress.cache.ttl = 
sun.net.inetaddr.ttl =+sun.net.InetAddressCachePolicy.get());
     System.out.println(”networkaddress.cache.negative.ttl 
= sun.net.inetaddr.negative.ttl =+sun.net.InetAddressCachePolicy.getNegative());
   }
}

The above code will throw warnings when compiled with certain JVMs because it uses Sun’s proprietary methods. You may ignore these warnings.

Examples: Code above inserted in DNSCacheTTL.java, compiled and then executed as follows on Sun JVM 1.6:

java DNScacheTTL

networkaddress.cache.ttl = sun.net.inetaddr.ttl = 30

networkaddress.cache.negative.ttl = sun.net.inetaddr.negative.ttl = 10


java -Dsun.net.inetaddr.ttl=100 DNScacheTTL

networkaddress.cache.ttl = sun.net.inetaddr.ttl = 100

networkaddress.cache.negative.ttl = sun.net.inetaddr.negative.ttl = 10


 

Solution:

 

The WebLogic Servers were restarted to clear the java.net.InetAddress caches. Consequently, the messaging bridges looked up the new domain name mapping for the remote server and connected to its target destination successfully.

Root Cause:

 

Domain Name lookup caching in the JVM was configured with default parameters. Hence, old domain name < –- > IP address mapping was cached forever.

 

Tips for setting caching parameters:

 

It’s easy to be tempted to set the networkaddress.cache.ttl value to 0 to turn off caching. However, note that Sun wants you to cache for two reasons – (1) Prevent DNS spoofing and (2) Improve performance. DNS Spoofing will not be an issue if the systems involved communicate over a secure network. So, assuming your systems are part of a secure network, trade-offs must be made between improved performance and service impact (when remote interfaces change – should be a rare occurrence) with caching. If your application is time-critical and cannot even withstand a latency/unavailability of a couple of minutes (e.g. synchronous call with user waiting for response), then turn off caching. However, if your application can tolerate delays by a few minutes or more (e.g. asynchronous message transfers), then you may set the value of networkaddress.cache.ttl to something like 300 (5 minutes). In such a scenario, if a remote system changes its domain name < – > IP address mapping, then your application will connect to the new IP address after 5 minutes, in the worst case. This also ensures that under normal circumstances, if your application makes several connections to the remote server within a 5 minute period, it will lookup the domain only once (assuming successful lookup) in 5 minutes, thereby improving performance. Refer to the table below for some example scenarios. So, hope you get the idea and set networkaddress.cache.ttl suitably. For almost all purposes, the default value of 10 seconds for networkaddress.cache.negative.ttl will suffice.

 

Application Latency Requirement Recommended value for networkaddress.cache.ttl
Low-latency/time-critical 0 (no caching)
Moderate Latency (tolerance of a few minutes) 300 (or depending on latency tolerance)

While considering the above guidelines for setting JVM caching parameters, you must also take into account DNS caching by the Operating System and network devices.

NOTE:

(1) The solution above describes a successful problem-solving experience and may not be applicable to other problems with similar symptoms.

(2) Your rating of this post will be much appreciated. Also, feel free to leave comments.

 

VN:F [1.6.5_908]
Rating: +9 (from 11 votes)

Problem:

The WebLogic Administration Server does not start with the following exception in stdout/stderr logs:

The WebLogic Server did not start up properly.
java.io.InvalidClassException: javax.management.MBeanAttributeInfo;

local class incompatible: stream classdesc serialVersionUID =7043852349133450673, local class serialVersionUID = 3875704819898565848
at java.io.ObjectStreamClass.initNonProxy
(Ljava.io.ObjectStreamClass;Ljava.lang.Class;Ljava.lang.ClassNotFoundException;

Ljava.io.ObjectStreamClass;)V(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Z)
.
.
.
.

 

Background & Analysis:

This problem occurred on an environment where WebLogic Server 8.1 was used with JRockit 1.5.

 

Solution:

Use JRockit/Hotspot 1.4.x with WebLogic 8.1

Root Cause:

WebLogic 8.1 is incompatible with JRockit/Hotspot JVM 1.5 and later versions.

 

NOTE:
(1) The solution above describes a successful problem-solving experience and may not be applicable to other problems with similar symptoms.
(2) Your rating of this post will be much appreciated. Also, feel free to leave comments.

 

VN:F [1.6.5_908]
Rating: 0 (from 0 votes)

Problem:

The WebLogic Administration Server does not start with the following exception in stdout logs:

<Critical> <WebLogicServer> <BEA-000362> <Server failed. Reason: There are 1 nested errors: weblogic.management.ManagementException: [Management:141266]Parsing Failure in config.xml: javax.xml.namespace.QName; local class incompatible: stream classdesc serialVersionUID = -9120448469326609940, local class serialVersionUID = 4418622981286495151

 

Background & Analysis:

This is a known problem for Oracle. The problem is actually with the JRockit 1.5.0_07 version (and later) used with WebLogic Server 9.1 or 9.2, in which there is an incompatible change of the serialVersionUID of the javax.xml.namespace.QName class. Refer Known Problems.

 

Solution:

There are two solutions to eliminate the error. You may use any one of the following:

SOLUTION 1: Set a system property as follows:

com.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0

SOLUTION 2: Add the following option to the java command in the script you use to start WebLogic Server:

-Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0

 

Root Cause:

Incompatibility of JRockit 1.5.0_07 (or later) with WebLogic Server 9.1/9.2

 

NOTE:
(1) The solution above describes a successful problem-solving experience and may not be applicable to other problems with similar symptoms.
(2) Your rating of this post will be much appreciated. Also, feel free to leave comments.

 

VN:F [1.6.5_908]
Rating: +6 (from 6 votes)

Problem:

Several occurrences of the following seen in the WebLogic Server 9.2 MP2 access logs:

“HEAD /bea_wls_internal/WLDummyInitJVMIDs HTTP/1.0" 404 1214

 

Background & Analysis:

If the WebLogic proxy plugin is used in a Web Server to load balance requests across WebLogic servers in a  cluster, then the plugin sends a dummy request to the cluster in order to retrieve the cluster server list. The cluster server list is present in the HTTP Response Header and not in the body. So, it does not matter if a non-existent web application is requested. That’s why a request is made to a non-existent web application/context called /bea_wls_internal/WLDummyInitJVMIDs, thereby resulting in a HTTP 404 error, even though the objective of obtaining the cluster server list is achieved. Well, Oracle could have handled this functionality better by internally deploying a dummy application to prevent these HTTP 404 errors

 

Solution:

There are two solutions to get rid of the HTTP 404 errors:

SOLUTION 1: Configure a default web application which does nothing (dummy).

SOLUTION 2: Obtain patch CR271671 (for 9.2 MP2) from Oracle to suppress HTTP 404 errors in access logs if you do not wish to configure a default web application. If you’re using another version of WebLogic Server, request Oracle for a suitable patch similar to CR271671.

 

Root Cause:

/bea_wls_internal/WLDummyInitJVMIDs is a non-existent web application since the WebLogic proxy plugin obtains required information from HTTP Response Headers alone.

 

NOTE:
(1) The solution above describes a successful problem-solving experience and may not be applicable to other problems with similar symptoms.
(2) Your rating of this post will be much appreciated. Also, feel free to leave comments.

 

VN:F [1.6.5_908]
Rating: +5 (from 5 votes)

WLjvm will display details comprising the JVM version and options for a specified WebLogic Server. The displayed details are well-formatted and easy to read. The only parameter that needs to be passed to WLjvm is the name of the WebLogic Server whose JVM details you wish to obtain.

Why WLjvm?: At times, it’s required to know a few details about the WebLogic Server JVMs, like their versions and startup options. Well, you could use "ps" on Linux or "/usr/ucb/ps" or "pargs" on Solaris to give you this information. However, these UNIX utilities display information in a format which isn’t too pleasing to the eye (although "pargs" displays well-formatted details, you still need to use "ps" to determine the PID to use "pargs"). My intention is not to make WLjvm an overkill or make people lazy. It’s just that I observed many folks wanting to access JVM details quite regularly and so used a very simple script (and an alias to call it) to automate this task.

System Requirements:  Solaris/Linux, Korn Shell (/bin/ksh), WebLogic Server (all versions to date)

Download WLjvm v1.0     Download WLjvm v1.0 ReadMe

VN:F [1.6.5_908]
Rating: 0 (from 0 votes)

WLfdmon is a simple korn shell script that will enable you monitor open file descriptors used by WebLogic Servers. The salient features of WLfdmon are given below:

  • Can be run in interactive and non-interactive modes
  • Configuration-driven
  • Generates statistics on open fd usage of WebLogic Servers. These Statistics can be used for trend analysis.
  • Logs alarms when open fd threshold is breached. Alarms can notify Support Staff of abnormal application/server behaviour.
  • Logs lsof output when open fd threshold is breached. This output will be useful for root cause analysis of excessive open fd usage.
  • Housekeeping for data and lsof output files

 

System Requirements:  Solaris/Linux, Korn Shell (/bin/ksh), lsof

 

Download WLfdmon v1.0     Download WLfdmon v1.0 ReadMe

 

NOTE:

(1) WLfdmon has been scanned and is safe to download.

(2) WLfdmon has been tested. If you wish to use WLfdmon, I recommend you also test it before deploying it on a Production system.

(3) Your rating of this post/software will be greatly appreciated. Also, feel free to leave comments.

VN:F [1.6.5_908]
Rating: 0 (from 0 votes)

Watch your Plastics!

A few months ago, when I was researching baby bottles for my daughter, I came across several articles on the use of Bisphenol A in the plastics used to make baby bottles and its harmful effects on health. More research led to me alter my lifestyle and become more environmentally friendly. So, based on the various articles I’ve read, a brief description of what you need to know about BPA and how to avoid it is given below.

(1) What is BPA?

Bisphenol A (BPA) is a chemical compound invented by Russian chemist  Aleksandr P. Dianin in 1891. The first reported synthesis of BPA was from Thomas Zincke of the University of Marburg, Germany. The suffix ‘A’ symbolizes Acetone as BPA is prepared by the condensation of acetone with two equivalents of phenol.

(2) What is BPA used for?

In 1936, Dr. Pierre Castan (Switzerland) and Dr. S.O. Greenlee (US) first synthesized BPA-based epoxy resins. Epoxy resins are widely used in adhesives, can linings, composite materials like those using carbon fibre, fibreglass, etc.

In 1953, Dr. Hermann Schnell of Bayer in Germany and Dr. Dan Fox of General Electric in the United States independently developed manufacturing processes for a new plastic material, polycarbonate, using BPA as the starting material. Due to its properties of optical clarity, shatter resistance and high heat resistance, polycarbonate soon found its way into our everyday lives as the primary constituent material in drinking bottles, optical discs, lenses, automobile headlamps, lab equipment, etc.

 

(3) Why do I need to bother about BPA?

As described above, BPA has invaded our everyday lives via the use of polycarbonates and epoxy resins. Several studies on BPA have indicated that at certain levels of consumption, it could cause endocrine disruption (interference with the normal functioning of hormones generated by the endocrine system), heart disease, diabetes and cancer. Some studies have also linked BPA to obesity and neurotoxicity.

BPA has been known to leach from the plastic lining of canned foods and also from polycarbonate plastics when subjected to washing with abrasive detergents, acidic liquids and high-temperature liquids.

Although there have been some reports that BPA used in polycarbonates and epoxy resins for common consumer products does not pose a health risk, there are two clearly divided opinions on the harmful effects on BPA with each one backed up by various studies, Canada has banned the import, sale and marketing of polycarbonate baby bottles and companies like Wal-Mart, Nalgene, Camelbak and Toys-R-Us have switched to BPA-free bottles and plastic goods. Surely then, the safest bet is to stay away from BPA.

 

(4) How do I identify which products have BPA?

BPA is predominantly used in plastics, being a constituent material of polycarbonate. First and foremost, you need to understand the various groups of plastics. Read this article to understand how to decipher the Plastic Identification Code(PIC). Plastic products with PIC #3 (PVC) and #7 (other) are typically associated with BPA. Since PIC #7 is a catch-all for all types of plastics other than those classified within PIC #1 to #6, plastics that do not contain BPA could also be identified with PIC #7. For example, leading water bottle manufacturers CamelBak and Nalgene use Eastman Tritan (a copolyester plastic that does not contain BPA) and their bottles are tagged with PIC #7.

Other than using the PIC to determine whether your plastic product is BPA-free, a safe bet is to choose plastic products which bear a BPA-Free logo. The safest and best option to stay away from BPA is to replace your plastic product with good quality stainless steel, wherever possible.

 

(5) How do I avoid BPA?

Given the widespread use of BPA, it’s unlikely that you can completely stay away from every product that contains the chemical. However, you can significantly reduce, if not eliminate the consumption of BPA. Here are some steps you can take to avoid the harmful effects of BPA:

  • Use either BPA-free or stainless steel reusable bottles for drinking liquids. Do not reuse mineral water bottles.
  • Do not heat food in plastic containers (irrespective of the PIC) in a microwave.
  • Do not use harsh detergents or the dishwasher to wash plastic containers.
  • Do not store acidic liquids and foods (eg. orange juice, meat marinades) in plastic containers.
  • Avoid using canned food/drink as much as possible.

 

What I have done to avoid BPA since I became aware of the controversy surrounding it:

First and foremost, I replaced my daughter’s feeding bottles with BPA-free versions from ASDA. Now, there is an increasing number of manufacturers making BPA-free baby bottles. Some examples are Tommee Tippee, Born Free and Philips AVENT.

I then ordered a CamelBak Better Bottle (BPA-Free) for use as a drinking water bottle at office and when it arrived, I observed that it had PIC #7, but no BPA-Free logo. So, I returned the CamelBak bottle. After a little bit of googling, I came across the stainless steel Klean Kanteen. I purchased two Klean Kanteens, an 18 oz Kanteen for office and a 40 oz Kanteen for use at home. I love the Klean Kanteens and no longer use any plastics at home or office for consumption of drinking water. Although the Klean Kanteen is an expensive purchase, it will definitely be cheaper in the long run and will contribute towards a clean, green environment through reuse. Before the arrival of my Klean Kanteen, I bought 500 ml mineral water bottles at least twice a week and after consumption, I chucked the bottles away into the recycling bin. Now, with my reusable Klean Kanteen, not only do I save money by not purchasing mineral water, I also ensure that I reduce my burden on recycling, even if in a small way.

 

References:

1.    http://en.wikipedia.org/wiki/Bisphenol_A
2.    http://www.bisphenolafree.org/
3.    http://www.bisphenol-a.org/pdf/DiscoveryandUseOctober2002.pdf
4.    http://www.chemeurope.com/news/e/81778/
5.    http://www.kleankanteen.com/about/bpa.html

VN:F [1.6.5_908]
Rating: -1 (from 1 vote)