Today I read an article about Airnergy, a product developed by RCA to recharge the portable device using Wi-Fi signal. I think the idea is pretty interesting because wireless power(not battery power) is a main research area in the next 20 years.

Here is the link to the article:
RCA Airnergy claims to charge gadgets using ambient WiFi signals

I think the comment from Gruph Norgle is pretty interesting:

In the EU the maximum legal Wifi transmission power is 100 milliwatts, however, on average 802.11 devices transmit at 50mw. Now in accordance with the inverse square law, at a distance of 5 meters, the power is reduced to 1 / (5^2) * 50mw = 2mw. Two milliwatts at 5 meters. Assuming they have a respectable electrodynamic induction efficiency of 75%, they will be able to convert 75% of that 2 milliwatts back into electricity: 1.5 milliwatts.

It takes 50 times that to power a single LED. This means that if their internal battery is 3 volts, 3000mAh it will take about 5000 hours to charge it to full capacity.

So, how long does an iPhone battery(3.7V, 1400mAh) get fully charged from zero?

Required power = 3.7V * 1400mAh = 5.18Wh
Supplied power = 1.5mW = 0.0015W
Hour to get fully charged = 5.18 /0.0015 = 3453.33 hours = 4.72 months

4.72 months??!!

–Derrick

Our sponsors:

Couple months ago, I published an article about Ruby On Rails. I was wrong.

The idea of Ruby On Rails is really good. You can create a very simple database-driven web application (i.e., User can add, browse, remove and search records) in less than half an hour. There is no way to do something similar in such a short time using other programming languages. However – perhaps this is the tradition of the Rails development team, it comes with surprise (“Rails Surprise”) every time after upgrading the Ruby gems component. They either make your Rails application couldn’t start, or some features in your apps are not functioning after the upgrade.

What kind of people should stick with Ruby On Rails?

  • Someone is big fan of Ruby/Gems/Rails.
  • Someone has plenty of spare time.
  • Someone likes to sharpen his/her debugging skill – To debug the backward incompatibility mess introduced by the Ruby/Gems/Rails core development team.
  • Someone is patient and is willing to spend number of hours(could be days) to look for workaround.

I am neither. I think I already have enough “Rails Surprise”. And I will make my own web application framework from now on (The code name is called ICEPIZZA by the way). It will be simple, elegant and backward compatible.

–Derrick

Our sponsors:

I am thinking to get a smart phone and I am undecided whether I should get an iPhone or Google’s Nexus One. In general, I think Apple’s product is designed with fashion in mind while Google’s product is designed toward to programmers. I am okay with either one.

Today I read an article from Harvard Business Review. The author mentioned a feature that is missing on Google’s Nexus One. I think it is pretty important and it may change my mind to go with iPhone.

Here is the link.

Google’s Nexus One: Can Openness Win?

Our sponsors:

After upgrading the Tokyo Cabinet on my FreeBSD 8 system, I could not start Tokyo Cabinet:

ttserver
/libexec/ld-elf.so.1: Shared object "libtokyocabinet.so.8" not found, required by "ttserver"

After some investigations, I solved the problem.

1. First, go to the library directory. In my case, it is /usr/local/lib.

cd /usr/local/lib

2. Display all the libtokyocabinet.so:

ls libtokyocabinet.so*

which returns:

lrwxr-xr-x  1 root  wheel    24B Jan  9 20:17 libtokyocabinet.so -> libtokyocabinet.so.9.4.0
lrwxr-xr-x  1 root  wheel    24B Jan  9 20:17 libtokyocabinet.so.9 -> libtokyocabinet.so.9.4.0
-rwxr-xr-x  1 root  wheel   778K Jan  9 20:17 libtokyocabinet.so.9.4.0

So the solution to this problem is pretty obvious. The application is looking for libtokyocabinet.so.8 but a newer version of this library is available. A soft-link is good enough to solve this problem:

sudo ln -s libtokyocabinet.so libtokyocabinet.so.8

Here is the expected result:

ls libtokyocabinet.so*
lrwxr-xr-x  1 root  wheel    24B Jan  9 20:17 libtokyocabinet.so -> libtokyocabinet.so.9.4.0
lrwxr-xr-x  1 root  wheel    18B Jan  9 20:26 libtokyocabinet.so.8 -> libtokyocabinet.so
lrwxr-xr-x  1 root  wheel    24B Jan  9 20:17 libtokyocabinet.so.9 -> libtokyocabinet.so.9.4.0
-rwxr-xr-x  1 root  wheel   778K Jan  9 20:17 libtokyocabinet.so.9.4.0

