<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bijan Hoomand</title>
	<atom:link href="http://hoomand.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://hoomand.com</link>
	<description>My piece of chatters for the wild wide web!</description>
	<lastBuildDate>Sat, 05 Mar 2011 08:35:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Squid Configuration, My Way!</title>
		<link>http://hoomand.com/2011/02/21/squid-no-simultaneous-login-and-automatic-password-generation/</link>
		<comments>http://hoomand.com/2011/02/21/squid-no-simultaneous-login-and-automatic-password-generation/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 19:37:28 +0000</pubDate>
		<dc:creator>bijan</dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[automatic user generation]]></category>
		<category><![CDATA[simultaneous users]]></category>
		<category><![CDATA[squid]]></category>

		<guid isPermaLink="false">http://hoomand.com/?p=115</guid>
		<description><![CDATA[Squid is an old at the same time great cache &#38; proxy server in Linux (also ported for Window$ and many other OS). With the emphasis being more on the caching capabilities, you might find yourself having difficulties defining some minor proxy rules, like how to define user accounts and above all, how to ban [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Squid Cache-Proxy Server" href="http://www.squid-cache.org/" target="_blank">Squid</a> is an old at the same time great cache &amp; proxy server in Linux (also ported for Window$ and many other OS). With the emphasis being more on the caching capabilities, you might find yourself having difficulties defining some minor proxy rules, like how to define user accounts and above all, how to ban simultaneous user logins.</p>
<p>I have no intention of talking about Squid and how to install/configure it, you can find plenty of resources online and on its main website. However I want to share some useful configuration options I like to use, such as user definition and prohibition of simultaneous user logins. Also I would share my automatic password generation script written in Perl, making your life easier if you ever wanted to have sets of users, with their passwords being automatically generated and emailed to them whenever you wanted!</p>
<p><strong>User Definition in Squid</strong></p>
<p>There are a myriad of ways to have user authentication in squid, the easiest is to have <em>ncsa_auth</em> program, which comes with Squid and you already have it if you got Squid, along with <em>htpasswd</em> program which gets installed by Apache web server. So, go get Apache if you want <em>htpasswd</em>. You can locate your <em>ncsa_auth</em> by entering your squid directory (usually in /usr/local/squid) and running:</p>
<div class="codesnip-container" ># find . -iname &#8216;ncsa_auth&#8217;</p>
<p>/usr/local/squid/libexec/ncsa_auth</p></div>
<p>Now you need to create the password file. Let&#8217;s name our password file <em>ourPassFile</em> and place it in the directory squid is installed, i.e. <em>/usr/local/squid</em> by default. Lots of folks might complain it&#8217;s much better we put it in /etc/squid, but I&#8217;d like to keep it in my own place, any problem?! Aha, don&#8217;t forget that you also need to make sure that it&#8217;s universally  readable.</p>
<div class="codesnip-container" >
<pre># touch /usr/local/squid/ourPassFile
# chmod o+r /usr/local/squid/ourPassFile</div>

Now we can generate our first username/password; our username would be <em>bijan</em>, our password <em>123456</em>.
<div class="codesnip-container" ># htpasswd /usr/local/squid/ourPassFile bijan
<pre>New password:
Re-type new password:
Adding password for user bijan</div>

Now you need to edit squid.conf; specifically, you need to define the authentication  program in squid.conf, which is in this case ncsa_auth. Next, create an  ACL named ncsa_users with the REQUIRED keyword that forces Squid to use  the NCSA auth_param method you defined previously. Finally, create an  http_access entry that allows traffic that matches the ncsa_users ACL  entry. Here's a simple user authentication example; the order of the  statements is important:
</pre>
<div class="codesnip-container" >#</p>
<pre># Add this to the auth_param section of squid.conf
#
auth_param basic program /usr/local/squid/libexec/ncsa_auth /usr/local/squid/ourPassFile

#
# Add this to the bottom of the ACL section of squid.conf
#
acl ncsa_users proxy_auth REQUIRED

#
# Add this at the top of the http_access section of squid.conf
#
http_access allow ncsa_users
http_access deny all</div>
</pre>
<p>That's pretty much it. By restarting squid, or better to say killing it (/usr/local/squid/sbin/squid -k shutdown) and starting it again (/usr/local/squid/sbin/squid -NCd1), you are forced to enter username/password to browse a web page.</p>
<p><strong>Automatic User Generation</strong></p>
<p>Let's say you want to add 10 more users and generate automatic passwords for them. Even more, you want to re-generate passwords for them periodically and send them their new username/password. I have patched up a Perl script which makes the job really easy.</p>
<p>At first you have to create a file, called <em>users</em> and enter your users' emails in there line by line. This file should be placed in the same directory <em>ourPassFile</em> is. It should contain something like:</p>
<div class="codesnip-container" >bijan@test.com</p>
<p>mahdi@test.com</p>
<p>mojtaba@test.com</p></div>
<p>Next you have to clear an empty file named <em>clearFile</em>.</p>
<div class="codesnip-container" ># touch clearFile</div>
<p>Easy, hah?! Now you should create passGenerator.pl and put the following lines in it:</p>
<div class="codesnip-container" >
<div class="perl codesnip" style="font-family:monospace;"><span class="co1">#!/usr/bin/perl</span></p>
<p><span class="co1">#    Simple Email Function</span><br />
<span class="co1">#    ($to, $from, $subject, $message)</span><br />
<span class="kw2">sub</span> sendEmail<br />
<span class="br0">&#123;</span><br />
<span class="kw1">my</span> <span class="br0">&#40;</span><span class="re0">$to</span><span class="sy0">,</span> <span class="re0">$from</span><span class="sy0">,</span> <span class="re0">$subject</span><span class="sy0">,</span> <span class="re0">$message</span><span class="br0">&#41;</span> <span class="sy0">=</span> <span class="co5">@_</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">$sendmail</span> <span class="sy0">=</span> <span class="st_h">'/usr/lib/sendmail'</span><span class="sy0">;</span><br />
<a href="http://perldoc.perl.org/functions/open.html"><span class="kw3">open</span></a><span class="br0">&#40;</span>MAIL<span class="sy0">,</span> <span class="st0">&quot;|$sendmail -oi -t&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<a href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> MAIL <span class="st0">&quot;From: $from<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
<a href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> MAIL <span class="st0">&quot;To: $to<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
<a href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> MAIL <span class="st0">&quot;Subject: $subject<span class="es0">\n</span><span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
<a href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> MAIL <span class="st0">&quot;$message<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
<a href="http://perldoc.perl.org/functions/close.html"><span class="kw3">close</span></a><span class="br0">&#40;</span>MAIL<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="co1"># Random Password Generator</span><br />
<span class="kw2">sub</span> randomPassword<br />
<span class="br0">&#123;</span><br />
<span class="kw1">my</span> <span class="re0">$password</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">$_rand</span><span class="sy0">;</span></p>
<p><span class="kw1">my</span> <span class="re0">$password_length</span> <span class="sy0">=</span> <span class="co5">$_</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="sy0">;</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="re0">$password_length</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="re0">$password_length</span> <span class="sy0">=</span> <span class="nu0">10</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<span class="kw1">my</span> <span class="re0">@chars</span> <span class="sy0">=</span> <a href="http://perldoc.perl.org/functions/split.html"><span class="kw3">split</span></a><span class="br0">&#40;</span><span class="st0">&quot; &quot;</span><span class="sy0">,</span> <span class="st0">&quot;a b c d e f g h i j k l m n o p q r s t u v w x y z - _ % # | 0 1 2 3 4 5 6 7 8 9&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<a href="http://perldoc.perl.org/functions/srand.html"><span class="kw3">srand</span></a><span class="sy0">;</span><br />
<span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw1">my</span> <span class="re0">$i</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> <span class="re0">$i</span> <span class="re0">&amp;lt</span><span class="sy0">;=</span> <span class="re0">$password_length</span> <span class="sy0">;</span><span class="re0">$i</span><span class="sy0">++</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<span class="re0">$_rand</span> <span class="sy0">=</span> <a href="http://perldoc.perl.org/functions/int.html"><span class="kw3">int</span></a><span class="br0">&#40;</span><a href="http://perldoc.perl.org/functions/rand.html"><span class="kw3">rand</span></a> 41<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$password</span> <span class="sy0">.=</span> <span class="re0">$chars</span><span class="br0">&#91;</span><span class="re0">$_rand</span><span class="br0">&#93;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<a href="http://perldoc.perl.org/functions/return.html"><span class="kw3">return</span></a> <span class="re0">$password</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="co1"># Main Program</span></p>
<p><span class="kw1">my</span> <span class="re0">$data_file</span><span class="sy0">=</span><span class="st0">&quot;users&quot;</span><span class="sy0">;</span><br />
<a href="http://perldoc.perl.org/functions/open.html"><span class="kw3">open</span></a><span class="br0">&#40;</span>DAT<span class="sy0">,</span> <span class="re0">$data_file</span><span class="br0">&#41;</span> <span class="sy0">||</span> <a href="http://perldoc.perl.org/functions/die.html"><span class="kw3">die</span></a><span class="br0">&#40;</span><span class="st0">&quot;Could not open file!&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">@users</span><span class="sy0">=</span><span class="re0">&amp;lt</span><span class="sy0">;</span>DAT<span class="re0">&amp;gt</span><span class="sy0">;;</span><br />
<a href="http://perldoc.perl.org/functions/close.html"><span class="kw3">close</span></a><span class="br0">&#40;</span>DAT<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="kw1">my</span> <span class="re0">$passWord</span><span class="sy0">=</span><span class="re0">$ARGV</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="sy0">;</span></p>
<p><span class="kw1">my</span> <span class="re0">$newPassFile</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">$newClearFile</span><span class="sy0">;</span><br />
<span class="kw1">foreach</span> <span class="re0">$u</span><span class="br0">&#40;</span><span class="re0">@users</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
<a href="http://perldoc.perl.org/functions/chomp.html"><span class="kw3">chomp</span></a><span class="br0">&#40;</span><span class="re0">$u</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$newPass</span> <span class="sy0">=</span> randomPassword<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$newPassFile</span> <span class="sy0">.=</span> <span class="re0">$u</span> <span class="sy0">.</span> <span class="st0">&quot;:&quot;</span> <span class="sy0">.</span> <a href="http://perldoc.perl.org/functions/crypt.html"><span class="kw3">crypt</span></a><span class="br0">&#40;</span><span class="re0">$newPass</span><span class="sy0">,</span><span class="re0">$newPass</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
<span class="re0">$newClearFile</span> <span class="sy0">.=</span> <span class="re0">$u</span> <span class="sy0">.</span> <span class="st0">&quot;<span class="es0">\t</span>&quot;</span> <span class="sy0">.</span> <span class="re0">$newPass</span> <span class="sy0">.</span> <span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
sendEmail<span class="br0">&#40;</span><span class="re0">$u</span> <span class="sy0">,</span> <span class="st_h">'UncleBJ@Test.com'</span><span class="sy0">,</span> <span class="st_h">'Details'</span><span class="sy0">,</span> <span class="re0">$u</span> <span class="sy0">.</span> <span class="st0">&quot;<span class="es0">\n</span>&quot;</span> <span class="sy0">.</span> <span class="re0">$newPass</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<a href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> <span class="re0">$u</span> <span class="sy0">.</span> <span class="st0">&quot;<span class="es0">\t</span>&quot;</span> <span class="sy0">.</span> <span class="re0">$newPass</span> <span class="sy0">.</span> <span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
<a href="http://perldoc.perl.org/functions/open.html"><span class="kw3">open</span></a> <span class="br0">&#40;</span>MYFILE<span class="sy0">,</span> <span class="st_h">'&amp;gt;ourPassFile'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<a href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> MYFILE <span class="re0">$newPassFile</span><span class="sy0">;</span><br />
<a href="http://perldoc.perl.org/functions/close.html"><span class="kw3">close</span></a> <span class="br0">&#40;</span>MYFILE<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><a href="http://perldoc.perl.org/functions/open.html"><span class="kw3">open</span></a> <span class="br0">&#40;</span>MYFILE<span class="sy0">,</span> <span class="st_h">'&amp;gt;clearFile'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<a href="http://perldoc.perl.org/functions/print.html"><span class="kw3">print</span></a> MYFILE <span class="re0">$newClearFile</span><span class="sy0">;</span><br />
<a href="http://perldoc.perl.org/functions/close.html"><span class="kw3">close</span></a> <span class="br0">&#40;</span>MYFILE<span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
<p>This file should be placed exactly in the same directory your <em>ourPassFile</em> is, or you have to edit it and give it appropriate addresses.</p>
<p>No need to mention you have to make this file executable by:</p>
<div class="codesnip-container" ># chmod +x passGenerator.pl</div>
<p>After running passGenerator.pl, it reads the <em>users</em> file line by line, for each username (which is the email address as well) an automatic password is generated and added to <em>ourPassFile</em>, also the unencrypted, clear-text password is saved in <em>clearFile</em> as well; should you need to remind a user of his/her password, you don't have any difficulty reading it! In the end the username/password is emailed to the user! As easy as apple pie.</p>
<p>This script is very simple, so, I don't think you'd have any difficulty should you want to change it based on your needs.</p>
<p><strong>Banning Simultaneous User Login</strong></p>
<p>What is good of username/password if even one single user decides to share his/her credentials with others?! You killed yourself prohibiting the whole savage zoo out there in your network accessing your precious proxy server, and one user feeling so terribly guilty of lack of equality and friendly with couple of other people (who happen to be friends with some more!) decides to share his credentials and end your reins of biased discrimination! Now you are left with your hands down in your pants, no control over anything!</p>
<p>No worries mate, you can ban simultaneous use! It took me couple of hours of googling &amp; testing to find out, but it definitely works! As you know squid's credentials are carried out with each requested web page, better to say there is no user login in Squid, each time you try accessing squid, you send your username/password to it. So, we can't honestly define a user, it's only a variable carried in the HTTP Request. So, what is the work around? A simple trick!</p>
<p>By using the ACLs below, we can log the IP address of a user for the first time for a certain TTL (Time To Live). Within that TTL, if another IP address tries to use the same username, we simply block him! You need to modify your <em>squid.conf</em> in the following manner:</p>
<div class="codesnip-container" >
<pre>
<pre>auth_param basic program /usr/local/squid/libexec/ncsa_auth /usr/local/squid/ourPassFile

auth_param basic credentialsttl 2 hours
authenticate_ttl 3 minutes
authenticate_ip_ttl 180 seconds

acl onlyonce max_user_ip -s 1
acl ncsa_users proxy_auth REQUIRED

http_access deny onlyonce
http_access allow ncsa_users
http_access deny all</div>

Please do notice that the order of ACLs and http_access is very important. Also the <em>-s</em> used in max_user_ip is a must, because without that, squid only nags about more users violating our single user IP acl and doesn't always ban them.
Having this configuration set, when the 2nd user tries to login within the TTL specified, he/she gets a beautiful Access Denied message!</pre>
</pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://hoomand.com/2011/02/21/squid-no-simultaneous-login-and-automatic-password-generation/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Walking Slow!</title>
		<link>http://hoomand.com/2010/11/14/walking-slow/</link>
		<comments>http://hoomand.com/2010/11/14/walking-slow/#comments</comments>
		<pubDate>Sun, 14 Nov 2010 17:08:08 +0000</pubDate>
		<dc:creator>bijan</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://hoomand.com/?p=101</guid>
		<description><![CDATA[It&#8217;s a long time that I don&#8217;t really realize the gravity of the word &#8220;a day&#8221;, the moments fly by from the time I wake up in the morning, till the time I put my heavy head back on the pillow to sleep again. Too many thoughts of every day problems, combined with the melancholic [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a long time that I don&#8217;t really realize the gravity of the word &#8220;a day&#8221;, the moments fly by from the time I wake up in the morning, till the time I put my heavy head back on the pillow to sleep again. Too many thoughts of every day problems, combined with the melancholic memories of the past and the dreams for the future, makes you totally forget the very moment you&#8217;re living in.</p>
<p>Anyhow, tonight I was rushing back home, walking very fast in Africa, one of Tehrans&#8217; busiest boulevards, that I suddenly noticed what once looked like a dream for me, i.e. living in this city and having a good job to make me feel proud, has just come to reality and I was too busy to even notice it. It wasn&#8217;t even a long time ago that I couldn&#8217;t stop dreaming about it, and now, I was living the life I wanted back then. Remembering that, made me smile and I started to wander freely, not just bolting back home. I started looking at cars, waiting in heavy traffic, and their drivers maybe wishing they were pedestrians for the time being, instead of having to move even slower than people in the side walk; I let other people pass me, looking at how fast they are walking for tomorrow, but for once in a long time, I was walking for that exact moment and enjoying looking at my surroundings and feeling victorious for what I could achieve and the life I currently have.</p>
<p>I just decided that I&#8217;m gonna slow walk home the nights that I can and enjoy feeling the moments passing by, noticing how it&#8217;s going, instead of just letting it go on its own <img src='http://hoomand.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://hoomand.com/2010/11/14/walking-slow/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Java Chat Server/Client</title>
		<link>http://hoomand.com/2010/07/26/java-chat-serverclient/</link>
		<comments>http://hoomand.com/2010/07/26/java-chat-serverclient/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 10:09:30 +0000</pubDate>
		<dc:creator>bijan</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Chat Client]]></category>
		<category><![CDATA[Chat Server]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://hoomand.com/?p=86</guid>
		<description><![CDATA[After some days of coding, I could write my simple Java chat server and client! It&#8217;s still amazing when you write a simple but strong network program. The way you feel the communication and see the bits on wire makes me always stand in awe. Anyway, you can find the program in here. Basically you [...]]]></description>
			<content:encoded><![CDATA[<p>After some days of coding, I could write my simple Java chat server and client! It&#8217;s still amazing when you write a simple but strong network program. The way you feel the communication and see the bits on wire makes me always stand in awe. Anyway, you can find the program in <a href="http://hoomand.com/repo/my-programs/">here</a>. Basically you should run the server program first, I&#8217;d suggest you go for the graphical version. It&#8217;s a multi thread program, allowing you to start/stop server whenever you want, while waiting for active connections and at the same time sending all data it gets from a connected client to the others.</p>
<div class="wp-caption aligncenter" style="width: 650px"><img style="border: 0pt none" title="Biji Chat Server" src="http://lh6.ggpht.com/_hqWokeq1fv4/TE1aZJSY3dI/AAAAAAAAAS4/vqRLUZXJ-0Y/s800/ChatServer.png" alt="" width="640" height="428" /><p class="wp-caption-text">Chat Server, after creating a server (It only shows you your ethernet IP address, to easily let the clients know!)</p></div>
<p>Then you should run the chat client. In which you can connect to any started server. You can also choose a nickname and a color and everybody else in the chat room sees ya with your preferred name &amp; color! Also when you write a new message and hit enter, you can see the window title marquee effect which makes it easy to notice a window among many other open windows in your task bar! This marquee effect almost took me a day to complete, but I like its look &amp; feel.</p>
<p>The last but not the least, thanks to Java, you can run both the server or client in  Windows, Linux and Mac!</p>
<div class="wp-caption aligncenter" style="width: 620px"><img title="Biji Chat Client" src="http://lh3.ggpht.com/_hqWokeq1fv4/TE1aYhQ3OxI/AAAAAAAAASw/dtk-FKYxISg/s800/ChatClientB4Connect.png" alt="" width="610" height="478" /><p class="wp-caption-text">The chat client, before connection</p></div>
<p style="text-align: center">
<div class="wp-caption aligncenter" style="width: 650px"><img src="http://lh6.ggpht.com/_hqWokeq1fv4/TE1aZBSMP7I/AAAAAAAAAS0/uUHFXKpkTCo/s800/ChatClientsChatting.png" alt="" width="640" height="254" /><p class="wp-caption-text">Two chat clients connected to one server:port, talking!</p></div>
<div class="wp-caption aligncenter" style="width: 650px"><img src="http://lh4.ggpht.com/_hqWokeq1fv4/TE1aZWUlefI/AAAAAAAAAS8/EjzqBmT2uzk/s800/ChatServerAndClients.png" alt="" width="640" height="316" /><p class="wp-caption-text">The server monitoring all connected clients!</p></div>
<div class="wp-caption aligncenter" style="width: 650px"><img title="Chat server disconnecting the clients" src="http://lh3.ggpht.com/_hqWokeq1fv4/TE1aZVz0AbI/AAAAAAAAATA/uy_kR0vcJQI/s800/ServerAndClientsAfterDC.png" alt="" width="640" height="314" /><p class="wp-caption-text">If you disconnect the server, all the connected clients will be disconnected too!</p></div>
]]></content:encoded>
			<wfw:commentRss>http://hoomand.com/2010/07/26/java-chat-serverclient/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>FreePBX Custom Context Module, a case study!</title>
		<link>http://hoomand.com/2010/06/16/freepbx-custom-context-module-a-case-study/</link>
		<comments>http://hoomand.com/2010/06/16/freepbx-custom-context-module-a-case-study/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 03:56:22 +0000</pubDate>
		<dc:creator>bijan</dc:creator>
				<category><![CDATA[VoIP]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Custom Context]]></category>
		<category><![CDATA[FreePBX]]></category>

		<guid isPermaLink="false">http://hoomand.com/?p=65</guid>
		<description><![CDATA[We all use FreePBX, a graphical interface on Asterisk to manage our extensions, define trunks and do everything we gotta do with our VoIP network. However, I was faced with yet another challenge recently and I found Custom Context, a 3rd party module to easily write context rules for your internal extensions, very useful. The [...]]]></description>
			<content:encoded><![CDATA[<p>We all use FreePBX, a graphical interface on Asterisk to manage our extensions, define trunks and do everything we gotta do with our VoIP network. However, I was faced with yet another challenge recently and I found <a href="http://www.freepbx.org/forum/freepbx/users/hey-hey-check-it-out-custom-context-module" target="_blank">Custom Context</a>, a 3rd party module to easily write context rules for your internal extensions, very useful.</p>
<p><strong>The Challenge</strong></p>
<p>Our call center unit has lots of personnel, and as the nature of the job dictates, they find themselves in quite unique pickles in a daily basis. Guess what happens when one of their computers doesn&#8217;t start (for a mere reason that the power cable was loose) or they SIP phone doesn&#8217;t get any IP from DHCP (again most probably coz their ethernet cable isn&#8217;t properly fixed into the network adaptor)? They know the IT personnels&#8217; direct phone extensions and just call anyone they think is more knowledgeable. Most often they just call the chief IT person. What&#8217;s wrong with that? Some people get lots of support calls, some others don&#8217;t receive any!</p>
<p>IT department internal extensions have a pattern of 2XX, i.e. for example my phone number in 299. The call center&#8217;s internal numbers follow 5XX pattern. What I wanted to do was disallowing call center personnel calling IT department directly and defining a queue with a number like 3500, that they could only call that number. Everyday, some of the IT personnel would log themselves in the aforementiond queue, thus all call center calls dialing 3500 would be answered by them. This way you can define a chart that everyday only one or two IT people have the responsibility of answering call center calls and others do more useful stuff!</p>
<p><strong>The Solution</strong></p>
<p>At first you have to install Custom Context module. I found a good manual in <a href="http://voip-iran.com/forum/b8/custom-context-688/">here</a> (It&#8217;s in Persian, if you can&#8217;t read Persian, search for it, they are other English manuals online). Now you have to go to your newly installed module and define a Custom Context containing the pattern of all extensions you don&#8217;t want to be dialled. How? Easy peasy japaneasy guys. Just make a new Custom Context, and inside it, in the Dial Rules, enter 2XX for your pattern. This is the pattern that we wana prohibit the Call Center personnel from calling. Now you have to scroll down, in the Internal Dial Plan section, should set <em>ext-local</em> equal to <em>Deny Rules</em>. Please notice that ext-local is a combo box with 4 options. If you choose Deny, means people that you&#8217;re gonna set this Custom Context for, won&#8217;t be able to call any other extension in the PBX! Yes, it doesn&#8217;t have to do anything with the Dial Plan box above anymore, if you choose Deny, means people under this Custom Context can not call any other internal number! So, we always set this to Allow, unless we wana deny some certain numbers, or allow some certain numbers (depending on your policy). In here, we choose Deny Rules, because we want the call center personnel to be able to call every other extension in the company, except those three digit numbers starting with 2.</p>
<p>A picture is worth a thousand words, so, here it goes:</p>
<p><a href="http://lh6.ggpht.com/_hqWokeq1fv4/TBXJjaT_ULI/AAAAAAAAAM8/vnT7Sa2f0eE/s800/FreePBX_CustomContext.png"></a><img class="alignleft" style="border: 2px solid black" title="FreePBX Custom Context module configuration" src="http://lh6.ggpht.com/_hqWokeq1fv4/TBXJjaT_ULI/AAAAAAAAAM8/vnT7Sa2f0eE/s800/FreePBX_CustomContext.png" alt="FreePBX Custom Context module configuration" width="619" height="800" /></p>
<p>Don&#8217;t forget to set <em>ext-queues</em> combo box to Allow, as it&#8217;s shown at the bottom of the picture above, or you won&#8217;t be able to call any queue. We&#8217;re almost done. You only have to edit every call center extension and join it in the Custom Context you defined above. They won&#8217;t be able to dial any 2XX extension! Now go and make your 3500 queue and put a password for it. Give this number as the IT Help Desk number to the call center personnel. Everyday some of you IT guys can log into your queue and wait for their beautiful calls <img src='http://hoomand.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://hoomand.com/2010/06/16/freepbx-custom-context-module-a-case-study/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>To swear or not to swear!</title>
		<link>http://hoomand.com/2010/06/09/to-swear-or-not-to-swear/</link>
		<comments>http://hoomand.com/2010/06/09/to-swear-or-not-to-swear/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 12:40:12 +0000</pubDate>
		<dc:creator>bijan</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[swear]]></category>
		<category><![CDATA[workplace]]></category>

		<guid isPermaLink="false">http://hoomand.com/?p=59</guid>
		<description><![CDATA[People have different approaches to swearing. Sometimes you can say the nastiest words [YOU can say, not me!] and you hear a general loud acceptance! People finding you very naughty and ladies get giggling. Say the same thing at the wrong place, you might get your ar$e kicked! But it&#8217;s a different thing when it [...]]]></description>
			<content:encoded><![CDATA[<p>People have different approaches to swearing. Sometimes you can say the nastiest words [YOU can say, not me!] and you hear a general loud acceptance! People finding you very naughty and ladies get giggling. Say the same thing at the wrong place, you might get your ar$e kicked! But it&#8217;s a different thing when it comes to swearing at work place. Doing it in front of the customers, duh, certainly not. Swearing can either show you&#8217;re an annoying person, or give others more room to get closer to you, into your personal territory. We don&#8217;t want either one for customers generally, do we?</p>
<p>But what about at work place, among colleagues? Well, again there are different ideas. <a href="http://blogs.bnet.com/career-advice/?p=1141" target="_blank">This lady</a> thinks its totally inappropriate and just because she never uses bad language, it should be prohibited. But <a href="http://www.foxnews.com/story/0,2933,302528,00.html" target="_blank">this research</a> is trying to show that swearing at work might even boost productivity and reduces stress. You want my opinion? Well, I certainly don&#8217;t like all time polite people, plus I always try to keep the face, not getting close to those not worth or not worth the trouble! So, really depends on where you work. For me, I could always adopt. I&#8217;ve been in places really polite, which I had to watch my mouth so damn good not to utter a word that gets me kicked out, but after a while I could get used to their own language and ways of expressing myself without crashing others. I&#8217;ve also been in rude environments, which you either had to kill or get killed! But there are those who aren&#8217;t really good at this swearing thing, they either can&#8217;t respond well if they receive one or they&#8217;re very extreme. The reality might be that there&#8217;s a wilderness out there and you gotta know how to survive in different environments, but if you find yourself in an unsuitable position, just try to talk to the bad mouth or return the colorful words, or in long turn you might end up at your office in early morning with a huge shot gun!</p>
<p>If you found yourself faking a smile at someone who knocks you out in speaking with some naughty words in regular bases, it basically means you should get more involved defending yourself &amp; not making a dumb figure around the office. In contrast, if you find someone not feeling easy with your language for a time, take it easy on them, you&#8217;re harassing the poor creature!</p>
]]></content:encoded>
			<wfw:commentRss>http://hoomand.com/2010/06/09/to-swear-or-not-to-swear/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Connectiong two seperate LANs with reverse SSH</title>
		<link>http://hoomand.com/2010/05/24/connectiong-two-seperate-lans-with-reverse-ssh/</link>
		<comments>http://hoomand.com/2010/05/24/connectiong-two-seperate-lans-with-reverse-ssh/#comments</comments>
		<pubDate>Mon, 24 May 2010 18:41:23 +0000</pubDate>
		<dc:creator>bijan</dc:creator>
				<category><![CDATA[Hacks]]></category>
		<category><![CDATA[reverse ssh]]></category>
		<category><![CDATA[tunneling]]></category>

		<guid isPermaLink="false">http://hoomand.com/?p=47</guid>
		<description><![CDATA[Lots of us use SSH (OpenSSH if I wana be exact) on a daily basis, but not all of us go through all the intricacies of this great tool unless we really need a fancy feature that we think only some high tech gizmo can answer. But then after some search or hopefully being in [...]]]></description>
			<content:encoded><![CDATA[<p>Lots of us use SSH (OpenSSH if I wana be exact) on a daily basis, but not all of us go through all the intricacies of this great tool unless we really need a fancy feature that we think only some high tech gizmo can answer. But then after some search or hopefully being in touch with those who already experience it, understand that our old commands that we thought we know completely are the remedy to our headaches!</p>
<p>Imagine you have two seperate Local Area Networks, like one in your office and one at home. These 2 are behind a firewall and of course they have a private IP address, long story short: There&#8217;s no way for&#8217;em to see each other. Something like the following picture:</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 2px solid black;" title="2 LANs &amp; a MiddleMan server" src="http://lh3.ggpht.com/_hqWokeq1fv4/S_q_x2ixQhI/AAAAAAAAAKE/XG2useMEb8I/s800/reverseSSH.jpg" alt="" width="560" height="284" /></p>
<p>As you see we have 2 LANs, our Computer A is in the first LAN, with an IP address of 192.168.1.100 and Computer B, yes, the second LAN, with the address of 10.0.0.50; You&#8217;re sitting behind Computer A at home, and wana connect to Computer B at your work place. What can you do?!</p>
<p>Let&#8217;s say both these computers can SSH to a public server in the Internet, if they can do it, you&#8217;re done. You can connect to Computer B such a way like you&#8217;re exactly sitting in the 2nd LAN, doing whatever Computer B can do, at the comfort of resting behind Computer A. How?!</p>
<p>First you need to have a ssh user on the MiddleMan computer (the server) on the Internet. Let&#8217;s say your username on that server is BijanMid. You also need to create a ssh username in Computer B, if you&#8217;ve never been behind Computer B (It&#8217;s not your work place, it&#8217;s somewhere you don&#8217;t have access to, you should ask someone in there to create it for ya), let&#8217;s say your SSH username on Computer B is BijanCompB. Ok, here comes the magic:</p>
<p>From Computer B, issue the following command:</p>
<p><strong>ssh -R 1040:localhost:22 BijanMid@MiddleMan</strong></p>
<p>This is a reverse ssh connection. It basically says anyone who later on tries to connect to port 1040 of MiddleMan, should be redirected to localhost port 22, who is localhost? Well, you&#8217;re issuing the command from Computer B, so, localhost means that!</p>
<p><strong>Note:</strong> You have to edit /etc/ssh/sshd_config and make sure you have the following configurations:</p>
<div class="codesnip-container" >TCPKeepAlive yes<br />
ClientAliveInterval 30<br />
ClientAliveCountMax 99999<br />
GatewayPorts  yes</div>
<p>The first 3 lines make sure your ssh connection doesn&#8217;t get timed out, the last line, GatewayPorts is the important figure around here, it is the one allowing you ssh into one port of middle man and diverted to your computer B.</p>
<p>Now from Computer A, execute this:</p>
<p><strong>ssh -p 1040 BijanCompB@MiddleMan</strong></p>
<p>What does it mean? It means ssh to port 1040 of MiddleMan, with the user we have at Computer B! Is it possible? Yes, If anyone ssh to port 1040 of MiddleMan, it&#8217;s redirected to ComputerB, so, we have to use Computer B&#8217;s username in here, there&#8217;s literally no middle man here!</p>
<p><strong>Caveat:</strong> If high ports like 1040 are filtered in middle man, again there&#8217;s no problem. Instead of directly sshing to port 1040 of MiddleMan, you have to first ssh to MiddleMan normally (port 22), with a user you already have in MiddleMan (Like BijanMid), and once you&#8217;re inside, you then issue:</p>
<p><strong>ssh -p 1040 BijanCompB@localhost</strong></p>
<p>Crazy, huh?! It&#8217;s like we&#8217;re trying to ssh to ourselves, but we are not, port 1040 forwards ya to Computer B.</p>
<p>There are other options as how can we restrict it to listen to certain IPs or even IP classes or how can we make it go silent without asking for a password, which I don&#8217;t wana talk about in here. I just wanted to share with ya the great hack I learned and you can dig more dirt up if you need.</p>
<p>One more thing, you can even get inside their intranet! You only need to add a -D switch to the command executed at Computer A:</p>
<p><strong>ssh -p 1040 -D 1010 BijanCompB@MiddleMan</strong></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->and then setting your browser&#8217;s proxy to use 127.0.0.1 as the proxy server listening on port 1010, using SOCKS protocol! Now you&#8217;re in their intranet as well!</p>
<p><strong>Resources</strong></p>
<p>There are many tutorials talking about this great technique, but those I found most valuable are as follows:<strong><br />
</strong></p>
<p><a href="http://www.vdomck.org/2005/11/reversing-ssh-connection.html" target="_blank">Hacktivate, reversing an SSH connection</a></p>
<p><a href="http://toic.org/2009/01/18/reverse-ssh-port-forwarding/" target="_blank">toic, reverse ssh port forwarding</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hoomand.com/2010/05/24/connectiong-two-seperate-lans-with-reverse-ssh/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>vTiger quick telephone search</title>
		<link>http://hoomand.com/2010/05/08/vtiger-quick-telephone-search/</link>
		<comments>http://hoomand.com/2010/05/08/vtiger-quick-telephone-search/#comments</comments>
		<pubDate>Sat, 08 May 2010 13:03:09 +0000</pubDate>
		<dc:creator>bijan</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[vTiger]]></category>

		<guid isPermaLink="false">http://hoomand.com/?p=29</guid>
		<description><![CDATA[vTiger is an open source Customer Relationship Management (CRM) that we use in the company. It helps the sellers to track their customers/products and can easily find their customers based on name/telephone number and lots of other parameters. I really don&#8217;t wana talk about a CRM and vTiger in here. What  I did was writing [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vtiger.com/" target="_blank">vTiger</a> is an open source Customer Relationship Management (CRM) that we use in the company. It helps the sellers to track their customers/products and can easily find their customers based on name/telephone number and lots of other parameters. I really don&#8217;t wana talk about a CRM and vTiger in here. What  I did was writing a simple patch to make telephone search much faster for the operators. Long story short, if you wanted to search for a certain customer&#8217;s tel number, you had 4 fields to go through: Office Phone, Cell Phone, Home phone and Other Phone. You don&#8217;t need to search for all of these, but in case you want to, you have to go to the Advanced search section and choose all these options:</p>
<p><img class="aligncenter" style="border: 2px solid black" title="vTiger advanced telephone search" src="http://lh6.ggpht.com/_hqWokeq1fv4/S-VdX6YlfII/AAAAAAAAAFI/dvD-VD5dQhI/s800/AdvancedPhoneSearch.png" alt="" width="800" height="166" /></p>
<p>Just imagine how hard it&#8217;d get for a call center operator to go through this myriad of times during a day! I only wrote a small patch which adds a quick search phone box prior to any search option and automatically searches for the phone number entered through all the phone fields.</p>
<p style="text-align: center"><img class="aligncenter" style="border: 2px solid black" title="super quick telephone search" src="http://lh4.ggpht.com/_hqWokeq1fv4/S-VdYcCJUOI/AAAAAAAAAFM/iVMkjtwyGtk/s800/SuperQuickPhoneSearch.png" alt="" width="800" height="223" /></p>
<p>Yup, that&#8217;s it. If you like it, you can <a href="http://hoomand.com/downloads/vtiger/SuperQuickAllTelsSearch.tar.gz" target="_blank">get the patch</a>, put it in your vTiger 5.1.0 root directory and just extract it. It&#8217;ll overwrite the necessary files <img src='http://hoomand.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Edit: My Super Quick Telephone Search patch was approved by the vTiger team. You can download it from the official <a href="http://www.vtiger.com//index.php?option=com_content&amp;task=view&amp;id=263&amp;Itemid=183" target="_blank">vTiger Extensions</a> now.</p>
<p style="text-align: center">
]]></content:encoded>
			<wfw:commentRss>http://hoomand.com/2010/05/08/vtiger-quick-telephone-search/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IELTS vs. TOEFL iBT (and The Blue Footed B00bies!)</title>
		<link>http://hoomand.com/2010/05/07/ielts-vs-toelf-and-the-blue-footed-b00bies/</link>
		<comments>http://hoomand.com/2010/05/07/ielts-vs-toelf-and-the-blue-footed-b00bies/#comments</comments>
		<pubDate>Fri, 07 May 2010 00:39:33 +0000</pubDate>
		<dc:creator>bijan</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[IELTS]]></category>
		<category><![CDATA[IELTS vs. TOEFL iBT]]></category>

		<guid isPermaLink="false">http://hoomand.com/?p=13</guid>
		<description><![CDATA[After 2 month of waiting, I finally had my IELTS test taken here in Tehran. Studying for IELTS and having IELTS is kind of a fashion around here, not to mention that most people need it as well. So, I thought let&#8217;s try killing the beast and see what happens. I had my TOEFL iBT [...]]]></description>
			<content:encoded><![CDATA[<p>After 2 month of waiting, I finally had my IELTS test taken here in Tehran. Studying for IELTS and having IELTS is kind of a fashion around here, not to mention that most people need it as well. So, I thought let&#8217;s try killing the beast and see what happens. I had my TOEFL iBT exam around 2 years ago and I was curious to see the differences between these 2 exams, I mean IELTS vs. TOEFL iBT. After all each side is blowing in its horn and there are countries who accept only IELTS, even if you have a high score in TOEFL iBT!</p>
<p>Long story short, I don&#8217;t consider IELTS a real English test! I don&#8217;t think it&#8217;s standard and I do believe the ielts.org thinks more about money than the most boasted about scientific part of the equation. Why? Well, there are couple of reasons:</p>
<ul>
<li>If you want to register for TOEFL, no matter where you are in the world, you should go to one main address: www.ets.org; that&#8217;s it, no more hassle. What about IELTS? Well, just in Iran, we have 2 different registrars, <a href="http://ielts.sanjesh.org/" target="_blank">IELTS Iran</a> and <a href="http://www.ieltstehran.com/" target="_blank">IELTS Tehran</a>. The funny thing is, they have their own different procedures! You don&#8217;t see any centralized system, for gods sake, even their website interfaces are different. In one website the picture you have to upload of yourself can not be more than 10KBs (yeah! Just 10KBs), in the other one, well, it&#8217;s ok to go couple of more kbs! It all reminds me of some Food chained stores reseller programs, the guys who wanted to be the resellers (Test sub-centers if I don&#8217;t wana insult anyone) just paid the money to the main IELTS.org and got their permission. As long as they obey to some rules of taking the test, the rest is not important!</li>
<li>Sending your TOEFL iBT results to any university in the world only costs ya $17, yes, nothing more. Not only they send a copy to that university from ets.org headquarters itself, they&#8217;d also send one recite to you wherever you are (for me, Iran). What about IELTS? Well, only issuing a certificate costs ya $50, sending it via international post is another story, it can cost ya anything between $30 to $50, so, the best case: you should pay at least $80 for one of your certificates to be sent to a university.</li>
<li>In TOEFL iBT you&#8217;re placed inside a cubicle with a computer which you interact and answer all the 4 skill questions, i.e. reading, writing, listening and speaking. It could be hard for those who are not that much comfortable with a computer, specially those who are afraid of machines taking the time or are not touch typists. In the other hand, in IELTS, you&#8217;re placed inside a big hall with almost 1000 other participants! At the beginning they read ya the instructions that are mostly about DOs and Don&#8217;ts for about 10 minutes. Instructions like &#8220;If you look left, it&#8217;s cheating, If you look right, it&#8217;s cheating, if you look at anywhere but your paper, it&#8217;s cheating!&#8221;, damn, you feel like a kindergartner! And there is this Doctor at the session, whom whenever raise his hand and says &#8220;Stop the test&#8221;, everybody should put their pencil down and stop the test! They deliberately try to make ya more anxious, from reading you the rules, to the cameras that show you your picture on the wall to show off that they can see ya whenever they want and not forgetting to mention, how many times they repeat: &#8220;We know this test is important to you, we know how important it is to you!&#8221;.</li>
<li>It happens 2 or 3 times at least during the test that the doctor just finds something suspicious and starts jabbering out loud and you have to listen to all of that. If he&#8217;s disciplining a girl about how she should keep her head straight to her paper, the others have to listen to him clear and loud, it might be a good lesson for all of them!</li>
<li>The listening section is not a standard test in my humble opinion, because first of all, you hear something, but then in the answer sheet, the phrase you see is paraphrased, it&#8217;s not exactly what you heard, but you have to enter the 2 or 3 words missing exactly as you heard them in the listening! Considering the fact that what is put in the answer sheet is itself paraphrased, you should be allowed to write a paraphrased version of the answer, not the exact verbatim words. In some questions, the answers are dependent on each other, i.e. if you don&#8217;t hear one phrase, you won&#8217;t be able to answer several questions! For example in a question that asks for directions, if you don&#8217;t hear the first answer which says for instance you have to go up and then turn left to reach Point A, then you won&#8217;t be able to answer the next part, because you simply don&#8217;t know from where you should start or where in the map you are.</li>
<li>TOEFL iBT has only multiple choice questions, it means if you understand something, you&#8217;d most probably choose the right answer in the choices you got. IELTS in the other hand almost has no multiple choice question, you have to fill in the blanks with your own beautiful handwriting!</li>
<li>The speaking test is on a different day, it means it&#8217;s another hassle! Some people have their speaking test prior to their main (listening, reading &amp; writing) test and they should check the website to find out whether their speaking is after the main test (most people are), or it&#8217;s before that. Lots of people forget, and I can see the good doctor&#8217;s face hearing this argument: &#8220;Forget? they should NOT, they are not ALLOWED to forget!&#8221;. No dear doctor, human is fallible, you could simply use their damn emails or cell phones to send them an email or a text message as a reminder. It&#8217;s 21st century and such technology isn&#8217;t considered so novel no longer! After all you&#8217;re charging us damn good, so, we might expect a little more than a bottle of mineral water and a pencil and eraser for the session!</li>
<li>You&#8217;re supposed to talk in English with the invigilators, except 2 or 3 of them who are actually the test takers themselves and are mostly British, the other invigilators can&#8217;t speak English at all! I could only see one guy who could speak English whose accent was far worse than Mulla Mohammed Omar, if he&#8217;s ever captured!</li>
</ul>
<p>On in all it&#8217;s real fun! The instructions they kept repeating only made it funnier to me. My first reading title was &#8220;Blue footed b00bies&#8221;, which was great! It took all the stress away and I thought the test is merely customized for me! Blue footed b00bies are kind of birds somewhere in the world (I really don&#8217;t care) who were so tamed and dumb at the time Spanish people entered their island, so, you could easily approach them, pick&#8217;em up and eat them! So, they&#8217;re called bubu I guess which means &#8220;stupid&#8221; in Spanish, later on it&#8217;s changed to b00bies by English people!</p>
<p>I do believe these 2 tests are money scams in the best case, coz I see no reason why some countries shouldn&#8217;t accept TOEFL and only go for IELTS or vice versa. But if I want to vote for one of them, as it&#8217;s apparent in my previous paragraphs, I&#8217;d definitely vote for TOEFL iBT, even though it might be a lot harder for the computer illiterate or those who are more willing to see a human face in the speaking test rather than a monitor. I also believe you shouldn&#8217;t put 1000 people in a huge hall and scare&#8217;em so much that they don&#8217;t even utter a hiss!</p>
]]></content:encoded>
			<wfw:commentRss>http://hoomand.com/2010/05/07/ielts-vs-toelf-and-the-blue-footed-b00bies/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://hoomand.com/2010/05/02/hello-world/</link>
		<comments>http://hoomand.com/2010/05/02/hello-world/#comments</comments>
		<pubDate>Sun, 02 May 2010 14:28:04 +0000</pubDate>
		<dc:creator>bijan</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Yes, the old hello world works in here too! The blog is finally running, thanks to all those helping me choose and set up the theme]]></description>
			<content:encoded><![CDATA[<p>Yes, the old hello world works in here too! The blog is finally running, thanks to all those helping me choose and set up the theme <img src='http://hoomand.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://hoomand.com/2010/05/02/hello-world/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
