yet another blog about computer, technology, programming, and internet

Showing posts with label Internet. Show all posts
Showing posts with label Internet. Show all posts

Saturday, June 19, 2010

Pairing Google App Engine with Other(s)

Saturday, June 19, 2010 Posted by Ismail Habib , , , , 18 comments
I discovered Google App Engine (GAE) just a couple months ago and immediately attached to it. The idea of having a web application platform which is easy to use (no sys-admin thingy, just concentrate on developing), scalable, and free (up to a certain limit). Without even realizing (okay, I'm exaggerating), I ended up with a project where I paired up GAE with another server. Well, not necessary a server, but any kind of machine that provides something extra to GAE. At first I wasn't so sure that this is a good idea, however, in the end I was convinced that this is the best solution that I can come up with.


1. GAE's power vs GAE's limitation

With great power comes great responsibility. With cool features come some restrictions. It's a trade-off, ying and yang. I'm a Java programmer so I care mainly about the Java version of GAE. In GAE, not all Java features is available. Things like creating thread and writing to file system are not allowed in GAE. GAE also doesn't have persistent running process and every task should be finished in 30 seconds or less. Despite that, you might still want the GAE power. Why not using both?

2. Scalability is not entirely necessary, but still needed in some part

As I mentioned in the first paragraph. Scalability is one of GAE virtue. We can have a part of our application which requires high scalability to be deployed on GAE. Another part of the application that could not be necessarily scalable may reside on the other server. I could imagine this setting where GAE serves as an interface to outside the system and/or as a storage while the other server responsible to do things that GAE specifically couldn't do due to its restrictions.

3. It will be pure GAE in the future

For one or more reason, we can't have a pure GAE solution. It might be because the application is migrated from other technology and require some more time to be ported, or that the current GAE is not yet capable, but will be in the future (see GAE road map). It might be a good decision to start doing things in GAE if we believe that the future is on GAE, thus investing some resources now instead of doing it later (which will cost more without a doubt).

What do you think?

Sunday, May 30, 2010

Bagaimana Saya Menjelaskan REST kepada Istri (How I Explained REST to My Wife)

Sunday, May 30, 2010 Posted by Ismail Habib , 13 comments
For the first time since this blog is created. I'm writing a post in two languages. I was impressed with an explanation from Ryan Tomayko which is based on his conversation with his non-techy wife about REST. You can read the original version here. Some people may think that the article is somewhat sexist. However, I do believe that he didn't do it on purpose ;) The rest of this post will be in Bahasa Indonesia.

--

Artikel di bawah ini adalah terjemahan dari artikel yang ditulis oleh Ryan Tomayko. Beberapa bagian tulisan di bawah ini mungkin tidak/kurang/belum akurat, namun akan saya coba untuk memperbaharuinya setiap kali saya menemukan kekurangan. Semoga bermanfaat.

Istri: Siapa itu Roy Fielding?

Ryan: Orang yang cerdas.

Istri: Oh, memangnya apa yang dia lakukan?

Ryan: Dia membantu menulis (mengkode) web server pertama dan melakukan banyak research untuk menjelaskan kenapa web bekerja seperti itu. Namanya ada di spesifikasi untuk protokol yang digunakan untuk menerima halaman web dari server ke browser.

Istri: Bagaimana cara kerjanya?

Ryan: Maksudnya, web?

Istri: Yup.

Ryan: Hmm. Semua itu sangat mengagumkan. Lucunya, orang tidak terlalu menghargai ini. Protokol yang sedang kubicarakan ini, HTTP, mampu melakukan banyak hal berguna yang diacuhkan orang dengan alasan-alasan tertentu.

Istri: Maksudnya HTTP seperti yang ada di awal teks yang aku ketik di browser?

Ryan: Ya. Itu menunjukkan browser tentang protokol apa yang digunakan. Yang kamu ketik itu adalah satu dari sekian terobosan penting dalam sejarah komputer.

Istri: Kok bisa?