Now I run the Tokyo Cabinet again, and the problem is gone!

ttserver
2010-01-09T20:26:12-06:00       SYSTEM  --------- logging started [13244] --------
2010-01-09T20:26:12-06:00       SYSTEM  server configuration: host=(any) port=1978
2010-01-09T20:26:12-06:00       SYSTEM  opening the database: *
2010-01-09T20:26:12-06:00       SYSTEM  service started: 13244
2010-01-09T20:26:12-06:00       INFO    timer thread 1 started
2010-01-09T20:26:12-06:00       INFO    worker thread 1 started
2010-01-09T20:26:12-06:00       INFO    worker thread 2 started
2010-01-09T20:26:12-06:00       INFO    worker thread 3 started
2010-01-09T20:26:12-06:00       INFO    worker thread 4 started
2010-01-09T20:26:12-06:00       INFO    worker thread 5 started
2010-01-09T20:26:12-06:00       INFO    worker thread 6 started
2010-01-09T20:26:12-06:00       INFO    worker thread 7 started
2010-01-09T20:26:12-06:00       INFO    worker thread 8 started
2010-01-09T20:26:12-06:00       SYSTEM  listening started

Our sponsors:

I was having trouble to update my Fedora Linux system by running sudo yum update.

sudo yum update
Loaded plugins: presto, refresh-packagekit
Error: Cannot retrieve repository metadata (repomd.xml) for repository: fedora.
Please verify its path and try again

sometimes I see different sets of error:

http://download.fedoraproject.org/pu...ta/repomd.xml: [Errno 14] PYCURL ERROR 6 - ""

or

http://download.fedoraproject.org/pu...ta/repomd.xml: [Errno 14] PYCURL ERROR 7 - ""

After searching these error messages on Google, I found tons of the workaround methods. Unfortunately, none of them works! Finally, I came up a way to fix this problem.

The reason why you see this error message because your system could not connect to the main Fedora server(At the time of writing this blog, fedoraproject.org has been downed for at least 4 days.), so that your computer is not redirected to any Fedora mirror servers. The easiest way to fix this problem is by specifying a mirror server in your yum repository configuration file.

First, let’s find a mirror that is closed to your location:

Fedora Mirror (Fedoraproject.org)

or

Google Cache

If you have any trouble to access the information, here is a copy of the list:

North America

ftp://limestone.uoregon.edu/fedora/extras
http://limestone.uoregon.edu/fedora/extras
ftp://fedora.bu.edu/extras
http://mirrors.kernel.org/fedora/extras
ftp://mirrors.kernel.org/fedora/extras
rsync://mirrors.kernel.org/fedora/extras
ftp://ftp.muug.mb.ca/pub/fedora/linux/extras/
http://www.muug.mb.ca/pub/fedora/linux/extras/
rsync://rsync.muug.mb.ca/fedora-linux-extras/
http://mirror.hiwaay.net/redhat/fedora/linux/extras/
ftp://mirror.hiwaay.net/redhat/fedora/linux/extras/
rsync://mirror.hiwaay.net/fedora-linux-extras/
ftp://mirror.phy.olemiss.edu/fedora/extras/
http://mirror.phy.olemiss.edu/mirror/fedora/extras/
http://fedora.mirrors.tds.net/pub/fedora-core-extras
ftp://fedora.mirrors.tds.net/pub/fedora-core-extras
rsync://fedora.mirrors.tds.net/fedora-core-extras
http://mirror.cpsc.ucalgary.ca/mirror/fedora/linux/extras/
ftp://mirror.cpsc.ucalgary.ca/mirror/fedora/linux/extras/
rsync://mirror.cpsc.ucalgary.ca/fedora-linux-extras/
http://www.gtlib.gatech.edu/pub/fedora.redhat/linux/extras/
ftp://ftp.gtlib.gatech.edu/pub/fedora.redhat/linux/extras/
rsync://rsync.gtlib.gatech.edu/fedora-linux-extras/

Europe

