SSL warning: contains unauthenticated content

One of the major annoyances of SSL is getting it to work when bouncing between http and https access with the same resources (e.g. stylesheets, images, etc). The most common of issues is most likely to be "contains unauthenticated content " warning (via FF). Some of the "symptoms" may include embedded content (image, flash movies, etc.) not loading.

Below is a quick and dirty run-down list on how to eliminate this warning, and stop giving your potential clients cyber heart attacks when they see this huge red exclamation mark.

1. Do not use any absolute URLs in code. Period. Load files/link with relative path only. In other words, when in https there shouldn't be any http reference in html for any loads (script/image/file/etc). Get firebug addon for firefox that will help you inspect your source code.

2. modify htaccess rule to exclude .css, js, image(e.g. gif,png, jpe?g) and other types (e.g. swf) from being redirected for objects that you "share" between http and https. When page loads it should grab files under correct protocol.

3. Most hosts nowadays offer some type of hotlink protection. If you followed suggestions above and still having warning issues, turn off hotlink protection.

VoilĂ ! You have a sweet clean page with a nice lock under https.
you're welcome.


ATM-T1 4T1-IMA not recognized

Writing this one down cuz it took me *FOREVER* to figure it out. I can't be the only one working with old junk. In my case Cisco 2600XM and ATM-T1 4T1-MA network module.

Card is not recognized. Unable to configure ATM and IMA interface.

Visual verify:
Right after IOS load, EN light goes off -- adapter disabled.

Sys verify:
Get following in show diag
Slot 1:
Unknown (type 188) Port adapter
Port adapter is disabled
Port adapter insertion time unknown
EEPROM contents at hardware discovery:
Hardware Revision : 1.0
Top Assy. Part Number : 800-03974-03
Board Revision : D0
Deviation Number : 0-0
Fab Version : 05
PCB Serial Number : JAD________
RMA Test History : 00
RMA Number : 0-0-0-0
RMA History : 00
Product (FRU) Number : NM-ATM-4T1=
EEPROM format version 4
EEPROM contents (hex):
0x00: 04 FF 40 00 BC 41 01 00 C0 46 03 20 00 0F 86 03
0x10: 42 44 30 80 00 00 00 00 02 05 C1 8B 4A 41 44 30
0x20: 37 32 37 30 34 46 31 03 00 81 00 00 00 00 04 00

Any Cisco IOS passed version 12.2 DOES NOT support the adapter (would be helpful if documentation reflected that). To fix go to cisco, select router model you have (2651XM in my case) download earliest version of IOS 12.2