Ryan: Karena itu mampu mendeskripsikan lokasi dari suatu hal dimanapun di dunia ini. Itu adalah fondasi dari web. Kamu bisa bayangkan itu seperti koordinat GPS untuk pengetahuan dan informasi.

Istri: Untuk halaman web?

Ryan: Tidak hanya untuk halaman web. Orang itu, Roy Fielding, dia banyak bercerita tentang apa yang ditunjukkan oleh HTTP dalam riset yang aku sebutkan tadi. Web dibangun dengan arsitektur "REST". REST memberikan definisi dari "resource" dimana "resource" ini ditunjuk oleh HTTP.

Istri: Halaman web itu sebuah resource?

Ryan: Kira-kira begitulah. Sebuah halaman web adalah representasi dari sebuah resource. Resource itu sendiri adalah sebuah konsep. URL-itulah yang diketikkan ke browser...

Istri: Aku tahu apa itu URL.

Ryan: Oh. URL dapat memberi tahu browser bahwa ada sebuah konsep di suatu tempat. Browser kemudian dapat menanyakan representasi spesifik dari konsep tersebut. Lebih spesifik lagi, browser tersebut bertanya tentang representasi halaman web dari konsep yang ada.

Istri: Apa ada jenis lain dari representasi?

Ryan: Sebetulnya, representasi adalah salah satu hal yang kurang termanfaatkan. Dalam banyak kasus, sebuah resource hanya memiliki satu representasi. Tapi kami berharap bahwa representasi akan digunakan lebih banyak di masa depan karena akan ada banyak format baru bermunculan.

Istri: Seperti apa?

Ryan: Hmm. Ada konsep yang disebut orang sebagai "Web Services". Itu bisa berarti macam-macam tapi konsep dasarnya ialah bahwa mesin juga dapat menggunakan web seperti manusia.

Istri: Maksudnya seperti robot begitu?

Ryan: Tidak, bukan begitu. Bukan maksudku bahwa robot akan duduk di kursi dan kemudian browsing halaman web. Tapi komputer dapat menggunakan protokol yang sama untuk mengirim message antar sesamanya. Kami sudah melakukan itu untuk waktu yang lama tapi tidak ada teknik yang dapat digunakan untuk berbicara dengan mesin di seluruh dunia pada saat ini.

Istri: Kenapa tidak?

Ryan: Karena mereka tidak didesain seperti itu. Ketika Fielding dan teman-temannya mulai membangun web, kemampuan untuk berkomunikasi antar mesin di seluruh dunia adalah perhatian utama mereka. Kebanyakan dari teknik yang digunakan untuk membuat komputer berkomunikasi dengan sesamanya tidak memiliki kebutuhan seperti itu. Kebanyakan hanya perlu untuk berkomunikasi dengan grup kecil saja.

Istri: Dan sekarang kamu perlu untuk berkomunikasi dengan semua mesin?

Ryan: Ya - bahkan lebih. Kami perlu untuk dapat berkomunikasi dengan semua mesin tentang semua hal yang ada di mesin-mesin tersebut. Jadi kamu membutuhkan sebuah cara untuk memungkinkan mesin berbagi informasi tentang resource yang mungkin belum ada pada mesin lain.

Istri: Apa?

Ryan: Misalkan kamu ngobrol dengan adikmu dan dia mau meminjam sapu atau apapun. Tapi kamu tidak punya - Ibumu yang punya. Jadi kamu bilang ke adikmu untuk meminjam dari Ibumu. Ini terjadi sepanjang waktu di dunia nyata dan ini juga akan terjadi ketika mesin mulai berkomunikasi satu sama lain.

Istri: Jadi bagaimana mesin memberitahu satu sama lain tentang lokasi hal-hal tersebut?

Ryan: URL, pastinya. Kalau semua yang dibutuhkan mesin memiliki URL, berarti kamu sudah menciptakan sebuah equivalen dari kata benda. Kesepakatan antara kamu, aku, dan seisi dunia tentang kata benda dalam suatu cara pastinya penting kan?

Istri: Ya.

Ryan: Mesin tidak punya kata benda yang universal - makanya mereka payah. Setiap bahasa pemrograman, database, atau sistem lain punya cara yang berbeda-beda dalam mengkomunikasikan benda. Itulah kenapa URL itu sangat penting. URL memungkinkan semua sistem ini berkomunikasi tentang benda masing-masing.

Istri: Tapi ketika aku melihat halaman web, aku nggak berpikir seperti itu.

Ryan: Orang lain juga tidak. Kecuali Fielding dan sedikit orang lain. Itulah kenapa mesin masih payah.

Istri: Bagaimana dengan kata kerja, kata ganti, dan kata sifat?

Ryan: Lucu juga kamu tanya itu karena itu adalah hal penting lain dari REST. Eng, setidaknya kata kerja lah.

Istri: Aku cuma bercanda.

Ryan: Itu lucu, tapi sebenarnya bukan joke sama sekali. Kata kerja itu penting. Ada konsep yang sangat kuat dalam pemrograman yang siebut sebagai "polymorphism" dalam Computer Science. Itu adalah cara kami mengatakan bahwa benda yang berbeda bisa memiliki kata kerja yang sama yang dikenakan pada mereka.

Istri: Aku tak mengerti.

Ryan: Wel... Kita lihat meja kopi. Kata benda apa saja yang ada? Gelas, baki, koran, remote. Sekarang, apa saja yang bisa kamu lakukan terhadap benda-benda itu?

Istri: Aku tak mengerti.

Ryan: Kamu bisa mengambil mereka, kan? Kamu bisa mengangkat mereka. Kamu bisa menjatuhkan mereka. Kamu bisa membakar mereka. Kamu bisa menggunakan kata kerja yang sama untuk objek manapun yang ada di sana.

Istri: Oke... jadi?

Ryan: Nah, itu yang penting. Bagaimana jika kita tidak bisa mengatakan, "ambil gelas", atau "ambil koran", atau "ambil remote"; Bagaimana jika untuk itu kita harus menggunakan kata kerja yang berbeda untuk setiap kata benda? Kita tidak bisa menggunakan kata "ambil" secara unversal, tapi harus menggunakan kata baru untuk setiap kombinasi kata kerja/kata benda.

Istri: Wow! Itu aneh.

Ryan: Ya, itu aneh. Otak kita cukup cerdas untuk mengetahui bahwa kata kerja yang sama dapat digunakan untuk benda-benda yang berbeda. Sebagian kata kerja memang lebih spesifik dan hanya bisa digunakan pada kata benda tertentu. Misalnya, aku tidak bisa "mengendarai gelas" atau "minum mobil". Tapi sebagian kata kerja sangat universal seperti ambil (GET), taruh (PUT), dan hapus (DELETE).

Istri: Kamu tidak bisa menghapus gelas.

Ryan: Oke, tapi kamu bisa membuang gelas. Tapi itu cuma joke kan?

Istri: Yeah.

Ryan: Jadi, HTTP -protokol yang dibuat Fielding dan teman-temannya ini- adalah tentang penggunaan kata kerja ke kata benda. Contohnya, ketika kamu mengunjungi sebuah halaman web, browser akan menggunakan HTTP GET ke URL yang kamu ketikkan dan halaman web akan kamu peroleh.

Halaman web biasanya mengandung gambar kan? Gambar adalah resource yang berbeda. Halaman web hanya menyebutkan URL ke gambar dan browser akan memanggil HTTP GET ke semua URL gambar tersebut hingga semua resource yang dibutuhkan untuk menampilkan halaman web itu diperoleh. Tapi yang penting disini ialah bahwa hal-hal yang berbeda dapat diperlakukan dengan cara yang sama. Apakah kata benda itu adalah gambar, teks, video, mp3, slideshow, atau apapun. Aku bisa melakukan instruksi GET untuk semua hal tersebut selama mereka memiliki URL.