http://sunsite.mff.cuni.cz/pub/fedora-extras/
ftp://sunsite.mff.cuni.cz/pub/fedora-extras/
rsync://sunsite.mff.cuni.cz/fedora/extras/
ftp://alviss.et.tudelft.nl/pub/fedora
http://ftp.lug.ro/fedora/linux/extras/
ftp://ftp.lug.ro/fedora/linux/extras/
http://ftp.uni-bayreuth.de/linux/fedora/linux/extras
ftp://ftp.uni-bayreuth.de/pub/linux/fedora/linux/extras
rsync://rsync.uni-bayreuth.de/fedora-linux-extras
http://ftp1.skynet.cz/pub/linux/fedora/extras/
ftp://ftp1.skynet.cz/pub/linux/fedora/extras/
ftp://ftp.tu-chemnitz.de/pub/linux/fedora-core-extras/
http://wftp.tu-chemnitz.de/pub/linux/fedora-core-extras/
ftp://ftp.chl.chalmers.se/pub/fedora/linux/extras/
ftp://ftp.udl.es/pub/fedora/linux/extras/
http://ftp.udl.es/pub/fedora/linux/extras/
rsync://ftp.udl.es/pub/fedora/linux/extras/
ftp://gd.tuwien.ac.at/opsys/linux/fedora/extras/
http://gd.tuwien.ac.at/opsys/linux/fedora/extras/
rsync://gd.tuwien.ac.at/opsys/linux/fedora/extras/
http://fr.rpmfind.net/linux/fedora/extras/
ftp://fr.rpmfind.net/linux/fedora/extras/
rsync://fr.rpmfind.net/linux/fedora/extras/
http://mirror.etf.bg.ac.yu/fedora/linux/extras
ftp://mirror.etf.bg.ac.yu/fedora/linux/extras
rsync://mirror.etf.bg.ac.yu/fedora/linux/extras

http://mirror2.etf.bg.ac.yu/fedora/linux/extras
ftp://mirror2.etf.bg.ac.yu/fedora/linux/extras
rsync://mirror2.etf.bg.ac.yu/fedora/linux/extras
ftp://klid.dk/fedora/linux/extras/
http://klid.dk/homeftp/fedora/linux/extras/

Russia

http://ftp.rhd.ru/pub/fedora/linux/extras/
ftp://ftp.rhd.ru/pub/fedora/linux/extras/
ftp://ftp.chg.ru/pub/Linux/fedora/linux/extras/
http://ftp.chg.ru/pub/Linux/fedora/linux/extras/
rsync://ftp.chg.ru/fedora/linux/extras/

Taiwan, Asia

http://ftp.isu.edu.tw/pub/Linux/Fedora/linux/extras/
ftp://ftp.isu.edu.tw/pub/Linux/Fedora/linux/extras/

Australia

http://planetmirror.com/pub/fedora/linux/extras/
ftp://ftp.planetmirror.com/pub/fedora/linux/extras/
rsync://rsync.planetmirror.com/fedora/linux/extras/
http://mirror.pacific.net.au/linux/fedora/linux/extras/
ftp://mirror.pacific.net.au/linux/fedora/linux/extras/

In my example, I will use the following parameters:
Mirror: http://fedora.mirrors.tds.net/
Version($releasever): 12
Architecture($basearch): x86_64

If you are not sure how to determine the version and the architecture, you can type:

cat /etc/redhat-release && uname -a

It should say something like:

Fedora release 12 (Constantine)
Linux 2.6.31.6-145.fc12.x86_64 #1 SMP Sat Nov 21 15:57:45 EST 2009 x86_64 x86_64 x86_64 GNU/Linux

Next, run the following:

sudo nano /etc/yum.repos.d/fedora.repo

and edit the following from:

[fedora]
...
baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/

[fedora-source]
baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/source/SRPMS/

to:

[fedora]
...
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
baseurl=http://fedora.mirrors.tds.net/pub/fedora/releases/12/Everything/x86_64/os/

[fedora-source]
...
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/source/SRPMS/
baseurl=http://fedora.mirrors.tds.net/pub/fedora/releases/12/Everything/source/SRPMS/

Now, let’s do something similar to another file:

sudo nano /etc/yum.repos.d/fedora-updates.repo
[updates]
...
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/$basearch/
baseurl=http://fedora.mirrors.tds.net/pub/fedora/updates/12/x86_64/

[updates-source]
...
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/$releasever/SRPMS/
baseurl=http://fedora.mirrors.tds.net/pub/fedora/updates/12/SRPMS/

Now, try to run the update again by:

sudo yum clean all
sudo yum update

It should work now. Enjoy your update!

Thoughts:

The reason why this problem happens because the Fedora server is down for at least 4 days(From 12/31 to 1/4, 2010, for four days.), and the problem is not fixed! Yes I know it is in the holiday, but it is not an excuse.

One reason why my company prefers using Fedora Linux is that it has a long history and it is backed by Red Hat. Now the quality of their service seems going down. (Their servers have gone down multiple times in December, and each down time lasted longer than a day.) I think it is probably about time for us to move to a different Linux distribution, such as Ubuntu.

Fedoraproject.org has downed.

FYI, I personally use FreeBSD for all of my server applications.

–Derrick

Our sponsors: