August 8, 2009

Disassembling Inspiron Laptop

On a weekend (2 months back I guess) I didn't know what to do :) and I decided to disassemble my laptop. Here is the guide. Mine is Dell Inspiron 1420.

First remove the battery pack from the system.

Before disassembling, identify the important parts of the system.
1. Battery
2. CPU Fan

3. RAM
4. Hard disk
The nice thing here is that if we want to upgrade one specific part, we can do it without touching other parts. For example, if we want to upgrade the hard disk we can just remove screws shown in part 4.
We have to start disassembling from front side. First time I started from backside and I couldn't continue further. As shown in figure, pull the highlighted part and you can able to remove the entire frame (including the frame that has power button).

The next step is to remove the keyboard.
Be careful while removing the keyboard. Back side there will be a connection to mother board.
After removing the screws, pull it up and remove the connection to the motherboard.

Remove this connector and keyboard will be disconnected from the rest of the system.

Next step is to remove the monitor. First remove the supported cups (1 and 2 in figure). Just pull them off by holding the thick edge.

Remove the connection to monitor (4 in above figure)

Now the hard part comes. Remove the wifi cables. Be patient while remvoing. Here, reassembling takes more time than disassembling.
We have removed all the connections to the monitor.

Now remove the rest of screws and you are set.

August 1, 2009

Appengine Task Queue API & Gotchas

I recently added a new feature for Appsd. It shows the recent iphone related news from twitter. For this we search twitter every 10 minutes and gather all links. It shows the highest tweeted links. I used task queue api and cron for crawling. Here are things I learned from task queue api.
  1. As of now Task queue api is in experimental state. So you have to import it from google.appengine.api.labs.taskqueue. When it got stabilized you have to import it from google.appengine.api.taskqueue. So proper way of importing is, first try to import from google.appengine.api.taskqueue. If it fails then import it from labs.

  2. If the response of the request is not HTTP 200 OK then appengine tries to reexecute the task after some time. This is a big problem. It has two side effects. Task might have failed because of some temporal problem or because of some bug or exception. If it is the second case, reexecuting the task after some time won't solve the problem. Second problem is, it basically exhausts your 10000 quota limit.

  3. Now there is no way to increase the quota of tasks from 10000 requests. So if each task is not taking more time then pack more tasks into single task. For instance I process multiple urls in single task.

  4. If you change schema, don't forget to support the old schema. (Refer 2nd point)

  5. when you change something from post to get then do support get request and return nothing otherwise task will fail. (Again refer 2nd point)
Update: Task queue uses exponential backoff scheme to prevent single error exhausting your quota. see this post.