<?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>A Whimsicalmind</title>
	<atom:link href="http://whimsicalmind.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://whimsicalmind.com</link>
	<description></description>
	<lastBuildDate>Thu, 01 Dec 2011 20:57:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>How to setup your own Ubuntu mail server (Part 1)</title>
		<link>http://whimsicalmind.com/2011/11/21/how-to-setup-your-own-ubuntu-mail-server-part-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-setup-your-own-ubuntu-mail-server-part-1</link>
		<comments>http://whimsicalmind.com/2011/11/21/how-to-setup-your-own-ubuntu-mail-server-part-1/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 22:47:20 +0000</pubDate>
		<dc:creator>David Cooke</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Server Administration]]></category>
		<category><![CDATA[dovecot]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[linode]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[server administrator]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://whimsicalmind.com/?p=59</guid>
		<description><![CDATA[Many times I find myself in a conversation with people about the difficulty of hosting their own mail servers. It&#8217;s a common belief that they&#8217;re hard to build and maintain. In this series of tutorials, I will hopefully be able &#8230; <a href="http://whimsicalmind.com/2011/11/21/how-to-setup-your-own-ubuntu-mail-server-part-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Many times I find myself in a conversation with people about the difficulty of hosting their own mail servers. It&#8217;s a common belief that they&#8217;re hard to build and maintain. In this series of tutorials, I will hopefully be able to disprove this idea.</p>
<p>I have split this into 2 parts. Part 1 (this part) will cover the initial installation and configuration of the IMAP and SMTP servers. Part 2 will cover how to add email accounts and setting up a webmail client. If it is popular, I may add more parts covering anti-spam, anti-virus&#8230; etc.</p>
<p>This tutorial assumes you have an Ubuntu 10.04 LTS installation, with Apache, MySQL and PHP pre installed / configured. That phpMyAdmin is installed. That you have a domain, and the DNS records are pointing to your server. That you have root access to your server via SSH. That you have a SSH client installed on your local machine. It is also assumed that you are familiar with basic Linux command line use.</p>
<p>If you want any additional how-tos for any of the above, then leave me a comment.</p>
<p>If you do not have a server, then I recommend a <a href="http://www.linode.com/?r=fc5879ae77aaa819de693a3bbf68059fa50c4f2b">Linode VPS</a>. For my email server, I am using a <a href="http://www.linode.com/?r=fc5879ae77aaa819de693a3bbf68059fa50c4f2b">Linode 512</a>. Under £15 ($20) per month.</p>
<h2>Step 1</h2>
<p>First we need to install the base packages. Open your SSH client and log into your server.</p>
<blockquote><p>sudo apt-get install postfix postfix-mysql postfix-doc dovecot-common dovecot-imapd dovecot-pop3d libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl telnet mailutils</p></blockquote>
<p>During this installation, you will be prompted by the Postfix package configuration. In the first prompt, select &#8220;Internet Site&#8221;.</p>
<p style="text-align: center;"><a href="http://whimsicalmind.com/wp-content/uploads/2011/11/Screenshot-at-2011-11-20-230452.png"><img class="aligncenter size-full wp-image-95" title="Screenshot at 2011-11-20 23:04:52" src="http://whimsicalmind.com/wp-content/uploads/2011/11/Screenshot-at-2011-11-20-230452.png" alt="" width="724" height="428" /></a></p>
<p>In the second prompt, you should enter the domain name of your server, eg. mail.domain.com.</p>
<p style="text-align: center;"><a href="http://whimsicalmind.com/wp-content/uploads/2011/11/Screenshot-at-2011-11-20-230515.png"><img class="aligncenter size-full wp-image-96" title="Screenshot at 2011-11-20 23:05:15" src="http://whimsicalmind.com/wp-content/uploads/2011/11/Screenshot-at-2011-11-20-230515.png" alt="" width="724" height="428" /></a></p>
<h2>Step 2</h2>
<p>Now we need to setup MySQL for the virtual domains and users.</p>
<p>Log into phpMyAdmin and create a new database called &#8220;email&#8221;.</p>
<p style="text-align: center;"><a href="http://whimsicalmind.com/wp-content/uploads/2011/11/mail1.eazyti.gr-screen-capture-2011-11-20-23-16-36.png"><img class="aligncenter size-large wp-image-100" title="mail1.eazyti.gr screen capture 2011-11-20-23-16-36" src="http://whimsicalmind.com/wp-content/uploads/2011/11/mail1.eazyti.gr-screen-capture-2011-11-20-23-16-36-1024x482.png" alt="" width="1024" height="482" /></a></p>
<p>In the SQL tab of phpMyAdmin, enter the following to create an email admin user. You can change the username and password, but I will use &#8220;email_admin&#8221; and &#8220;email_admin_password&#8221; for the purpose of this tutorial.</p>
<blockquote><p>GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO &#8216;mail_admin&#8217;@'localhost&#8217; IDENTIFIED BY &#8216;mail_admin_password&#8217;;<br />
FLUSH PRIVILEGES;</p></blockquote>
<p style="text-align: center;"><a href="http://whimsicalmind.com/wp-content/uploads/2011/11/mail1.eazyti.gr-screen-capture-2011-11-20-23-26-36.png"><img class="aligncenter size-large wp-image-102" title="mail1.eazyti.gr screen capture 2011-11-20-23-26-36" src="http://whimsicalmind.com/wp-content/uploads/2011/11/mail1.eazyti.gr-screen-capture-2011-11-20-23-26-36-1024x486.png" alt="" width="1024" height="486" /></a></p>
<p>Now select the email database and enter the following in the SQL tab to create tables for virtual domains, mail forwardings, users and transport.</p>
<blockquote><p>CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain));<br />
CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));<br />
CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email));<br />
CREATE TABLE transport (domain varchar(128) NOT NULL default &#8221;, transport varchar(128) NOT NULL default &#8221;, UNIQUE KEY domain (domain));</p></blockquote>
<p style="text-align: center;"><a href="http://whimsicalmind.com/wp-content/uploads/2011/11/mail1.eazyti.gr-screen-capture-2011-11-20-23-31-8.png"><img class="aligncenter size-large wp-image-106" title="mail1.eazyti.gr screen capture 2011-11-20-23-31-8" src="http://whimsicalmind.com/wp-content/uploads/2011/11/mail1.eazyti.gr-screen-capture-2011-11-20-23-31-8-1024x486.png" alt="" width="1024" height="486" /></a></p>
<h2>Step 3</h2>
<p>Now we&#8217;re going to configure the SMTP server (Postfix) to use the MySQL database and tables we just setup.</p>
<p>Create the following files with the following contents.</p>
<blockquote><p><strong>FILE: /etc/postfix/mysql-virtual_domains.cf<br />
</strong>user = email_admin<br />
password = email_admin_password<br />
dbname = email<br />
query = SELECT domain AS virtual FROM domains WHERE domain=&#8217;%s&#8217;<br />
hosts = 127.0.0.1</p>
<p><strong>FILE: /etc/postfix/mysql-virtual_forwardings.cf<br />
</strong>user = email_admin<br />
password = email_admin_password<br />
dbname = email<br />
query = SELECT destination FROM forwardings WHERE source=&#8217;%s&#8217;<br />
hosts = 127.0.0.1</p>
<p><strong>FILE: /etc/postfix/mysql-virtual_mailboxes.cf<br />
</strong>user = email_admin<br />
password = email_admin_password<br />
dbname = email<br />
query = SELECT CONCAT(SUBSTRING_INDEX(email,&#8217;@',-1),&#8217;/',SUBSTRING_INDEX(email,&#8217;@',1),&#8217;/') FROM users WHERE email=&#8217;%s&#8217;<br />
hosts = 127.0.0.1</p>
<p><strong>FILE: /etc/postfix/mysql-virtual_email2email.cf<br />
</strong>user = email_admin<br />
password = email_admin_password<br />
dbname = email<br />
query = SELECT email FROM users WHERE email=&#8217;%s&#8217;<br />
hosts = 127.0.0.1</p></blockquote>
<p>Now change the permissions and ownership of these files.</p>
<blockquote><p>chmod o= /etc/postfix/mysql-virtual_*.cf</p>
<p>chgrp postfix /etc/postfix/mysql-virtual_*.cf</p></blockquote>
<p>Then we create a user and group for mail handling.</p>
<blockquote><p>groupadd -g 5000 vmail</p>
<p>useradd -g vmail -u 5000 vmail -d /home/vmail -m</p></blockquote>
<p>Now enter the following commands to complete the Postfix configuration.</p>
<blockquote><p>sudo postconf -e &#8216;myhostname = mail.domain.com&#8217;</p>
<p>sudo postconf -e &#8216;mydestination = mail.domain.com, localhost&#8217;</p>
<p>sudo postconf -e &#8216;mynetworks = 127.0.0.0/8&#8242;</p>
<p>sudo postconf -e &#8216;message_size_limit = 30720000&#8242;</p>
<p>sudo postconf -e &#8216;virtual_alias_domains =&#8217;</p>
<p>sudo postconf -e &#8216;virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf&#8217;</p>
<p>sudo postconf -e &#8216;virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf&#8217;</p>
<p>sudo postconf -e &#8216;virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf&#8217;</p>
<p>sudo postconf -e &#8216;virtual_mailbox_base = /home/vmail&#8217;</p>
<p>sudo postconf -e &#8216;virtual_uid_maps = static:5000&#8242;</p>
<p>sudo postconf -e &#8216;virtual_gid_maps = static:5000&#8242;</p>
<p>sudo postconf -e &#8216;smtpd_sasl_auth_enable = yes&#8217;</p>
<p>sudo postconf -e &#8216;broken_sasl_auth_clients = yes&#8217;</p>
<p>sudo postconf -e &#8216;smtpd_sasl_authenticated_header = yes&#8217;</p>
<p>sudo postconf -e &#8216;smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&#8217;</p>
<p>sudo postconf -e &#8216;smtpd_use_tls = yes&#8217;</p>
<p>sudo postconf -e &#8216;smtpd_tls_cert_file = /etc/postfix/smtpd.cert&#8217;</p>
<p>sudo postconf -e &#8216;smtpd_tls_key_file = /etc/postfix/smtpd.key&#8217;</p>
<p>sudo postconf -e &#8216;virtual_create_maildirsize = yes&#8217;</p>
<p>sudo postconf -e &#8216;virtual_maildir_extended = yes&#8217;</p>
<p>sudo postconf -e &#8216;proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps&#8217;</p>
<p>sudo postconf -e virtual_transport=dovecot</p>
<p>sudo postconf -e dovecot_destination_recipient_limit=1</p></blockquote>
<h2>Step 4</h2>
<p>Now we need to create a SSL Certificate for our SMTP server.</p>
<blockquote><p>cd /etc/postfix</p>
<p>sudo openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x5</p></blockquote>
<p>You will be prompted to enter a few details. These will show when someone views the details of the certificate. The one to make sure you get right here, is when you&#8217;re prompted &#8220;Common Name (eg, YOUR name) []:&#8221;. This is where you must enter the name of your server, eg. mail.domain.com.</p>
<blockquote><p>chmod o= /etc/postfix/smtpd.key</p></blockquote>
<h2>Step 5</h2>
<p>Now we need to configure saslauthd to use MySQL.</p>
<blockquote><p>sudo mkdir -p /var/spool/postfix/var/run/saslauthd</p></blockquote>
<p>Whilst making sure you enter your own username and password where necessary, replace the contents of the following files.</p>
<blockquote><p><strong>FILE</strong><strong>: /etc/default/saslauthd</strong><br />
START=yes<br />
DESC=&#8221;SASL Authentication Daemon&#8221;<br />
NAME=&#8221;saslauthd&#8221;<br />
MECHANISMS=&#8221;pam&#8221;<br />
MECH_OPTIONS=&#8221;"<br />
THREADS=5<br />
OPTIONS=&#8221;-c -m /var/spool/postfix/var/run/saslauthd -r&#8221;</p></blockquote>
<div>
<blockquote><p><strong>FILE: /etc/pam.d/smtp</strong><br />
auth    required   pam_mysql.so user=email_admin passwd=email_admin_password host=127.0.0.1 db=email table=users usercolumn=email passwdcolumn=password crypt=1<br />
account sufficient pam_mysql.so user=email_admin passwd=email_admin_password host=127.0.0.1 db=email table=users usercolumn=email passwdcolumn=password crypt=1</p>
<p><strong>FILE: /etc/postfix/sasl/smtpd.conf</strong><br />
pwcheck_method: saslauthd<br />
mech_list: plain login<br />
allow_plaintext: true<br />
auxprop_plugin: mysql<br />
sql_hostnames: 127.0.0.1<br />
sql_user: email_admin<br />
sql_passwd: email_admin_password<br />
sql_database: email<br />
sql_select: select password from users where email = &#8216;%u&#8217;</p></blockquote>
<p>Change file permissions and restart services.</p>
<blockquote><p>sudo chmod o= /etc/pam.d/smtp</p>
<p>sudo chmod o= /etc/postfix/sasl/smtpd.conf</p>
<p>sudo adduser postfix sasl</p>
<p>sudo service postfix restart</p>
<p>sudo service saslauthd restart</p></blockquote>
<h2>Step 6</h2>
<p>Now we need to configure our IMAP server (Dovecot).</p>
<p>Whilst making sure you enter your own username and password where necessary, replace the contents of the following files.</p>
<blockquote><p><strong>FILE: /etc/postfix/master.cf (append to bottom)<br />
</strong>dovecot   unix  -       n       n       -       -       pipe<br />
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}</p>
<p><strong>FILE: /etc/dovecot/dovecot.conf</strong><br />
protocols = imap imaps<br />
log_timestamp = &#8220;%Y-%m-%d %H:%M:%S &#8221;<br />
mail_location = maildir:/home/vmail/%d/%n/Maildir<br />
ssl_cert_file = /etc/ssl/certs/dovecot.pem<br />
ssl_key_file = /etc/ssl/private/dovecot.pem<br />
namespace private {<br />
separator = .<br />
prefix = INBOX.<br />
inbox = yes<br />
}<br />
protocol lda {<br />
log_path = /home/vmail/dovecot-deliver.log<br />
auth_socket_path = /var/run/dovecot/auth-master<br />
postmaster_address = postmaster@example.com<br />
mail_plugins = sieve<br />
global_script_path = /home/vmail/globalsieverc<br />
}<br />
auth default {<br />
user = root<br />
passdb sql {<br />
args = /etc/dovecot/dovecot-sql.conf<br />
}<br />
userdb static {<br />
args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes<br />
}<br />
socket listen {<br />
master {<br />
path = /var/run/dovecot/auth-master<br />
mode = 0600<br />
user = vmail<br />
}<br />
client {<br />
path = /var/spool/postfix/private/auth<br />
mode = 0660<br />
user = postfix<br />
group = postfix<br />
}<br />
}<br />
}</p>
<p>FILE: /etc/dovecot/dovecot-sql.conf<br />
driver = mysql<br />
connect = host=127.0.0.1 dbname=email user=email_admin password=email_admin_password<br />
default_pass_scheme = CRYPT<br />
password_query = SELECT email as user, password FROM users WHERE email=&#8217;%u&#8217;;</p></blockquote>
<p>Change file permissions and restart services.</p>
<blockquote><p>sudo chgrp vmail /etc/dovecot/dovecot.conf</p>
<p>sudo chmod g+r /etc/dovecot/dovecot.conf</p>
<p>sudo service dovecot restart</p></blockquote>
<h2>Step 7</h2>
<p>Now we simply need to test our IMAP server is working.</p>
<blockquote><p>telnet localhost imap</p></blockquote>
<p>If you see output similar to the following, then it&#8217;s working correctly.</p>
<blockquote><p>Trying 127.0.0.1&#8230;<br />
Connected to localhost.localdomain.<br />
Escape character is &#8216;^]&#8217;.<br />
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready.</p></blockquote>
<p>&nbsp;</p>
<p>Look out for Part 2 in the next day or so, to find out how to setup email addresses and an email client.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://whimsicalmind.com/2011/11/21/how-to-setup-your-own-ubuntu-mail-server-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PhoneGap Conditional Javascript</title>
		<link>http://whimsicalmind.com/2011/11/14/phonegap-conditional-javascript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=phonegap-conditional-javascript</link>
		<comments>http://whimsicalmind.com/2011/11/14/phonegap-conditional-javascript/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 17:23:32 +0000</pubDate>
		<dc:creator>David Cooke</dc:creator>
				<category><![CDATA[Mobile Development]]></category>
		<category><![CDATA[mobile developer]]></category>
		<category><![CDATA[phonegap]]></category>

		<guid isPermaLink="false">http://whimsicalmind.com/?p=53</guid>
		<description><![CDATA[Today I came across a PhoneGap problem that had me racking my brains for hours. Not sure if anyone has had the same problem? The app I&#8217;m working on needs to work on both iOS and Android, and also Blackberry &#8230; <a href="http://whimsicalmind.com/2011/11/14/phonegap-conditional-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today I came across a PhoneGap problem that had me racking my brains for hours. Not sure if anyone has had the same problem?</p>
<p>The app I&#8217;m working on needs to work on both iOS and Android, and also Blackberry OS at a later date. After some time debugging and Googling, it turns out, PhoneGap has a different Javascript, dependant on the platform. For some reason, this isn&#8217;t very well documented.</p>
<p>PhoneGap build also has limitations, in that you cannot specify a set of files to build for a specific platform. Whatever you upload, gets built for all platforms.</p>
<p>The only solution is to check what platform the device is, and then load the correct platforms PhoneGap.</p>
<blockquote><p>&lt;script type=&#8221;text/javascript&#8221; charset=&#8221;utf-8&#8243;&gt;<br />
var ua = navigator.userAgent;<br />
var platform = {<br />
iphone: ua.match(/(iPhone|iPod|iPad)/),<br />
android: ua.match(/Android/)<br />
};</p>
<p>if (platform.android) {<br />
document.write(&#8216;&lt;script src=&#8221;phonegap_android_1_2_0.js&#8221;&gt;&lt;\/script&gt;&#8217;);<br />
} else if (platform.iphone) {<br />
document.write(&#8216;&lt;script src=&#8221;phonegap_ios_1_2_0.js&#8221;&gt;&lt;\/script&gt;&#8217;);<br />
}<br />
&lt;/script&gt;</p></blockquote>
<p>Hopefully this will save someone else hours of debugging.</p>
]]></content:encoded>
			<wfw:commentRss>http://whimsicalmind.com/2011/11/14/phonegap-conditional-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Setup</title>
		<link>http://whimsicalmind.com/2011/11/13/my-setup/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=my-setup</link>
		<comments>http://whimsicalmind.com/2011/11/13/my-setup/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 01:08:30 +0000</pubDate>
		<dc:creator>David Cooke</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[beyond compare]]></category>
		<category><![CDATA[phonegap]]></category>
		<category><![CDATA[rabbitvcs]]></category>
		<category><![CDATA[ripple emulator]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[sublime text]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://whimsicalmind.com/?p=20</guid>
		<description><![CDATA[Despite needing to fulfil a number of roles in my job, I don&#8217;t like to have a vast amount of software installed on my machines. This is more than likely down to my untidiness OCD. Operating System Over the years, &#8230; <a href="http://whimsicalmind.com/2011/11/13/my-setup/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Despite needing to fulfil a number of roles in my job, I don&#8217;t like to have a vast amount of software installed on my machines. This is more than likely down to my untidiness OCD.</p>
<h2>Operating System</h2>
<p>Over the years, I have tried many different operating systems, but these days I find Ubuntu suits my needs best.</p>
<p>I have nothing against Windows, Mac, or other linux distros. Windows does a very good job for the majority of its users. It is fairly flexible and usable which is all most people need in an OS. Mac is less flexible and focuses more on looking pretty. Linux however, is far quicker, far more secure, and in most distros, more flexible / customisable.</p>
<p>I&#8217;m currently using Ubuntu 11.10 x64 with Unity 2D.</p>
<h2>Web Browsers</h2>
<p>Unfortunately, as my primary role is a web developer, web browsers are the only thing I can&#8217;t have the minimum of.</p>
<p>Within Ubuntu, I have to have Firefox, Chrome and Opera.</p>
<p>Though it is possible to install Safari and IE in Ubuntu using Wine, I don&#8217;t believe this setup gives an accurate enough representation for browser testing. Besides which, it is a bit messy. For thes reasons, I use <a href="https://www.virtualbox.org/">VirtualBox</a> to install Windows 7, and then install IE and Safari for testing.</p>
<h2>Browser Plugins</h2>
<p>Having used Firefox since the very early days, back when it was called Firebird, I find it hard to use any other browsers for anything besides testing. This is why I have most plugins installed in Firefox.</p>
<p><a href="http://chrispederick.com/work/web-developer/">Web Developer toolbar</a>, <a href="http://getfirebug.com/">Firebug</a> and <a href="http://developer.yahoo.com/yslow/">YSlow</a>, <a href="http://adblockplus.org/en/">AdBlock Plus</a> and <a href="http://lastpass.com/">LastPass</a> are installed in Firefox.</p>
<p>The only other plugin I really use, is for mobile development. This is an excellent plugin called <a href="http://ripple.tinyhippos.com/">Ripple Emulator</a>. Unfortunately it is only available for Chrome, but it is especially useful for developing mobile sites, or even mobile apps using <a href="http://phonegap.com/">PhoneGap</a>.</p>
<h2>Email Client</h2>
<p>Being a Mozilla fanboy, this is rather a simple one. <a>Thunderbird</a>, with the <a href="http://www.mozilla.org/projects/calendar/lightning/">Lightning calendar plugin</a>.</p>
<p>It&#8217;s reliable, fast, and not bloated with features I wont use.</p>
<h2>Text Editor</h2>
<p>As any developer will tell you, this is the software they use most. Almost every working day of our lives in fact. So it is important to get this right.</p>
<p>In the past I used Windows. The best code editor out there for Windows, in my opinion, is Dreamweaver. However this is not available natively for linux.</p>
<p>It seems that there is no middle ground with linux text editors. You can either have a really simple editor, like gedit, or a bloated IDE like Eclipse.</p>
<p>In the end, I found the <a href="http://www.sublimetext.com/">Sublime Text</a> project. It has everything I need, and is so flexible that should I ever need something that isn&#8217;t included, it is relatively easy to write it myself. Also, as the project is in beta currently, the developer is open to suggestions on new feature requests. It isn&#8217;t free, but it is the best $59 I ever spent on software. The biggest box it ticks on my list of requirements, is speed. If you use Sublime, then you will know what I&#8217;m talking about.</p>
<p>I would recommend anyone trying this, to get <a href="http://www.sublimetext.com/2">Sublime Text 2</a>. It is updated almost daily and despite being beta, is very stable.</p>
<h2>Version Software</h2>
<p>One of the hardest changes when moving from Windows to Linux, was finding version software that worked how I wanted it to. Previously using <a href="http://tortoisesvn.net/">TortoiseSVN</a>, which works via shell context menu integration, meant it was hard to use any dedicated software.</p>
<p><a href="http://www.rabbitvcs.org/">RabbitVCS </a>is the only piece of software (at least that I know), that provides shell context menu integration with Ubuntu. It integrates into both Nautilus, Thunar and Gedit. Not only is it for Subversion, but it is for Git too.</p>
<h2>FTP Client</h2>
<p>For FTP I use 2 pieces of software, depending on the task.</p>
<p>If it is simply uploading files to a remote server, then I use faithful old <a href="http://filezilla-project.org/">Filezilla</a>. Fast, easy to use and has never let me down.</p>
<p>For more complex tasks, where I need to upload changed files, or compare remote files, I use <a href="http://www.scootersoftware.com/">Beyond Compare 3</a>. Though this is not free, the $50 it costs, would easily be regained in hours saved working out what files have changed and manually merging files. It allows for file / folder comparison and sync between local / local, local / remote, remote / remote.</p>
<h2>Misc</h2>
<p>Other software I have installed are, Dropbox, Libre Office suite, Skype and Pidgin for obvious reasons.</p>
]]></content:encoded>
			<wfw:commentRss>http://whimsicalmind.com/2011/11/13/my-setup/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>QRBoards.com</title>
		<link>http://whimsicalmind.com/2011/11/12/qrboards-com/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qrboards-com</link>
		<comments>http://whimsicalmind.com/2011/11/12/qrboards-com/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 00:32:01 +0000</pubDate>
		<dc:creator>David Cooke</dc:creator>
				<category><![CDATA[Something New]]></category>
		<category><![CDATA[Websites]]></category>
		<category><![CDATA[eazytiger]]></category>
		<category><![CDATA[qr code]]></category>
		<category><![CDATA[qrboards]]></category>

		<guid isPermaLink="false">http://whimsicalmind.com/?p=16</guid>
		<description><![CDATA[QRBoards.com is a new site, launched yesterday by Eazytiger. I was the lead developer for the duration of the project, working with another developer, @olimortimer and a Eazytiger&#8217;s Creative Manager, @DangerousMrD. The concept was to create a method for allowing &#8230; <a href="http://whimsicalmind.com/2011/11/12/qrboards-com/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.qrboards.com">QRBoards.com</a> is a new site, launched yesterday by <a href="http://www.eazytiger.net">Eazytiger</a>.</p>
<p>I was the lead developer for the duration of the project, working with another developer, <a href="http://twitter.com/olimortimer">@olimortimer</a> and a Eazytiger&#8217;s Creative Manager, <a href="http://twitter.com/DangerousMrD">@DangerousMrD</a>.</p>
<p>The concept was to create a method for allowing estate agents to present more information to the general public, outside the property. It was important that this would be usable, without having to modify their existing property boards. The solution is relatively simple. To add a smaller board below the existing boards, which contains a qr code. With the smart-phone market share so great, this will allow passers by to scan the qr board outside the property and then direct them to the estate agents website and property details page, for the property they are standing out side of.</p>
<p>So, if you are an estate agent, or know of any, then let them know about our new site, <a href="http://www.qrboards.com">QRBoards.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://whimsicalmind.com/2011/11/12/qrboards-com/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>First Post!</title>
		<link>http://whimsicalmind.com/2011/11/11/first-post/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=first-post</link>
		<comments>http://whimsicalmind.com/2011/11/11/first-post/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 23:45:35 +0000</pubDate>
		<dc:creator>David Cooke</dc:creator>
				<category><![CDATA[Something New]]></category>
		<category><![CDATA[cv]]></category>
		<category><![CDATA[eazytiger]]></category>
		<category><![CDATA[mobile developer]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[resume]]></category>
		<category><![CDATA[server administrator]]></category>
		<category><![CDATA[web developer]]></category>

		<guid isPermaLink="false">http://whimsicalmind.com/?p=6</guid>
		<description><![CDATA[Just a quick introductory post for my first one! My name is David. A 25 year old Web Developer / Mobile Developer / Server Administrator from Derby, UK. I work for Eazytiger Ltd, a Leicestershire based new media agency. After &#8230; <a href="http://whimsicalmind.com/2011/11/11/first-post/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Just a quick introductory post for my first one!</p>
<p>My name is David. A 25 year old Web Developer / Mobile Developer / Server Administrator from Derby, UK. I work for <a href="http://www.eazytiger.net" target="_blank">Eazytiger Ltd</a>, a Leicestershire based new media agency.</p>
<p>After many years away from blogging, I have decided it&#8217;s time to get back into it. I intend to blog about many things, mostly related to my work as a developer &amp; server admin.</p>
<p>As a self taught developer, I learned much from the open source community. So I intend contribute to / start new open source projects in the near future.</p>
<p>If you want to know a little more about me professionally, take a look at my <a href="http://jadeyo.com" target="_blank">online CV</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://whimsicalmind.com/2011/11/11/first-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