Istri: Sepertinya GET itu kata kerja yang penting.

Ryan: Memang. Terutama bila kamu menggunakan browser karena browser biasanya hanya digunakan untuk mengambil sesuatu. Browser tidak terlalu banyak berinteraksi dengan resource. Ini jadi masalah karena orang jadi berpikir bahwa HTTP itu hanya untuk mengambil sesuatu. Padahal sebenarnya HTTP itu adalah protokol umum untuk mengaplikasikan kata kerja pada kata benda.

Istri: Keren. Tapi aku tidak paham kenapa ini bisa mengubah apapun. Kata benda dan kata kerja apa saja yang kamu mau?

Ryan: Kata benda sudah ada tapi tidak dalam format yang benar.

Coba bayangkan ketika kamu sedang browsing di amazon.com untuk mencari hadiah natal. Bayangkan setiap produk adalah kata benda. Sekarang, ketika mereka tersedia dalam bentuk yang dapat dimengerti mesin, kamu bisa melakukan banyak hal yang menarik.

Istri: Mengapa mesin tidak bisa mengeri halaman web biasa?

Ryan: Karena halaman web didesain untuk dimengerti oleh manusia. Mesin tidak peduli terhadap layout dan style. Mesin hanya butuh data. Idealnya, setiap URL punya representasi yang dapat dimenerti manusia dan representasi yang dapat dimengerti mesin. Ketika sebuah mesin melakukan GET terhadap resource, maka dia akan meminta representasi yang dapat dimengerti mesin. Ketika sebuah browser melakukan GET terhadap resource atas permintaan manusia, maka yang diperoleh adalah representasi yang dapat dimengerti oleh manusia.

Istri: Jadi semua orang harus membuat format yang dapat dimengerti oleh mesin ke semua halaman web mereka?

Ryan: Kalau itu memang bermanfaat.

Kita sudah banyak ngobrol dengan abstraksi. Bagaimana kalau ita ambil contoh yang nyata. Kamu adalah seorang guru -di sekolah aku yakin kamu punya sistem komputer yang besar, atau tiga atau empat komputer, yang memungkinkanmu untuk mengelola murid: di kelas mana mereka berada, berapa nilai mereka, kontak darurat, informasi mengenai buku yang kamu ajarkan, dan laib sebagainya. Jika sistem ini web-based, maka kemungkinan ada URL untuk setiap benda yang terlibat disini: murid, guru, kelas, buku, ruangan, dll. Saat ini, memasukkan URL lewat browser akan memberikanmu sebuah ahalaman web. Jika ada representasi yang dapat dimengerti oleh mesin untuk setiap URL, maka mudah saja untuk menelurkan sebuah aplikasi ke dalam sistem karena semua infomasi tersebut dapat dikonsumsi dengan cara yang standar. Itu juga akan memungkinan semua sistem untuk berkomunikasi satu sama lain dengan mudah. Atau, kamu bisa membuat sistem untuk propinsi atau negara yang bisa berkomunikasi dengan masing-masing sekolah untuk mengumpulkan nilai ujian. Kemungkinan yang ada bisa tanpa batas.

Setiap sistem akan memperoleh informasi dari yang lain dengan menggunakan instruksi HTTP GET yang sederhana. Jika sebuah sistem perlu menambahkan sesuatu ke sistem lain, maka dia akan menggunakan HTTP POST. Jika sebuah sistem ingin memutakhirkan sesuatu ke sistem lain, dia akan menggunakan HTTP PUT. Satu-satunya yang perlu didiskusikan adalah dalam bentuk apa data itu seharusnya.

Istri: Jadi ini yang kamu dan semua orang komputer lakukan sekarang? Mendiskusikan bagaimana data itu seharusnya?

