Friday, December 2, 2005

It is now Era of Parallel Computing!

Everything is now done in parallel! AMD and Intel are pacing to get first to the market with their dual-core, quad-core or even octa-core processors, although I believe AMD won the 64bit and dual-core in the first cycle. Xbox360 which was released a few weeks ago (and still hard to find in the stores!) also use parallel processing capabilities. Sony's PS3 even will go farther by using 8 cores [well, it may not really like 8-cores in conventional processor. See http://www.ps3land.com/ps3specs.php].

The hardwares have come! Now it is turn for sofware developers to use this parallel computing power or not. That's the biggest concern now, especially on PC world. Many developers, many of them are making business sofwares, are still thinking parallel processing is overkill for most of softwares people use in the offices or homes. To edit documents, browsing or reading/sending emails, we do not need parallel computation. That may be true. But for power home users who do video editing, transcoding media files (e.g. from WAV to MP3 or MP3 to OGG format, or DVD to DivX/MPEG4 format), or doing 3D related processing (games, vector-based applications, CAD, raytracing etc.), parallel processing is a big deal.

Programming parallel computation is not an easy task. It is very complex and mindsqueezing task. First, we have to decompose computation process/function from serial to parallel into "grains" (the smallest part of computation that cannot be decomposed anymore) and maximize independences between each grains. Then, these grains have to be distributed to each processing unit. We need also to consider communication and processing time for each processing unit, especially if we want to load-balance the task. To make the story short, it is non-easy-at-all job for software developers.

A few weeks ago I read on some magazine (forgot, may be E-Weeks or InfoWeek), Microsoft now turning its eyes into parallel computation. In one conference, Bill Gates told the forum about it. This is a totally new world for Microsoft, as this is mostly dominated by UNIX-based Operating systems (including Linux). Even the fastest supercomputer, IBM's Bluegene, runs on a custom-tailored Linux O/S.

If you are a software developer, learn parallel programming now to grab this new job opportunity! Google, Microsoft, Intel, AMD, Sun, IBM, Nanotechnology companies, research labs, BioTech/pharmaceutical companies, game studios and many other companies are looking for the talents to start coding their parallel-processing computers/system. Remember Folding@HOME or SETI? these are a few of the parallel-programming tasks you need to master.

64bit or 32bit?

Novell's SUSE has released its Linux distribution to the latest 10.0 (and 10.1 is underway in the development). At opensuse.org, I saw there is also ISO file available for Linux for 64bit processors. A few weeks ago I downloaded 5 ISO files for installation CDS from opensuse.org (and just recently converted them to a single DVD. Just follow instructions in http://www.opensuse.org/Making_a_DVD_from_CDs).

I booted up my AMD64 laptop with the DVD, but then I changed my mind. Not to upgrade my Linux now and stayed with the older version (SUSE 9.3). One of the reasons is that, my Linux partition is too small for the 64bit (I have only 12 GB out of 80GB HD of my hard drive for Linux, the rest is for WinXP). I searched the internet and found some discussions saying this 64bit requires almost double as much space as 32bit version. This is because there is /lib64 and /usr/lib64, in addition to /lib or /usr/lib, for 64bit so we can run applications with both versions. Also, 64bit files are generally larger than 32bit, because some of the processor's instructions require extra bytes to handle 64bit operations.

Sometime ago, I read on the Internet that ndiswrapper might not work in 64bit environment. But I saw there was 64bit version of it on the CD, so I believe it is now supported. This was another reason I was scared to upgrade it in the beginning. Also, NVIDIA and ATI now support 64bit version of their graphic processors. The remaining issues are minors, I guess.

What are the benefits of using 64bit system? OK, first of all, it can handle huge memory space (hundreds of terabytes, instead of just 4 GB as on 32bit version). Another thing is, theoritically it should be faster. Why, you might ask? Because the processor can transfer data as twice as much in the same duration than the 32bit system. Also, security gets a big benefit because now it can directly handle long integer computation directly down to the machine code. I recall, with 32bit environment, we need to handle large integer computation manually using some algorithms.

