<?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/"
	>

<channel>
	<title>John Lai</title>
	<atom:link href="http://www.john-lai.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.john-lai.com</link>
	<description>work of life</description>
	<pubDate>Sat, 24 Jul 2010 12:55:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Consulting Budget - Estimate Overruns - Fixed Price Game</title>
		<link>http://www.john-lai.com/2010/07/17/consulting-budget-estimate-overruns-fixed-price-game/</link>
		<comments>http://www.john-lai.com/2010/07/17/consulting-budget-estimate-overruns-fixed-price-game/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 02:11:58 +0000</pubDate>
		<dc:creator>John Lai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[budget overrun]]></category>

		<category><![CDATA[business]]></category>

		<category><![CDATA[Consulting]]></category>

		<category><![CDATA[project estimates]]></category>

		<guid isPermaLink="false">http://www.john-lai.com/?p=640</guid>
		<description><![CDATA[I was reading this article
ERP Cost: Getting Real
A lot of what is said applies to freelance web software development.  Key points are:
1. There is a direct correlation between the cost of consulting services and the ability of the client to take more project responsibility. This goes beyond just cost; it is also about increasing the [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading this article</p>
<p><a href="http://it.toolbox.com/blogs/street-smart-erp/erp-cost-getting-real-part-5-of-5-of-the-erp-project-planning-series-39649">ERP Cost: Getting Real</a></p>
<p>A lot of what is said applies to freelance web software development.  Key points are:</p>
<p>1. There is a direct correlation between the cost of consulting services and the ability of the client to take more project responsibility. This goes beyond just cost; it is also about increasing the probability of success.</p>
<p>2. Many clients naively believe fixed price agreements (as opposed to hourly billing) are “risk free”. The false premise is “if we can just get the consultants to own all the project risk, it becomes their problem not ours”. Unfortunately for the client, dumb people do not run consulting firms. Therefore, the devil is in the fine print. If it is not, chances are the consultants are desperate for business and there are probably reasons why. Let the buyer beware.</p>
<p>3. <strong>No project has ever failed because of over budgeting during the project justification phase.</strong> In fact, clients should be conservative with the ROI.   On the other hand, plenty of goods projects have “failed”  as a result of unrealistic cost estimates right out of the gate (not because of execution).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.john-lai.com/2010/07/17/consulting-budget-estimate-overruns-fixed-price-game/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Guts to start a business</title>
		<link>http://www.john-lai.com/2010/07/15/guts-to-start-a-business/</link>
		<comments>http://www.john-lai.com/2010/07/15/guts-to-start-a-business/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 18:12:52 +0000</pubDate>
		<dc:creator>John Lai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[business]]></category>

		<category><![CDATA[entrepreneur]]></category>

		<category><![CDATA[start up]]></category>

		<guid isPermaLink="false">http://www.john-lai.com/?p=636</guid>
		<description><![CDATA[I explained to a friend why I find it easy to takes risks in life and business.   Here it is:
This reminds me of a story you told me about entrepreneurs being fearless risk takers.  Here&#8217;s why I fit the bill.
Growing up in chinatown in a low income family, constantly in debt to friends and landlords, [...]]]></description>
			<content:encoded><![CDATA[<p>I explained to a friend why I find it easy to takes risks in life and business.   Here it is:</p>
<blockquote><p>This reminds me of a story you told me about entrepreneurs being fearless risk takers.  Here&#8217;s why I fit the bill.</p>
<p>Growing up in chinatown in a low income family, constantly in debt to friends and landlords, we&#8217;ve all learnt to not be afraid of surviving with little or no money (only exiled to Mississauga 4 years ago when my parents couldn&#8217;t work in a restaurant anymore, so we needed a place to live).  It&#8217;s easy to take risks when your back is against the wall with nothing to lose.  My parents never had the privilege of education because of Japanese occupation, WW2 and the cultural revolution.  My dad especially lost everything during that time.  He tells me stories of pan handling on the streets and being chased away by japanese soldiers.</p>
<p>So as an entrepreneur, I think if there are people like my parents pan handling on the streets in war torn countries, having the guts to start a business in a first world nation is child&#8217;s play.  I&#8217;ve got nothing to lose and everything to gain, so I might as well take a shot at proving to people with enough hard work and luck, you can actually claw your way out of poverty (after 2 or 3 generations).</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.john-lai.com/2010/07/15/guts-to-start-a-business/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Client Levels - How to get high-end clients</title>
		<link>http://www.john-lai.com/2010/07/15/client-levels-how-to-get-high-end-clients/</link>
		<comments>http://www.john-lai.com/2010/07/15/client-levels-how-to-get-high-end-clients/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 08:04:21 +0000</pubDate>
		<dc:creator>John Lai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[boutique clients]]></category>

		<category><![CDATA[business]]></category>

		<category><![CDATA[contract]]></category>

		<category><![CDATA[contracting]]></category>

		<category><![CDATA[contractor]]></category>

		<category><![CDATA[freelance]]></category>

		<category><![CDATA[high end clients]]></category>

		<category><![CDATA[start up]]></category>

		<guid isPermaLink="false">http://www.john-lai.com/?p=616</guid>
		<description><![CDATA[A question that many freelancers asks is, &#8220;how do I move away from low budget clients to high end clients?&#8221;  This is a difficult question to answer, but it&#8217;s generally along the lines of being good at what you do, being a nice person to work with, being patient and marketing yourself well.  The last [...]]]></description>
			<content:encoded><![CDATA[<p>A question that many freelancers asks is, &#8220;how do I move away from low budget clients to high end clients?&#8221;  This is a difficult question to answer, but it&#8217;s generally along the lines of being good at what you do, being a nice person to work with, being patient and marketing yourself well.  The last point, marketing yourself well, can be a difficult thing for programmers to do.  It normally includes targeting the right audience.</p>
<p>The purpose of this post is to introduce the concept of &#8220;client levels&#8221; which should help freelance programmers target the right audience.  Here we go</p>
<p>I generally assign a &#8220;level&#8221; to a client to indicate his profitability for my business.   They are:</p>
<p><strong>Level 0 to 10</strong> - These clients are friends or family members who have no appreciation and/or no understanding of what it is you do.  As such, you volunteer your time to help them.   These client projects are good if you need to assemble a portfolio from scratch.</p>
<p><strong>Level 10 to 20</strong> - These clients are friends or small businesses with a small budget who have no appreciation and/or no understanding of what it is you do.  They pay you anywhere between nothing and less than minimum wage for your work. These client projects are good if you need to assemble a portfolio from scratch and if you need a couple of dollars for Tooney Tuesdays at KFC to ward off starvation.</p>
<p><strong>Level 20 to 30</strong> - These clients are small to medium size &#8220;established&#8221; businesses that do not appreciate the value of your work.  So although they are capable of paying for your work at market value, it is hard to convince them to actually do so because they compare you to high school students or some IT guys in India.  With enough haggling, these client projects can sustain your business.  Hooray!  You have enough money for a Quarter Pounder Meal at McDonalds!</p>
<p><strong>Level 30 to 40</strong> - These clients are small to medium size established businesses that appreciate the value of your work.  They do not hesitate to pay you the market value for your work because they consider you a valuable resource.  They know that they need your help to &#8220;take their business to the next level&#8221;, but they lack a clear strategy on how to do it and they are mired by disorganization.  These clients are great if, additional to your advertised primary skill sets, you are able to clarify their business strategies and help them execute it.</p>
<p><strong>Level 40 and up</strong> - I haven&#8217;t gotten these clients yet, so they are all one amorphous blob.  But I presume they all have clear business strategies, great organization, significant cashflows and a history of great execution.</p>
<p><strong>IMPORTANT NOTE</strong>: You can expect clients in each level to refer other clients within the same vicinity level.  So for example,  a level 10 client may refer clients between level 5 and level 15.   So if you&#8217;re starting with clients at level 0, it may take you 3 years of 24/7 work to obtain level 40 clients.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.john-lai.com/2010/07/15/client-levels-how-to-get-high-end-clients/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Install Postfix on Ubuntu</title>
		<link>http://www.john-lai.com/2010/07/15/install-postfix-on-ubuntu/</link>
		<comments>http://www.john-lai.com/2010/07/15/install-postfix-on-ubuntu/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 07:27:01 +0000</pubDate>
		<dc:creator>John Lai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[mail]]></category>

		<category><![CDATA[postfix]]></category>

		<category><![CDATA[smtp]]></category>

		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.john-lai.com/?p=612</guid>
		<description><![CDATA[Install Postfix
Postfix will be your mail server.  Install it by simply typing into shell:
sudo apt-get install postfix
Install TLS Encryption
You&#8217;d want to encrypt your outgoing mail.  Issue the following commands (this is an excerpt from ubuntu site):

touch smtpd.key
chmod 600 smtpd.key
openssl genrsa 1024 &#62; smtpd.key
openssl req -new -key smtpd.key -x509 -days 3650 -out smtpd.crt # has prompts
openssl [...]]]></description>
			<content:encoded><![CDATA[<h2>Install Postfix</h2>
<p>Postfix will be your mail server.  Install it by simply typing into shell:</p>
<blockquote><p>sudo apt-get install postfix</p></blockquote>
<h2>Install TLS Encryption</h2>
<p>You&#8217;d want to encrypt your outgoing mail.  Issue the following commands (this is an excerpt from <a href="https://help.ubuntu.com/community/Postfix">ubuntu site</a>):</p>
<blockquote>
<pre>touch smtpd.key
chmod 600 smtpd.key
openssl genrsa 1024 &gt; smtpd.key
openssl req -new -key smtpd.key -x509 -days 3650 -out smtpd.crt # has prompts
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650 # has prompts
sudo mv smtpd.key /etc/ssl/private/
sudo mv smtpd.crt /etc/ssl/certs/
sudo mv cakey.pem /etc/ssl/private/
sudo mv cacert.pem /etc/ssl/certs/
sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtpd_tls_auth_only = no'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'
sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'
sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
sudo postconf -e 'tls_random_source = dev:/dev/urandom'
sudo postconf -e 'myhostname = server1.example.com' # remember to change this to yours</pre>
</blockquote>
<p>In the last command, make sure you replace server1.example.com with your domain name.</p>
<p>If you have multiple domain names, add them to /etc/postfix/main.cf under</p>
<blockquote><p>mydestination = domain1.com, domain2.com, domain3.com</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.john-lai.com/2010/07/15/install-postfix-on-ubuntu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Install DKIM for Postfix</title>
		<link>http://www.john-lai.com/2010/07/15/install-dkim-for-postfix/</link>
		<comments>http://www.john-lai.com/2010/07/15/install-dkim-for-postfix/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 07:25:35 +0000</pubDate>
		<dc:creator>John Lai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[dkim]]></category>

		<category><![CDATA[domain keys]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[postfix]]></category>

		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://www.john-lai.com/?p=610</guid>
		<description><![CDATA[Before you begin, make sure you&#8217;ve installed Postfix as your smtp server as your first step.
This guide is based on Ubuntu guide and someone&#8217;s answer on Serverfault.

sudo aptitude install dkim-filter

Open up /etc/dkim-filter.conf and edit it so that it&#8217;s like below:

# Log to syslog
Syslog             [...]]]></description>
			<content:encoded><![CDATA[<p>Before you begin, make sure you&#8217;ve <a href="http://www.john-lai.com/2010/07/15/install-postfix-on-ubuntuinstall-postfix-on-ubuntu/">installed Postfix as your smtp server</a> as your first step.</p>
<p>This guide is based on <a href="https://help.ubuntu.com/community/Postfix/DKIM">Ubuntu</a> guide and someone&#8217;s answer on <a href="http://serverfault.com/questions/52830/dkim-sign-outgoing-mail-from-any-domain-with-postfix-and-ubuntu">Serverfault</a>.</p>
<blockquote>
<pre>sudo aptitude install dkim-filter</pre>
</blockquote>
<p>Open up /etc/dkim-filter.conf and edit it so that it&#8217;s like below:</p>
<blockquote>
<pre># Log to syslog
Syslog                  yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
#UMask                  002
# dkim-milter (2.5.2.dfsg-1ubuntu1) hardy:
# Disable new umask option by default (not needed since Ubuntu default
# uses a TCP socket instead of a Unix socket).

# Attempt to become the specified userid before starting operations.
#UserID                 105 # 'id postfix' in your shell

# Sign for example.com with key in /etc/mail/dkim.key using
# selector '2007' (e.g. 2007._domainkey.example.com)
# Domain won't really matter because that will be specified in the KeyList file
Domain                  yourdomain.com
#KeyFile                 /etc/mail/dkim.key # See bellow how to generate and set up the key
Selector                mail

# Common settings. See dkim-filter.conf(5) for more information.
AutoRestart             yes
Background              yes
Canonicalization        simple
DNSTimeout              5
Mode                    sv
SignatureAlgorithm      rsa-sha256
SubDomains              no
#UseASPDiscard          no
#Version                rfc4871
X-Header                no

#InternalHosts          /etc/mail/dkim-InternalHosts.txt
# The contents of /etc/mail/dkim-InternalHosts.txt should be
#   127.0.0.1/8
#   192.168.1.0/24
#   other.internal.host.domain.tld
# You need InternalHosts if you are signing e-mails on a gateway mail server
# for each of the computers on your LAN.

###############################################
# Other (less-standard) configuration options #
###############################################
#
# If enabled, log verification stats here
Statistics              /var/log/dkim-filter/dkim-stats
#
# KeyList is a file containing tuples of key information. Requires
# KeyFile to be unset. Each line of the file should be of the format:
#    sender glob:signing domain:signing key file
# Blank lines and lines beginning with # are ignored. Selector will be
# derived from the key's filename.
KeyList                /etc/mail/mail
#
# If enabled, will generate verification failure reports for any messages
# that fail signature verification. These will be sent to the r= address
# in the policy record, if any.
#ReportInfo             yes
#
# If enabled, will issue a Sendmail QUARANTINE for any messages that fail
# signature verification, allowing them to be inspected later.
#Quarantine             yes
#
# If enabled, will check for required headers when processing messages.
# At a minimum, that means From: and Date: will be required. Messages not
# containing the required headers will not be signed or verified, but will
# be passed through
#RequiredHeaders        yes</pre>
</blockquote>
<p>Add the following lines to /etc/postfix/main.cf</p>
<blockquote>
<pre># DKIM
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891</pre>
</blockquote>
<p>Create the public and private keys with these lines</p>
<blockquote>
<pre>openssl genrsa -out private.key 1024
openssl rsa -in private.key -out public.key -pubout -outform PEM
cp private.key /etc/mail/mail</pre>
</blockquote>
<p>Add a TXT record to your DNS like so</p>
<blockquote>
<pre>mail._domainkey.yourdomain.com. IN TXT "k=rsa; t=y; p=yourpubkey"</pre>
</blockquote>
<p>Where yourdomain.com is the domain you want to authenticate against, and yourpubkey is the contents of public.key WITHOUT the</p>
<blockquote>
<pre>-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----</pre>
</blockquote>
<p>Create a new file called /etc/mail/dkim_domains.key and put into it</p>
<blockquote><p>*:yourdomain.com:/etc/mail/mail</p></blockquote>
<p>Then restart dkimfilter and postfix with</p>
<blockquote><p>&gt; /etc/init.d/dkim-filter restart<br />
&gt; /etc/init.d/postfix restart</p></blockquote>
<p>Now you&#8217;re done install postfix dkim</p>
<p>Other useful resources:</p>
]]></content:encoded>
			<wfw:commentRss>http://www.john-lai.com/2010/07/15/install-dkim-for-postfix/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CSS Hacks</title>
		<link>http://www.john-lai.com/2010/07/08/css-hacks/</link>
		<comments>http://www.john-lai.com/2010/07/08/css-hacks/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 12:25:30 +0000</pubDate>
		<dc:creator>John Lai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[css hacks]]></category>

		<guid isPermaLink="false">http://www.john-lai.com/?p=606</guid>
		<description><![CDATA[Use the following syntax to target specific browsers when using CSS.
margin: 50px; /* targets all browsers */
#margin:50px; /* targets IE6 and IE7 */
_margin:50px; /* targets IE6 */
margin:50px\9; /*targets IE8 */
Replace margin with any other css attribute you desire.
]]></description>
			<content:encoded><![CDATA[<p>Use the following syntax to target specific browsers when using CSS.</p>
<p>margin: 50px; /* targets all browsers */</p>
<p>#margin:50px; /* targets IE6 and IE7 */</p>
<p>_margin:50px; /* targets IE6 */</p>
<p>margin:50px\9; /*targets IE8 */</p>
<p>Replace margin with any other css attribute you desire.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.john-lai.com/2010/07/08/css-hacks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Don&#8217;t learn new things when running your business!</title>
		<link>http://www.john-lai.com/2010/04/15/dont-learn-new-things-when-running-your-business/</link>
		<comments>http://www.john-lai.com/2010/04/15/dont-learn-new-things-when-running-your-business/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 19:23:15 +0000</pubDate>
		<dc:creator>John Lai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.john-lai.com/?p=593</guid>
		<description><![CDATA[&#8230;unless you&#8217;re willing to eat some costs.
Generally, clients don&#8217;t pay you to &#8220;learn&#8221; how to do something.  They pay you to do something you&#8217;re already an expert in.
So if you want to raise capital quickly, you need to offer services you are already an expert in, and not services that involve you to learn new [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;unless you&#8217;re willing to eat some costs.</p>
<p>Generally, clients don&#8217;t pay you to &#8220;learn&#8221; how to do something.  They pay you to do something you&#8217;re already an expert in.</p>
<p>So if you want to raise capital quickly, you need to offer services you are already an expert in, and not services that involve you to learn new things.  If you&#8217;re an expert in something, you will be able to accurately predict budgets and time lines.  If you&#8217;re less than 100% familiar with the services that you offer, you will not be able to dictate accurate budgets and timelines.  If you add too many research and test hours to compensate for your lack of expertise, your client will go elsewhere.</p>
<p>So this means for the next few months, for the sake of raising capital for my business, I&#8217;m only going to agree to projects I&#8217;ve done over and over and over again even if they are no longer technologically challenging for me.</p>
<p>I think this is why it can be very difficult for back-end programmers accustomed to working for big companies to become freelancers.  Although they can be extremely intelligent and experts in what they do, often what they did was too specialized for their previous employers.  Anyway ,i need to return to work, will elaborate on this later.</p>
<p>**edit - perhaps anytime you want do something new that requires a lot of research, do it on a volunteer basis for your client.  That way, if you find it takes more time than you had originally imagined, and the assignment cuts into your other priorities, you don&#8217;t have to feel as guilty putting the research assignment on hold.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.john-lai.com/2010/04/15/dont-learn-new-things-when-running-your-business/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Projects that require a lot of research time</title>
		<link>http://www.john-lai.com/2010/04/08/projects-that-require-a-lot-of-research-time/</link>
		<comments>http://www.john-lai.com/2010/04/08/projects-that-require-a-lot-of-research-time/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 18:20:26 +0000</pubDate>
		<dc:creator>John Lai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[time estimation]]></category>

		<guid isPermaLink="false">http://www.john-lai.com/?p=586</guid>
		<description><![CDATA[If it is something I haven&#8217;t done before, be aware that:
a) it will take an unknown amount of time to research
b) it might take a LONG time to do
Before I do something I haven&#8217;t done before, I must:
a) determine how much I can bill: either nothing or something much lower than my standard rate
b) determine [...]]]></description>
			<content:encoded><![CDATA[<p>If it is something I haven&#8217;t done before, be aware that:</p>
<p>a) it will take an unknown amount of time to research<br />
b) it might take a LONG time to do</p>
<p>Before I do something I haven&#8217;t done before, I must:</p>
<p>a) determine how much I can bill: either nothing or something much lower than my standard rate<br />
b) determine if it is worthwhile to learn (greatly influenced by step a)<br />
c) determine if my schedule permits me to take on an assignment that requires an unknown amount of time to implement<br />
d) not take on more than one learning assignment at a time</p>
<p>Other things to consider:</p>
<p>If it is a long project with a decent size budget, ask client to pay for a prototyping phase.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.john-lai.com/2010/04/08/projects-that-require-a-lot-of-research-time/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Upload Image/File TinyBrowser for TinyMCE</title>
		<link>http://www.john-lai.com/2010/04/08/upload-imagefile-tinybrowser-for-tinymce/</link>
		<comments>http://www.john-lai.com/2010/04/08/upload-imagefile-tinybrowser-for-tinymce/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 14:50:59 +0000</pubDate>
		<dc:creator>John Lai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[tinybrowser]]></category>

		<category><![CDATA[tinymce]]></category>

		<category><![CDATA[wyiswyg]]></category>

		<guid isPermaLink="false">http://www.john-lai.com/?p=577</guid>
		<description><![CDATA[
TinyBrowser allows you to upload images and files through TinyMCE.
Here are image upload instructions for the end-user:
1) go to your CMS page with the TinyMCE WYSIWYG editor
2) select image icon from the WYSIWYG editor
3) click the red-blue icon to the right of the image upload field to reveal a pop up window
4) click the upload [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="TinyBrowser" src="http://www.john-lai.com/~/blog/wp-content/upload/2009/06/screenshot-1024x454.jpg" alt="" width="569" height="251" /></p>
<p>TinyBrowser allows you to upload images and files through TinyMCE.</p>
<p>Here are image upload instructions for the end-user:</p>
<p>1) go to your CMS page with the TinyMCE WYSIWYG editor<br />
2) select image icon from the WYSIWYG editor<br />
3) click the red-blue icon to the right of the image upload field to reveal a pop up window<br />
4) click the upload tab<br />
5) upload an image from your computer<br />
6) click the browse tab and select the image you want to insert into the WYSIWYG editor<br />
7) press insert</p>
<p>-</p>
<p>Here are file upload instructions for the end-user:</p>
<p>1) go to your CMS page with the TinyMCE WYSIWYG editor<br />
2) type in the text that will act as a link to the file<br />
3) select link icon from the WYSIWYG editor<br />
3) click the red-blue icon to the right of the image upload field to reveal a pop up window<br />
4) click the upload tab<br />
5) upload a file from your computer<br />
6) click the browse tab and select the file you want to insert into the WYSIWYG editor<br />
7) press insert</p>
]]></content:encoded>
			<wfw:commentRss>http://www.john-lai.com/2010/04/08/upload-imagefile-tinybrowser-for-tinymce/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Magic Jack Review</title>
		<link>http://www.john-lai.com/2010/04/07/magic-jack-review/</link>
		<comments>http://www.john-lai.com/2010/04/07/magic-jack-review/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 03:55:28 +0000</pubDate>
		<dc:creator>John Lai</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[magic jack]]></category>

		<guid isPermaLink="false">http://www.john-lai.com/?p=572</guid>
		<description><![CDATA[I bought a couple of magic jacks.  Each cost about 40$/year.  I plan to replace my entire home phone system with a magic jack and a netbook with winxp on it.   That should save me about $500/year.
My impressions of magic jack so far -
Pro: good sound quality, very inexpensive, easy to use, free calling anywhere [...]]]></description>
			<content:encoded><![CDATA[<p>I bought a couple of magic jacks.  Each cost about 40$/year.  I plan to replace my entire home phone system with a magic jack and a netbook with winxp on it.   That should save me about $500/year.</p>
<p>My impressions of magic jack so far -<br />
Pro: good sound quality, very inexpensive, easy to use, free calling anywhere in North America<br />
Con: if you intend to use it as your primary phone line, you need to leave your computer on all the time (with internet connection), doesn&#8217;t work with linux operating system (i tried windows in vmware, but there was a lot of interference in the audio)</p>
<p>So far, I love using it as a secondary line for my business.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.john-lai.com/2010/04/07/magic-jack-review/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