Ryan: Sedihnya, tidak. Malah kebanyakan sibuk menulis spesifikasi kopleks untuk melakukan hal ini dengan cara yang berbeda dan tidak terlalu bermanfaat. Benda tidak universal dan kata kerja tidak polimorphic. Kita membuang puluhan tahun pengalaman dari penggunaan di dunia nyata dan teknik yang telah terbukti dan memulai kembali dengan sesuatu yang kelihatannya sangat mirip dengan sistem lain yang telah gagal di masa lalu. Kami menggunakan HTTP tapi hanya karena itu membantu kita untuk menghindari pembicaraan dengan administrator jaringan. Kami mengorbankan kemudahan dengan aplikasi yang terlihat keren dan aplikasi wizard.

Istri: Kenapa?

Ryan: Aku tidak tahu.

Istri: Kenapa kamu tidak bilang apa-apa?

Ryan: Mungkin nanti.

Friday, May 21, 2010

Thursday, July 17, 2008

Scour - A Social Search Engine

Thursday, July 17, 2008 Posted by Ismail Habib 17 comments
Scour (currently in beta) is another web 2.0 hype tagged as "social search engine" intended to give user more authority to determine results from searching process. Scour aggregates result from Google, Yahoo, and MSN and combine them with the votes from users to decide the order of the results. Besides voting, Scour also allows users to leave comments for every search results. Sounds like another Digg? Another worth mentioning feature from Scour is the reward system. Users will get a certain number of points for every search or another contribution they make (voting, commenting, inviting friends). After several thousand of points, users are able to convert them into a visa gift card. While this pay-per-search idea is nothing new, I wonder if the social part of Scour will able to keep them surviving in the next few years given the fact that they will probably have to compete with Google (Google is developing their search engine with a similar idea to Scour, I bet without the reward system).