Anyway, this is just my hypothesis. I have not tested it yet nor benchmarked it. I will do it soon, but I need to get my Seagate's 200 GB external Hard drive first to backup all my data before doing this. Will post it here as soon as I've done it.

Saturday, October 15, 2005

Big Databases

InformationWeek last month had a column mentioning who/what companies that have the biggest database in their servers. The following is the top ten commercial databases with the gigantic size:

  1. Yahoo, 100.4 TB. Platform: Unix
  2. AT&T Lab, 93.9 TB. Platform: Unix
  3. KT IT-Group, 49.4 TB. Platform: Unix
  4. AT & T Lab, 26.7 TB. Platform: Unix
  5. LGR-Cingular, 25.2 TB, Platform: Unix
  6. Amazon.com, 24.8 TB, Platform: Linux
  7. Anonymous, 19.7 TB. Platform: Unix
  8. Unisys, 19.5 TB. Platform: Windows
  9. Amazon.com, 18.6 TB. Platform: Linux
  10. Nielsen Media, 17.7 TB. Platform: Unix
It is not wondering to see Yahoo is in the top list, because they provide 2 GB/user. If there is 20 million users in US itself, it is 2 GB * 20 million = 40,000,000 GB = 40,000 TB. So I still don't understand why it says only 100 TB.
Or, may be it is has less than 20 million users in US? Likely.

With current commodity hard disks available in the market, a 400 GB HD can be bought at around $300 (I just checked shopping.com, it actually costs less than that), so with 3 drives we could get 1.2 TB storage space with cost only $900. To get 120 TB, it costs only $90,000.

To see the full detail, see www.wintercorp.com

Thursday, October 13, 2005

Free Wi-Fi Access

Google has started beta testing of its free Wi-Fi service in a few San Francisco locations. I don't know how the access to users look like, but the big concern for us is how secure it is to people, especially when people access sensitive data (e.g. e-commerce, etc.)

Anyway, this is a good news and I would admit to say that Google is one of cool companies to work for. Kudos to Google for its initiative!

Friday, September 23, 2005

Firmwares for WRT54G

OK, now I am going to tell you about a few firmwares that crash my linksys (luckily I have revived the router, thanks to the instructions posted at http://voidmain.is-a-geek.net/redhat/wrt54g_revival.html.

The working firmware on my router is Tarifa 0003. Unfortunately, I have never been able to make it as wireless bridge (WDS), eventhough I follow the instructions from the Internet (I guess it was at www.linksysinfo.org).

Anyway, after failing to flash the nvram with another firmware, I was able to recover my router which almost become a brick. :-)

WRT54G Revival Guide

Here I just repost from http://voidmain.is-a-geek.net/redhat/wrt54g_revival.html, in case his website is down. The steps below works perfectly on my new Linksys WRT54G v4.

/* Void Main's WRT54G Tips */

{ Red Hat Tips(); } else { main(); }
» Linksys WRT54G Revival!
#include <stddisclaimer.h>

When might you use this tip?
- If you forgot to set your "boot_wait" nvram setting and uploaded a bad firmware image which caused your router not to boot (like I did)
- You failed every other instruction for reviving your router
- You like living on the edge and just wanna play

Pros: Turn your black and blue paper weight back into a working wireless router.

Cons: I suppose you could make your WRT54G even deader than it already is, although I have not actually heard of anyone who has done this. The pictures in this tip are for people who have the v1.1 hardware. It works for the 1.0 and 2.0 versions as well but the board layout is a little different in the other hardware versions. You'll just have to find your flash chip.

Tools Required: Small jewelers screwdriver (or any other small pointy metal object).

Ok, I'm convinced, let's get this baby working!!

Let us begin:

NOTE: Click on the thumbnail images in this tip to zoom in on the image.

Find a nice open area to rip this baby apart:

WRT54G v1.1

As you can see, the one I use in my example is a v1.1 router, your board layout may be different:

WRT54G v1.1 - hardware version number

Use your fingers to unscrew the antennas from the back:

WRT54G v1.1 - unscrew antennas WRT54G v1.1 - unscrew antennas

This thing just snaps together, no screws involved, so just "pop" the blue face plate off. I find the easiest way to do this is to turn the unit upside down and place your hands between the feet on the side, then push on the blue feet with your thumbs:

WRT54G v1.1 - face plate snaps off WRT54G v1.1 - remove face plate

Now the board just slips right out the black cover:

WRT54G v1.1 - remove board from case

Now locate the flash chip. On my board it is clearly labeled "Intel Flash" but I don't believe all routers are labeled like this. Click on the pictures below for a better view. You will see that at each corner of the chip is a large white number. My picture is actually upside down (you didn't think I would make this easy on you did you?). Notice at the upper right corner of the chip is the number "1", upper left is the number "24", lower left is the number "25", lower right is the number "48" (all upside down in my pictures). Between the number 1 and 24 you will see a row of 24 silver pins. On the board above the pins there is a little white line every 5 pins that should help you count.

WRT54G v1.1 - Intel flash chip WRT54G v1.1 - notice white marks every 5 pins

Now comes the fun part. Do not plug the power in just yet but plug a patch cable into one of the 4 LAN ports on your router and plug the other end into a computer (my laptop works great for this). Configure your network card on your computer with a static IP address: IP: 192.168.1.2, NETMASK: 255.255.255.0, don't need a gateway address. Now if you are in Linux just type "ping 192.168.1.1" which will start a ping running. If you are in Windows (shame on you) then I think you have to pass a "-t" param (ping -t 192.168.1.1) so it doesn't stop trying to ping after 4 pings.

Ok, now for the nitty gritty fun part. Locate pin 15 (third white mark starting from pin 1). Take your jewelers screwdriver (philips head is what I used, nice and pointy) and stick the point between pins 15 and 16 (see NOTE1). While holding the screwdriver there, plug in the power and watch your ping screen. Hopefully you will be amazed (like I was) at seeing the pings starting to succeed. Don't be so happy that you drop the screwdriver on the board and start sparks flying. Remove the screwdriver and the pings should continue:

WRT54G v1.1 - short pins 15-16

The router is now in failsafe mode and is waiting on you to tftp a firmware image to it. Find any good firmware image for your router and upload it. In linux it might go something like this:

$ cd /home/voidmain/firmware
$ ls
OpenWrt_b3.bin
$ tftp 192.168.1.1
tftp> bin
tftp> put OpenWrt_b3.bin

If you have a command line version of tftp for Windows it should go pretty much the same way. Just make sure you transfer the file in binary mode (that's what the "bin" command did). Once the firmware has uploaded, your router should automatically reboot. If you uploaded the OpenWRT firmware like I did above you can then telnet into your box (telnet 192.168.1.1). If you uploaded the stock Linksys firmware you should be able to get to your router with your web browser (http://192.168.1.1/).

Now put your router back together by reversing the instructions in this tip. You are triumphant and there will be much rejoicing.

NOTE1: In my guestbook "Westy" said he had to short pins 16-17 rather than 15-16 on his WRT54G-FR but the rest of this document worked.

Further Reading:
Linksys GPL Firmware page (Thank you Linksys and thank you Richard Stallman (GPL)!!)
Original instructions at OpenWRT forums
OpenWRT Web Site (my wireless web server runs it)
My revival thread (Thanks Jim!)
My wireless web server thread
Jim Buzbee's Linux on WRT54G page
Seattle Wireless WRT54G page
P.S. SVEASOFT and Windows are not supported here.

Have fun!

Forums

Valid HTML 4.01!

OpenWrt