1. Your router must be connected via console and fastEthernet with IP configured.
2. Download TFTPD32 to client WS. Extract, copy cisco IOS file to root directory. Run program (tftpd32.exe) in server mode.
3. Connect client WS to console port of the router via hyperTerminal. Switch to enable mode.
4. List files currently in flash: dir flash:
5. Make back up of your current IOS (not covered here)
6. See if you have enough room to hold on to your original IOS by running show file system command
7. Verify that client WS with TFTP server running has IP connectivity to the router (do ping from client to the router's ethernet adapter)
8. Copy downloaded older version of cisco IOS to the router. From hyperTerminal session type in the following: copy tftp: flash:
9. Enter address of client WS when prompted

10. Enter file name of the downloaded OS when prompted and verify as destination file. Hit 'y' enter to confirm copy.
11. If you have enough free space, select 'n' to 'erase flash' prompt. If you're out of space, select 'y', but make sure you've got back up of original OS. I can't emphasize this enough. Also, may want to do backup of show run as config may change.
12. Verify image file loaded successfully in flash: dir flash:
13. Verify file's integrity: verify flash:IOS_FILE_NAME.bin
14. Verify config register:
#config terminal
#config-register 0x2102
15. Set newly loaded IOS to boot
#show run | include boot
#configure terminal
(config)no boot system
(config)boot system flash:IOS_FILE_NAME.bin
16. Verify by running show run | include boot
Newly loaded IOS file name should show.
17. Commit to memory and reload
#write memory
18. Upon reload run #show version. You should see 12.2 or something along those lines. 4T1-IMA lights should also nicely stay on to indicate that adapter has been successfully recognized. Now you can configure your ATM interface.

I'm not responsible for any non-bootable routers. It is YOUR responsibility to do back up if you choose to follow these instructions. If your router is non-bootable, I cannot help you. G'luck.


"Invalid Application" error for Gmail on mobile phones

Unless u've been living under a rock and don't use a smartphone or a blackberry, you already know about all the bells and whistles of Gmail 2 for mobile. Yay to google (: Yet another reason to fall in luv. Read up more here.

However, with some of the mobile phones (Sony Ericsson C905 in my case), when attempting to install mobile gmail app, "Invalid Application" error is received.

To work around this problem, download the jar file here to your PC and transfer it to your phone or type (case sensitive) m.google.com/app/v2.0.6/L1/gmail-g.jar in your mobile browser, and install gmail in your mobile applications directory when prompted.

If you have an older phone which does not meet memory requirement for the new version, you can download 1.x version of the app here: m.google.com/app/v1.1.0/L1/gmail-g.jar or here: m.google.com/app/v1.5.0/L1/gmail-g.jar


Installing Tomcat 6.x on CentOS 5

UPDATE: This post was revised to work with java6u10 and now includes instructions for automated startup config.
FYI: if you used this post before 11/06, there have been some major changes to the start up script. This new version is the most basic and easiest. ty.

This is a quick and dirty guide for installing Apache Tomcat 6.0.18 on CentOS5. It is based on detailed instructions for CentOS 4 and tomcat 6.0.13 here. If you get no luck, please check out this link for comprehensive explanation and adopt it to your platform.
Install pre-requisite
1. Download java JDK 6 Update 10 and Java Runtime Environment (JRE) 6 Update 10 bin (NOT RPM)

2. Open terminal, su to root and move downloaded files to /root directory
$ su root
# mv [.....]
3. Create java environment
# mkdir /usr/java
# cd /usr/java
4. Execute downloaded jdk and jre bins.
# sh /root/jre-6u10-linux-i586.bin
# sh /root/jdk-6u10-linux-i586.bin
5. verify install
# ls
you should see that your /usr/java directory now contains jdk1.6.0_10 and jre1.6.0_10 directories
Install overview
1. Download and extract Apache Ant (apache-ant-1.7.1-bin.tar.gz) to /usr/share
# cd /usr/share
# tar -xzf apache-ant-1.7.1-bin.tar.gz
2. Download and extract Apache Tomcat (apache-tomcat-6.0.18.tar.gz) to /usr/share
# tar -xzf apache-tomcat-6.0.18.tar.gz
3. Enable ant link
# ln -s /usr/share/apache-ant-1.7.1/bin/ant /usr/bin
4. Set up JAVA_HOME $env in catalina.sh
# cd /usr/share/apache-tomcat-6.0.18/bin
# vi catalina.sh
5. After the first line, add following
6. Test config with Tomcat
# cd /usr/share/apache-tomcat-6.0.18/bin
# ./startup.sh
7. Check logs for errors
# less /usr/share/apache-tomcat-6.0.18/logs/catalina.out
8. Fix errors if any. Go to http://localhost:8080 for Tomcat's web interface.
Automate start up
1. Create script in /etc/init.d for automated start up/shutdown
# cd /etc/init.d
# vi tomcat

2. Place following in the file
# chkconfig: 234 20 80
# description: Tomcat Server basic start/shutdown script
# processname: tomcat
export JAVA_HOME
start() {
echo -n "Starting tomcat: "
echo "done."
stop() {
echo -n "Shutting down tomcat: "
echo "done."
case "$1" in
sleep 10
echo "Usage: $0 {start|stop|restart}"
exit 0

2. Change permissions
# chmod 755 tomcat
3. Add script to system services
# chkconfig --add tomcat
4. Verify modifications (this script uses levels 2-4)
# chkconfig --level 234 tomcat on
# chkconfig --list tomcat
you should see that service using levels 2, 3 and 4:
tomcat 0:off 1:off 2:on 3:on 4:on 5:off 6:off
5. Test script start up/shutdown
# service tomcat start
# service tomcat stop
So, at this point, tomcat service will start automatically upon reboot. G'luck (:


Installing Java (Sun JDK 1.6.0) on CentOS 5

This is a quick and dirty guide to installing java on CentOS5.

NOTE: do not log in as root to perform this installation, but you will need credentials with su command. During install, substitute 'user_name' with your login handle.

1. Open terminal

2. Set up working directories (in this example it's ~/rpmbuild)

$ mkdir -p ~/rpmbuild/{SOURCES,SRPMS,SPECS,RPMS,tmp,BUILD}

3. Create ~/.rpmmacros

$ echo "%_topdir /home/user_name/rpmbuild" >> .rpmmacros
$ echo "%_tmppath %{_topdir}/tmp" >> .rpmmacros

4. Log in as root and use YUM to install following packages
$ su root
# yum install -y rpm-build gcc gcc-c++ redhat-rpm-config
# yum -y install jpackage-utils
# su user_name


1. Download JDK 1.6 update 7 self-extracting RPM version (jdk-6u7-linux-i586.bin) from Sun to ~/rpmbuild/SOURCES/

2. Download and build java-1.6.0-sun- package
$ cd ~/rpmbuild
$ curl -L -O http://mirrors.dotsrc.org/jpackage/1.7/generic/SRPMS.non-free/java-1.6.0-sun-
$ rpmbuild --rebuild java-1.6.0-sun-
don't get freaked out by the errors or that it could take a little while, it's ok. Verify that RPMS directory in rpmbuild contains i586 directory with rpms.

3. su to root and migrate rpms to local yum repository

# yum localinstall ~user_name/rpmbuild/RPMS/i586/java-1.6.0-sun-
NOTE: if you get "NOT SIGNED" issue (and most likely you will), resolve by the following work-around
- install X11 library to resolve libXP.so.6 dependency
# yum install libXp-devel.i386
- then plain old rpm
# rpm -Uvh ~user_name/rpmbuild/RPMS/i586/java-1.6.0-sun-

4. Login as root to configure alternatives system to use new JDK
[root@blah]# alternatives --config java

5. Verify install
$ java -version
it should display java version "1.6.0_07 ....."


A gift of a gift makes a perfect... gift

Whether it be a birthday, wedding or a holiday, gifting can present itself to be a serious dilemma. In some ways, it is a formality or an obligation, but also challenges creativity. Below are some ideas on how to get that perfect little something in lieu of a traditional gift.

My favorite source for all my gifts is globalgiving.org network. The company itself is admirable as their objective is to put collected donations to a good use, whether it be helping a community in crisis or having a positive effect on a challenged economy of the country in whole. No project is too big or small, and the best part is GlobalGiving gift card is 100% biodegradable. 100% tax-deductible. 100% guaranteed. Chances are they have a project that is a perfect fit. It can be selected either via topic (such as disaster recovery, health, environment, etc). Or simply search for a cause by the region. Even project selection wizard is available to allow you to make the most fitting choice.

Justgive.org is another creative way to find a perfect gift. Their directory serves as a hub for reputable donation organizations. The company offers a tad stronger focus on domestic and local charities and non-profit organizations, which allows for a more comprehensive selection of a project in your area.

Heifer International has a program that is catching attention world wide. As a donor you can extend your support, but not in a traditional way that one would expect. In their effort to fight hunger and poverty as well as improve the environment, the company provides actual live stock and resources to improve life style in the challenged areas. Their catalog includes items such as heifer, chicks, trees and honeybees.

I've used these companies in a past and gift recipients have always been both: surprised and pleased. Most important, it empowered us both to make a difference in the world. There are many other charity/donation hubs available with similar services, but I thought that I would highlight these three. Also, giving works both ways, and these portals can be used to create wish lists for yourself or those that you know.

Meaningful giving does not always translate to the gift certificates. For example, you can purchase a Christmas tree in a pot and replant it after the holidays. Planting a tree for an event or a person or simply supporting volunteering project in their honor will also be much appreciated.

Happy giving.


How to help a baby bird that fallen out of the nest

In the spring and early summer many birds have little babies. Sometimes things can go wrong and baby birds can fall out of their nest. What to do if you had found one? Most people don't have it in their hearts to walk passed a helpless little creature without even trying to save its life. If you had found yourself in this situation there are some serious decisions to be made and little guy's life depends on it.

First and foremost, before getting to benevolence part, be aware that there are only 3 species of birds in US that are not protected by law:
  • Common city pigeon (aka rock dove)
  • European starling
  • House sparrow (aka English sparrow)
That still does not mean that you can keep them as pets. Further legal information can be found here. State, county and town laws may impose additional restrictions. So, the general rule of thumb is: if you didn't get it via proper retail channels, you should not keep it. Most people are simply not equipped to give the round the clock care to wild baby birds. Chances of its survival are minimal if you are unexperienced. Also understand that birds raised in captivity lack survival skills only learned in the wild, so releasing them eventually is simply not an option.

You must figure out a course of action and you must be quick about it. Avoid contact with the bird unless necessary. Keep everyone, especially children and pets away.

Confirm that baby bird is indeed in need of help. It is possible that it is a fledgling. These babies have developed feathers, and still in care of their parents, just on the ground not in their nest until they learn how to fly . If such is the case, secure the area from disturbance the best you know how, and just let it be. The nature will take its course. However, if the baby is a nestling it will need help. Nestling have underdeveloped, or very few if any feathers and tend to have a lot of yellow on the corners of their beaks.

Check if the bird is injured:
If injury is serious the humane course of action will be euthanasia. Contact animal control or animal hospital immediately. Each circumstance is different, so not everyone should take matters into their own hands.

If nestling's injuries are very minor or none proceed with the following course of action:

  • Do not call the police, fire department or animal control. Abandoned baby bird is an emergency, but not the kind those departments take care of.
  • Wild bird parents will accept the young back in their nest with human scent on it. Further, most parent birds will "adopt" the young, as long as they're from the same species. Your first course of action should be to locate the nest the bird fell out of. Be mindful and leave nothing but footprints when looking for the nest. By disturbing the environment you may risk scarring off the parent birds. If you had found the nest, be quick about putting the baby back. If you located it, but can't reach it, improvise by making your own basket nest (make sure it has drainage for accumulating water) and hang it as close as possible to the nest. Parents will find their baby. DO NOT hang around as it will scare off the parents. Observe from a far distance and be discreet. If bird is abandoned for more than 5-7 hours, proceed on to the instruction below.
  • If you're unable to locate the nest or bird has been abandoned, you have to temporarily house the baby bird until you find the placement. They have to be kept in a secure warm and quiet place with no bright light. Place a towel in a box and line it with tissues or cotton balls. Baby birds are surprisingly mobile, so make sure they cannot crawl out of the "nest" for their own safety.
  • Avoid disturbing the bird, but you'll have to feed it every couple of hours. Do not feed it pure water, fruit or any other processed foods such as bread. Take dry cat or dog food (hard boiled egg works too), soak it in a water, roll it into tiny pieces and carefully feed it to the bird. Worms, maggots or tiny bugs are ideal of course, but do not feed it things such as canned pet food as it will upset the bird's stomach. Mixing water with food will keep the baby bird hydrated.
  • Once the bird is stabilized your next step is to find placement. The only appropriate place for a wild baby bird is wildlife rehabilitation center. If you're unsure if there's one in your area, call your local animal hospital, HSUS local center or your State Wildlife Agency for a reference. You can also locate a rehabilitation center in online directory here or here.
  • Admit the baby bird to the rehabilitation center as soon as possible. The sooner you will do it, the greater chances it has for survival. Please make a donation to the center when giving the bird. Your support ensures that they help the little guy and many others like him.
Starling the lucky

It's 1:30AM and I'm awoken by the high-pitched noise I hardly think I've heard before. Looking out of my window I see one of the street cats hanging over something. Flashlight, bath robe and 5 minutes later I hold a baby-starling-bird that could have been cat's dinner. As pissed off cat gives me the death glares, I carry the bird inside for overnight stay.

At the break of dawn all attempts were made to find the nest. There was no luck. Starling baby ate really well and rested before the long drive to the new home in the morning. I'm happy to report that now he's joined other orphan birds in Raptor Trust Rehabilitation Center. Please check out their website, and if possible visit or extend donation support. These people are truly wonderful and do so much to preserve precious wildlife resources in New Jersey area.