I have tried Scour for around three days now, and I'm sure they want to improve on several things (it's a beta anyway). Currently the results are limited to 3 pages no matter what keyword I use to do the searching. The search results are also lack of highlighting (updated: not anymore!). They have also included a browser-integrated search bar, which is good for me since I want to try it without having to change the way I use Google. However, every time I click on a search result a frame appeared in the bottom of the page which allowed the users to give vote or comment on the result (this frame didn't appear when I tried to open the search result on a new tab instead of clicking it). This might be a good way to encourage users to participate in the voting/commenting activities, but I found it a little bit annoying. Hopefully they will find a better way to do it.

Monday, July 14, 2008

Family Tree Builder

Monday, July 14, 2008 Posted by Ismail Habib , , 36 comments
1. I have a big family which keeps on expanding
2. I live far away from most of them
3. I have terrible memory (being old and things like that... you know)

Those are my top three arguments why I sometime (or often) forget about things related to my family. Some examples: the date of my parent's marriage, my brother in law's birthday, or even the name of my one year old cousin. Now I'd like to say goodbye for all those fake arguments by introducing a geeky way to keep all family-related information in a sophisticated way: Family Tree Builder.


Family Tree Builder is a genealogy software (for Windows only) which can be downloaded for free at http://www.myheritage.com/family-tree-builder. I like this software a lot, especially since it offers some nice features such as: integration with myheritage.com (allows me to share and let others review the information on the web, though without capability of multi-user editing), photograph for every family member (and events), event reminder (birthday, marriage, etc), and also possibility to input unsure information for date (i.e. birthday around January 1982).

Sunday, June 29, 2008

Internet Time Machine

Sunday, June 29, 2008 Posted by Ismail Habib 18 comments
Remember my post about Google and Yahoo From The Old Time? You didn't think that I made those screen capture from long time ago, did you? Well, in fact I didn't. Going back in time is surely not possible, at least not for now. Luckily, a website called Internet Archive WayBack Machine allows us to blast to the past and surfing through the Internet in the past. The idea is simple, it crawls web pages and puts them into archive. Obviously, it's not possible to archive every single web site running out there, but their attempt is quite incredible. Up until now, they claimed to have around 85 billion web pages archived from 1996.

You could access the WayBack Machine directly from the website or use the button for browser by drag-and-drop this link: Wayback to your browser toolbar. Enjoy the past.

Tuesday, June 24, 2008

Modifying Google Translation Button to Open Translation in New Tab/Window

Tuesday, June 24, 2008 Posted by Ismail Habib , , , 61 comments
The translation button from Google has proved to be very useful in most situation (by me), especially since the language detection was introduced. However, I feel that there is something lacking. The problem is that the translation generated replaces the current active window/tab while sometimes I prefer to have another window/tab open. The translation button itself is a JavaScript, so we can play with is just a little bit. Here is the original code for translation button (I use the code for translation into English):

javascript:
var t = ((window.getSelection&&window.getSelection()) || (document.getSelection&&document.getSelection()) || (document.selection&&document.selection.createRange && document.selection.createRange().text));
var e = (document.charset || document.characterSet);
if (t!='') {location.href='http://translate.google.com/translate_t?text=' + t + '&hl = en&langpair=auto|en&tbb=1&ie=' + e;} else {location.href='http://translate.google.com/translate?u=' + escape(location.href) + '&hl = en&langpair=auto|en&tbb=1&ie=' + e;};

In order to make the translation to be opened in a new window/tab, we just have to make a bit change in it:

javascript:
var t = ((window.getSelection&&window.getSelection()) || (document.getSelection&&document.getSelection()) || (document.selection&&document.selection.createRange && document.selection.createRange().text));
var e = (document.charset||document.characterSet);
if (t!='') {var myWindow=window.open('http://translate.google.com/translate_t?text=' + t + '&hl=en&langpair=auto|en&tbb=1&ie='+e,'Translation','')} else
{var myWindow=window.open('http://translate.google.com/translate?u=' + escape(location.href) + '&hl=en&langpair=auto|en&tbb=1&ie=' + e,'Translation','')};

If you hate this kind of stuff, just drag and drop the link below to your browser toolbar:
Translate to English

I hope this is useful. Please let me know if you have a better idea. Obviously, any questions are welcome.

edited: thanks for the suggestion

Related Posts

Sunday, June 22, 2008

ScribeFire: A Must Have Firefox Addon for Blogger

Sunday, June 22, 2008 Posted by Ismail Habib , , 16 comments
For the last two years I blog with mostly the same procedure. Open a word processor, write my article, find/create related pictures/videos, collect all required references, login to my blog account, copy-paste my article, format my article, upload/link images/videos, and publish it. Every blog-writing-cycle requires an enormous browsing, tab-switching, and some boring stuffs.

I finally change the way I blog after two years of blogging, and its all thanks to ScribeFire. ScribeFire is an addon for the Mozilla Firefox Web Browser (which just reach the third version, in case you don't know) that let us to enhance our blogging experience. ScribeFire integrates the blogging capabilities with the browser. Posting, editing, and categorizing posts in your blog could be done much faster than usual.



Some reasons why I really love ScribeFire are:
1. I don't need to login or open any web site just to start posting
2. ScribeFire split my browser display which allows me to write and read website in parallel
3. Copying links or pictures is as easy as drag and drop
4. Works on multiple blogs
5. Compatible with many blog services, including blogger and wordpress
6. Creating links to my other posts (which I did a lot) is very easy and fast
7. Compatible with Firefox 3 ;)

So, are you a blogger? If yes, don't miss this great stuff!

Tuesday, June 10, 2008

Google and Yahoo From The Old Time

Tuesday, June 10, 2008 Posted by Ismail Habib 10 comments
Ever wonder how Google and Yahoo looks like years ago?

Here they are:

Google (1999)


Yahoo (1997)
Notice that Google has removed the "!" while Yahoo still keeps it. It also quite funny to see how Google feels that it is necessary to explain "Why use Google" :)

Thursday, May 29, 2008

Setting up an FTP Server Behind NAT (Network Address Translation)

Thursday, May 29, 2008 Posted by Ismail Habib , 68 comments
Before starting, I assume that you have enough knowledge about FTP, active and passive mode in FTP, and NAT (Network Address Translation).

My home LAN (Local Area Connection) is consisted of several computers connected to The Internet via a router with a single IP Address, therefore obviously NAT is required. With NAT, there are two types of IP Address, local and global address(es). The computers in my network use local addresses which are only recognized inside my network. On the other hand, the router uses both address, so that it is possible to reach the router from local network or from the internet. I want to use one of my computer as an FTP server that can be accessed from outside my local network. The problem is that with only local address, the computer I used for FTP server couldn't be accessed from outside the local network.



In active mode, client is the one responsible in opening ports for data transmission. However, in passive mode (which is more popular), this responsibility is taken care by server. This is a similar problem from the previous one. The ports which are opened by the server are only available for those in the local network since it is using a local address.

Solution: Port Forwarding

In order to make the local FTP server available for anyone connected to the internet, a port forwarding must be applied to the router. For active mode, you just simply add port 21 (the default port for FTP) and forward it to the FTP server address. For passive mode, the same thing also have to be applied. In addition, several other ports are also need to be opened for data transmission.

Example:
I'm using the very common router (LinkSys WRT54GL) with local address 192.168.1.1. I want to open the port 21 and another ports from 60000-60050 for data transmission (this is actually up to you, pick anything above 1024). Open the router's interface from browser: http://192.168.1.1. Open the Application & Gaming -> Port Range Forward and fill in as follow (192.168.1.100 is my FTP Server's local address).



FTP Server Application

Another important thing that you need to do when using passive mode is setting up the FTP Server application itself. I think most of the FTP server application supports the usage of FTP server behind NAT. I'm going to use the free FileZilla FTP server as an example. In order to make the FTP Server works, you need to let it know about its global address. If you have a fixed address then you just have to tell the application about it, otherwise you will need another tool to retrieve the global address such as the one provided by FileZilla: http://ip.filezilla-project.org/ip.php.

To set up the FileZilla FTP server, open the Edit -> Settings menu and choose "Passive mode settings". If you have a fixed IP address (like in my example is 202.169.1.1), fill in the "Use the following IP" field, otherwise (or if you're not sure), just tick the "Retrieve external IP address from" and fill it with "http://ip.filezilla-project.org/ip.php". Tick both "Don't use external IP for local connections" and "Use custom port range". Fill the port range with the same range that you have filled in the router settings.

Thursday, May 08, 2008

Google Translation Now With Language Detection

Thursday, May 08, 2008 Posted by Ismail Habib , , 14 comments
It is a bit surprising that only 3 days since I post about Creating a One-Click Web Page Translation Button, Google Translation now includes another cool feature: language detection. So, instead of picking source and destination language now you can just select the destination language and let Google decides the source language. You can update the translation button here. You might also notice that the number of supported languages has increased quite a lot. The number of possible translation also increased drastically from 31 pairs to more than 500 pairs!

Related post

Tuesday, May 06, 2008

Sharing Internet Connection using WiFi (Windows XP)

Tuesday, May 06, 2008 Posted by Ismail Habib , 65 comments
Here is the situation, you have two (or more) laptops (or PC) with WiFi capabilities. You don't have any router, switch, hub, or whatsoever. Just a single Internet port enough for one of your computer. Don't be worry, because you still can share the Internet connection by using ad-hoc network.

First, you need to pick one of those computers as a "server". Connect it to the Internet using the usual way. Next, open Control Panel>Network and Internet Connections>Network Connections. Open the Wireless Connection Properties. Change tab to Wireless Networks then click Add... button. Under the Association tab, input your Network Name as you like. Clear the The key is provided for me automatically check box and select the This is a computer-to-computer (ad hoc) network check box. Fill in the Network Key along with the confirmation with a 13-digit password and then press OK. Press OK once again to close the dialog box. Now you have finished with the first computer.

For the other computer, check for available wireless network. Usually a notification balloon will pop up and you can just simply click on it or just go to the Network Connections, right click on the Wireless Network Connection and click on View Available Wireless Networks. Select your network, and click connect button on the lower right corner. Input the Network Key and press connect once again.

If the first computer is using a PPPoE connection to gain access to the Internet don't forget to allow other computers to use it. You can do it by accessing the Network Connections, then open the properties of the connection. Open Advanced tab, check the Allow other network users to connect through this computer's Internet connection and set the Home networking connection to Wireless Network Connection.

In my experience, this network is not very stable. Not really sure what is the cause, but still good enough for a temporary solution.

Monday, May 05, 2008

Creating a One-Click Web Page Translation Button

Monday, May 05, 2008 Posted by Ismail Habib , , 65 comments
For someone like me who live in a foreign country with unfamiliar language, a translation tool is everyday necessity. My favorite tools for web translation so far are Google Translation and Altavista's Babelfish. However, I feel a little bit uncomfortable when using them in my usual way. It is because the process is too long and not straightforward.

Usually the sequence of web translation is like this:
1. Open a website with unfamiliar language
2. Copy the website's URL or the specified texts to be translated
3. Open web translator tool, paste the URL or the texts
4. Translate it

The sequence is not natural, what I really want to do are:
1. Open a website with unfamiliar language
2. Translate it (or select some texts and translate it)

I tried some extensions for my browser. Mostly the extensions are too sophisticated and complicated, while what I need is just a simple tool. After a bit of searching, I found that Google actually have the tool that I need, and it is very simple. Just go to here (I'm using English as my base language) and you will see this:


Drag the translation button you need to the browser's toolbar. Now you have the translation button. To use it, you just need to open a website and click the translation button, or select some texts before do so.

Related post

Friday, April 18, 2008

Firefox Add-ons: Snaplinks and Linkification

Friday, April 18, 2008 Posted by Ismail Habib , , 10 comments
Two reccommended add-ons for your Firefox!

Snap Links allows users to easily open multiple links in new tabs by drawing a box around them. Links can also be opened in new windows, new tabs on a new window, copied to clipboard, bookmarked or downloaded. I mostly use it to (lazily) open multiple links into new tabs or as a replacement for a standard procedure: right click - open link in New Tab.

snap links screen shot

Linkification on the other hand, is a very simple yet useful add-ons. It converts text links into a genuine, clickable links. No more copy and paste to the address bar! I found it works perfectly with snap links...

Open this (Snap Links) and this (Linkification) if you are interested.

Thursday, March 08, 2007

Me and DNS

Thursday, March 08, 2007 Posted by Ismail Habib , 24 comments
Several weeks ago I had a problem with DNS (Domain Name Service). Because of some situation I had, I couldn't get the access to the ISP DNS Server. That's why I used to use some free DNS server somewhere else. I was quite happy with this until one time the DNS Server performed poorly. I experienced some failure names tracking and some downtimes. Since I use 80% of my life surfing in the net (Okay, I'm exaggerating...) this is quite disturbing. I tried to find some more free public DNS but none of them could satisfy me.

Frustrated, another idea popped up in my mind. Rather than using some external DNS Servers, why don't I just try to make one for myself? Being 100% aware that I couldn't create my own DNS software for my XP system, I tried to find some on the net (How did I do that without DNS Server?). Then I found a very good application called SimpleDNS and there goes my problem. Finished? not yet... SimpleDNS is not a free software, and it only gave me 15 days trial (actually it expired in one days, strange enough huh?). Therefore I tried to find an alternative: BIND. Unlike SimpleDNS, BIND is not that easy to use, especially when you're not in the mood to do that. Luckily, after some extensive search, I found Treewalk, a program that's perfectly fit to my requirements! It's easy, simple, and on top of that... it also free for personal use.

For you who want to find an alternative, I found this website: OpenDNS which I think quite promising though I never use it. My only regret is that I found this website quite long enough after I overcame my DNS problem... :P