<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml"
>

<channel>
	<title>blog.thomaspan.com &#187; Software</title>
	<atom:link href="http://blog.thomaspan.com/categories/technology/software/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.thomaspan.com</link>
	<description>Thomas Pan&#039;s Blog - finance, life, photography, technology, travelogue</description>
	<lastBuildDate>Tue, 07 Sep 2010 08:41:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hey, We Are On DST!</title>
		<link>http://blog.thomaspan.com/archives/125</link>
		<comments>http://blog.thomaspan.com/archives/125#comments</comments>
		<pubDate>Thu, 15 Mar 2007 07:33:18 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

	<!-- AutoMeta Start -->
	<category>daylight</category>
	<category>saving</category>
	<category>saving</category>
	<category>energy</category>
	<category>congress</category>
	<category>revert</category>
	<category>patch</category>
	<category>save</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.thomaspan.com/archives/125</guid>
		<description><![CDATA[Hey, I lived through this year&#8217;s DST excitement, which happened in Sunday. It was like a mini-Y2K since we had to work so hard to patch all the computer hardware and software to make sure that the whole Internet business wouldn&#8217;t be affected after the new DST change &#8212; thanks to Energy Policy Act of [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Hey, I lived through this year&#8217;s DST excitement, which happened in Sunday. It was like a mini-Y2K since we had to work so hard to patch all the computer hardware and software to make sure that the whole Internet business wouldn&#8217;t be affected after the new DST change &#8212; thanks to <a href="http://thomas.loc.gov/cgi-bin/bdquery/z?d109:HR00006:@@@L&#038;summ2=m&#038;">Energy Policy Act of 2005</a>. I even got phone call and SMS message from cell phone company, urging me to patch my Treo. Life cannot be more excited!</p>
<p>So, what&#8217;s the hype behind all the craziness to put 4 more weeks under DST? I know that DST stands for Daylight Saving Time. Mysteriously, it doesn&#8217;t save any energy in my life. As a typical software engineer, I spend most of the time sitting before a computer inside a building. Since I cannot afford a fancy house with big windows and/or glass walls, I have to keep lights on to protect my eyes, regardless of outdoor weather conditions.</p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-2855056993765260";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2006-12-30: photography, finance, investment, technology, web 2.0
google_ad_channel = "6224033148+8249211808+9620917373+3525649417+9799424650";
google_color_border = "336699";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p>Did I mention that the new DST doesn&#8217;t save energe? The quote below is taken from Section 110 of the energy bill:</p>
<blockquote><p>
Amends the Uniform Time Act of 1966 to extend standard daylight time from March to November (currently it runs from April to October). Requires the Secretary to report to Congress on the impact of this extension upon energy consumption in the United States. Retains the right of Congress to revert Daylight Saving Time back to the 2005 time schedules.
</p></blockquote>
<p>Folks, I am really sorry. I need to save more energy under DST. Because, if this year&#8217;s setup doesn&#8217;t work out for our nation, we have to revert everything back next year. Damn it! It was so easy for us to save energy in the good old days. More, we didn&#8217;t have computers to worry about. <img src='http://blog.thomaspan.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>References:</p>
<ul>
<li><a href="http://www.wisebread.com/daylight-saving-time-what-does-it-save-anyway">Daylight &#8220;Saving&#8221; Time&#8230;What Does It Save, Anyway?</a></li>
<li><a href="http://seedmagazine.com/news/2006/10/dont_bank_on_this_savings.php?page=all">Seed: Don&#8217;t Bank on This Savings</a></li>
<li><a href="http://blogs.techrepublic.com.com/security/?p=170">Y2K’s Revenge? Not quite, but DST change will cause trouble!</a></li>
</ul>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.thomaspan.com/archives/125/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MyDBGraffle4: Automatically MySQL Schema Drawing in OmniGraffle</title>
		<link>http://blog.thomaspan.com/archives/105</link>
		<comments>http://blog.thomaspan.com/archives/105#comments</comments>
		<pubDate>Mon, 22 Jan 2007 05:33:48 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

	<!-- AutoMeta Start -->
	<category>schema</category>
	<category>database</category>
	<category>generate</category>
	<category>automatically</category>
	<category>Omnigraffle</category>
	<category>DBGraffle</category>
	<category>MyDBGraffle</category>
	<category>MySQL</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.thomaspan.com/archives/105</guid>
		<description><![CDATA[MyDBGraffle4 automatically draws MySQL schema in OmniGraffle, given database information. It is based on <a href="http://www.visualdistortion.org/DBGraffle4/">Paul Davis' DBGraffle4</a>. MyDBGraffle4 supports MySQL 5 while DBGraffle4 works for PostgreSQL. You can <strong>download</strong> the tool as a zip file <a href="http://blog.thomaspan.com/wp-content/uploads/2007/01/mydbgraffle4.zip">here</a>.


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>MyDBGraffle4 automatically draws MySQL schema in OmniGraffle, given database information. It is based on <a href="http://www.visualdistortion.org/DBGraffle4/">Paul Davis&#8217; DBGraffle4</a>. MyDBGraffle4 supports MySQL 5 while DBGraffle4 works for PostgreSQL.</p>
<p>You can <strong>download</strong> the tool as a zip file <a href="http://blog.thomaspan.com/wp-content/uploads/2007/01/mydbgraffle4.zip">here</a>, which contains two files: MyDBGraffle4.py and MyDBGraffle4.scpt. It is recommended by Paul to use <em>Script Editor</em> to save the *.scpt as an *.app and placing it in the dock or on the desktop. After its there, you can double click it and follow the popups.</p>
<p>Here, I use <a href="http://forge.mysql.com/wiki/TagSchema#Sample_Schema_with_User_Dimension">a tagging system schema</a> to show you how to use this tool. I name the database as <em>TagSchema</em>.</p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-2855056993765260";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2006-12-30: photography, finance, investment, technology, web 2.0
google_ad_channel = "6224033148+8249211808+9620917373+3525649417+9799424650";
google_color_border = "336699";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<ol>
<li>Launch MyDBGraffle4.scpt in Script Editor and run it:
<link rel="stylesheet" type="text/css" href="http://blog.thomaspan.com/gallery2/main.php?g2_view=imageframe.CSS&amp;g2_frames=slide%7Cshadow&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b"/><span id="g2content" class="g2_blogimage">
<div class="one-image">
<table class="ImageFrame_shadow" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="LLT"></td>
<td rowspan="2" colspan="2" class="IMG"<br />
  ><a href="http://blog.thomaspan.com/wp-gallery2.php?g2_view=core.ShowItem&amp;g2_itemId=742&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" ><img src="http://blog.thomaspan.com/gallery2/main.php?g2_view=core.DownloadItem&amp;g2_itemId=744&amp;g2_serialNumber=6&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" width="150" height="150" id="IFid7" class="ImageFrame_image" alt="script_editor" longdesc="Launch MyDBGraffle4 in Script Editor"/></a></td>
<td class="RRT"></td>
</tr>
<tr>
<td class="LL"     style="height:expression((document.getElementById('IFid7').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
<td class="RR"     style="height:expression((document.getElementById('IFid7').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
</tr>
<tr>
<td class="BL"></td>
<td class="BBL"></td>
<td class="BB"     style="width:expression((document.getElementById('IFid7').width-9)+'px')"<br />
    >
<div class="H"></div>
</td>
<td class="BR"></td>
</tr>
</table>
</div>
<p></span></li>
<li>Input the location of MyDBGraffle4.py:
<link rel="stylesheet" type="text/css" href="http://blog.thomaspan.com/gallery2/main.php?g2_view=imageframe.CSS&amp;g2_frames=slide%7Cshadow&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b"/><span id="g2content" class="g2_blogimage">
<div class="one-image">
<table class="ImageFrame_shadow" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="LLT"></td>
<td rowspan="2" colspan="2" class="IMG"<br />
  ><a href="http://blog.thomaspan.com/wp-gallery2.php?g2_view=core.ShowItem&amp;g2_itemId=745&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" ><img src="http://blog.thomaspan.com/gallery2/main.php?g2_view=core.DownloadItem&amp;g2_itemId=746&amp;g2_serialNumber=12&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" width="123" height="123" id="IFid14" class="ImageFrame_image" alt="python_script_location" longdesc="Locate the python script MyDBGraffle4.py"/></a></td>
<td class="RRT"></td>
</tr>
<tr>
<td class="LL"     style="height:expression((document.getElementById('IFid14').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
<td class="RR"     style="height:expression((document.getElementById('IFid14').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
</tr>
<tr>
<td class="BL"></td>
<td class="BBL"></td>
<td class="BB"     style="width:expression((document.getElementById('IFid14').width-9)+'px')"<br />
    >
<div class="H"></div>
</td>
<td class="BR"></td>
</tr>
</table>
</div>
<p></span></li>
<li>Input the application name of OmniGraffle:
<link rel="stylesheet" type="text/css" href="http://blog.thomaspan.com/gallery2/main.php?g2_view=imageframe.CSS&amp;g2_frames=slide%7Cshadow&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b"/><span id="g2content" class="g2_blogimage">
<div class="one-image">
<table class="ImageFrame_shadow" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="LLT"></td>
<td rowspan="2" colspan="2" class="IMG"<br />
  ><a href="http://blog.thomaspan.com/wp-gallery2.php?g2_view=core.ShowItem&amp;g2_itemId=747&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" ><img src="http://blog.thomaspan.com/gallery2/main.php?g2_view=core.DownloadItem&amp;g2_itemId=748&amp;g2_serialNumber=5&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" width="123" height="123" id="IFid21" class="ImageFrame_image" alt="omnigraffle_name" longdesc="Verify OmniGraffle Application Name"/></a></td>
<td class="RRT"></td>
</tr>
<tr>
<td class="LL"     style="height:expression((document.getElementById('IFid21').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
<td class="RR"     style="height:expression((document.getElementById('IFid21').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
</tr>
<tr>
<td class="BL"></td>
<td class="BBL"></td>
<td class="BB"     style="width:expression((document.getElementById('IFid21').width-9)+'px')"<br />
    >
<div class="H"></div>
</td>
<td class="BR"></td>
</tr>
</table>
</div>
<p></span></li>
<li>Input the MySQL database server host name:
<link rel="stylesheet" type="text/css" href="http://blog.thomaspan.com/gallery2/main.php?g2_view=imageframe.CSS&amp;g2_frames=slide%7Cshadow&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b"/><span id="g2content" class="g2_blogimage">
<div class="one-image">
<table class="ImageFrame_shadow" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="LLT"></td>
<td rowspan="2" colspan="2" class="IMG"<br />
  ><a href="http://blog.thomaspan.com/wp-gallery2.php?g2_view=core.ShowItem&amp;g2_itemId=749&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" ><img src="http://blog.thomaspan.com/gallery2/main.php?g2_view=core.DownloadItem&amp;g2_itemId=750&amp;g2_serialNumber=4&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" width="123" height="123" id="IFid28" class="ImageFrame_image" alt="dbhost" longdesc="Input MySQL server host name"/></a></td>
<td class="RRT"></td>
</tr>
<tr>
<td class="LL"     style="height:expression((document.getElementById('IFid28').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
<td class="RR"     style="height:expression((document.getElementById('IFid28').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
</tr>
<tr>
<td class="BL"></td>
<td class="BBL"></td>
<td class="BB"     style="width:expression((document.getElementById('IFid28').width-9)+'px')"<br />
    >
<div class="H"></div>
</td>
<td class="BR"></td>
</tr>
</table>
</div>
<p></span></li>
<li>Input the MySQL database server port:
<link rel="stylesheet" type="text/css" href="http://blog.thomaspan.com/gallery2/main.php?g2_view=imageframe.CSS&amp;g2_frames=slide%7Cshadow&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b"/><span id="g2content" class="g2_blogimage">
<div class="one-image">
<table class="ImageFrame_shadow" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="LLT"></td>
<td rowspan="2" colspan="2" class="IMG"<br />
  ><a href="http://blog.thomaspan.com/wp-gallery2.php?g2_view=core.ShowItem&amp;g2_itemId=751&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" ><img src="http://blog.thomaspan.com/gallery2/main.php?g2_view=core.DownloadItem&amp;g2_itemId=752&amp;g2_serialNumber=4&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" width="123" height="123" id="IFid35" class="ImageFrame_image" alt="db_port" longdesc="Input MySQL service port"/></a></td>
<td class="RRT"></td>
</tr>
<tr>
<td class="LL"     style="height:expression((document.getElementById('IFid35').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
<td class="RR"     style="height:expression((document.getElementById('IFid35').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
</tr>
<tr>
<td class="BL"></td>
<td class="BBL"></td>
<td class="BB"     style="width:expression((document.getElementById('IFid35').width-9)+'px')"<br />
    >
<div class="H"></div>
</td>
<td class="BR"></td>
</tr>
</table>
</div>
<p></span></li>
<li>Input database user name:
<link rel="stylesheet" type="text/css" href="http://blog.thomaspan.com/gallery2/main.php?g2_view=imageframe.CSS&amp;g2_frames=slide%7Cshadow&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b"/><span id="g2content" class="g2_blogimage">
<div class="one-image">
<table class="ImageFrame_shadow" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="LLT"></td>
<td rowspan="2" colspan="2" class="IMG"<br />
  ><a href="http://blog.thomaspan.com/wp-gallery2.php?g2_view=core.ShowItem&amp;g2_itemId=753&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" ><img src="http://blog.thomaspan.com/gallery2/main.php?g2_view=core.DownloadItem&amp;g2_itemId=754&amp;g2_serialNumber=4&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" width="123" height="123" id="IFid42" class="ImageFrame_image" alt="user_name" longdesc="Input MySQL user name"/></a></td>
<td class="RRT"></td>
</tr>
<tr>
<td class="LL"     style="height:expression((document.getElementById('IFid42').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
<td class="RR"     style="height:expression((document.getElementById('IFid42').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
</tr>
<tr>
<td class="BL"></td>
<td class="BBL"></td>
<td class="BB"     style="width:expression((document.getElementById('IFid42').width-9)+'px')"<br />
    >
<div class="H"></div>
</td>
<td class="BR"></td>
</tr>
</table>
</div>
<p></span></li>
<li>Input the database name:
<link rel="stylesheet" type="text/css" href="http://blog.thomaspan.com/gallery2/main.php?g2_view=imageframe.CSS&amp;g2_frames=slide%7Cshadow&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b"/><span id="g2content" class="g2_blogimage">
<div class="one-image">
<table class="ImageFrame_shadow" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="LLT"></td>
<td rowspan="2" colspan="2" class="IMG"<br />
  ><a href="http://blog.thomaspan.com/wp-gallery2.php?g2_view=core.ShowItem&amp;g2_itemId=755&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" ><img src="http://blog.thomaspan.com/gallery2/main.php?g2_view=core.DownloadItem&amp;g2_itemId=756&amp;g2_serialNumber=4&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" width="123" height="123" id="IFid49" class="ImageFrame_image" alt="db_name" longdesc="Input database name for the schema diagram"/></a></td>
<td class="RRT"></td>
</tr>
<tr>
<td class="LL"     style="height:expression((document.getElementById('IFid49').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
<td class="RR"     style="height:expression((document.getElementById('IFid49').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
</tr>
<tr>
<td class="BL"></td>
<td class="BBL"></td>
<td class="BB"     style="width:expression((document.getElementById('IFid49').width-9)+'px')"<br />
    >
<div class="H"></div>
</td>
<td class="BR"></td>
</tr>
</table>
</div>
<p></span></li>
<li>The tool generates the beautiful schema diagram in OmniGraffle:
<link rel="stylesheet" type="text/css" href="http://blog.thomaspan.com/gallery2/main.php?g2_view=imageframe.CSS&amp;g2_frames=slide%7Cshadow&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b"/><span id="g2content" class="g2_blogimage">
<div class="one-image">
<table class="ImageFrame_shadow" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="LLT"></td>
<td rowspan="2" colspan="2" class="IMG"<br />
  ><a href="http://blog.thomaspan.com/wp-gallery2.php?g2_view=core.ShowItem&amp;g2_itemId=738&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" ><img src="http://blog.thomaspan.com/gallery2/main.php?g2_view=core.DownloadItem&amp;g2_itemId=740&amp;g2_serialNumber=6&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" width="150" height="150" id="IFid56" class="ImageFrame_image" alt="final_result" longdesc="Result Diagram"/></a></td>
<td class="RRT"></td>
</tr>
<tr>
<td class="LL"     style="height:expression((document.getElementById('IFid56').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
<td class="RR"     style="height:expression((document.getElementById('IFid56').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
</tr>
<tr>
<td class="BL"></td>
<td class="BBL"></td>
<td class="BB"     style="width:expression((document.getElementById('IFid56').width-9)+'px')"<br />
    >
<div class="H"></div>
</td>
<td class="BR"></td>
</tr>
</table>
</div>
<p></span></li>
</ol>
<p>Note that in order for this tool to work, you only need to setup a local MySQL 5 server with passwordless user root. Then, you load the database schema(s) that you want to have diagrams generated in OmniGraffle. Make sure that there are no overlapping between foreign key(s) and primary key(s) and foreign key(s) are defined before indexes. Of course, foreign keys only work for InnoDB tables under MySQL.</p>
<p>Feel free to report bugs and requirements as comments here.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.thomaspan.com/archives/105/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Site Upgrade &#8212; WordPress</title>
		<link>http://blog.thomaspan.com/archives/69</link>
		<comments>http://blog.thomaspan.com/archives/69#comments</comments>
		<pubDate>Sat, 23 Dec 2006 07:16:53 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>

	<!-- AutoMeta Start -->
	<category>wordpress</category>
	<category>deluxe</category>
	<category>plugins</category>
	<category>preview</category>
	<category>process</category>
	<category>spelling</category>
	<category>upgrade</category>
	<category>checker</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.thomaspan.com/archives/69</guid>
		<description><![CDATA[This site is on WordPress 2.0.5!


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>The old blog system for this site is WordPress 1.5.1.3. I just pgraded it to 2.0.5, which is the latest version. The process was very straightforward. I followed the steps listed <a href="http://codex.wordpress.org/Upgrading_WordPress">here</a> from WordPress. It took me about 5 minutes to upgrade this blog site. I am glad that WordPress DID a very good job to make the upgrade process painless, which will definitely encourage more users. Now, I am enjoying all the new features, such as WYSWYG blog post editing, file upload, live post preview, etc.</p>
<p>I have the following plugins installed:</p>
<ol>
<li><a href="http://presentia.net/didzis/wordpress-plugins/adsense-deluxe/">Adsense-Deluxe+</a>: This is for Google adsense and Yahoo publisher network.<a href="http://presentia.net/didzis/wordpress-plugins/adsense-deluxe/"><br />
</a></li>
<li><a href="http://www.boriel.com/?page_id=17">CaptCha!</a>: This helps avoid spams.</li>
<li><a href="http://wpg2.ozgreg.com/">Gallery2 Integration</a></li>
<li><a href="http://www.macdiggs.com/">Inline Google Maps</a></li>
<li><a href="http://ajaydsouza.com/wordpress/plugins/snap-preview-anywhere/">Snap Preview Anywhere Plugin</a>: This generates pop-up snapshot of web pages.</li>
<li><a href="http://www.dountsis.com/">Social Bookmarks</a></li>
<li><a href="http://www.coldforged.org/spelling-checker-plugin-for-wordpress/">Spelling Checker</a></li>
</ol>
<p>I will keep blogging! <img src='http://blog.thomaspan.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-2855056993765260";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2006-12-30: photography, finance, investment, technology, web 2.0
google_ad_channel = "6224033148+8249211808+9620917373+3525649417+9799424650";
google_color_border = "336699";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p><strong>Update:</strong> I have replaced <a href="http://presentia.net/didzis/wordpress-plugins/adsense-deluxe/">Adsense-Deluxe+</a> with <a href="http://philhord.com/wp-hacks/adsense">Adsense</a>. I have added <a href="http://manalang.com/wp-amazon/">WP-Amazon</a>. I turned off visual rich editor.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.thomaspan.com/archives/69/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Block Blog Spam?</title>
		<link>http://blog.thomaspan.com/archives/72</link>
		<comments>http://blog.thomaspan.com/archives/72#comments</comments>
		<pubDate>Mon, 13 Nov 2006 07:27:26 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>

	<!-- AutoMeta Start -->
	<category>spam</category>
	<category>wordpress</category>
	<category>captcha</category>
	<category>hotmail</category>
	<category>site</category>
	<category>portals</category>
	<category>prevent</category>
	<category>comments</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.thomaspan.com/archives/72</guid>
		<description><![CDATA[Captcha! is the right spam tool for WordPress users.


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>My blogging site is based on <a href="http://wordpress.com/">WordPress</a>. There are so many blog spams these days. For example, <a href="http://blog.thomaspan.com/archives/2">one of my post</a> has got 588 meaningless comments. After talking to my friend Joy, I think that I need to do something to prevent my site from spam. WordPress has <a href="http://codex.wordpress.org/Plugins/Spam_Tools">bunch of spam tools</a> available. Which one is the best one? It is very easy to make the final decision after I check out popular web portals, such as <a href="http://www.yahoo.com">yahoo</a>, <a href="http://www.hotmail.com">MSN hotmail</a>, and <a href="http://www.google.com">google</a>. <a href="http://en.wikipedia.org/wiki/Captcha">CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart)</a>  is the right way to go.</p>
<p>Finally, I choose <a href="http://www.boriel.com/?page_id=17">Captcha!</a> since it is easy to install and my web host has GDlib pre-installed. In order for the plugin to work, one needs to download some twisted TTF fonts freely available from <a href="http://www.dafont.com/en/top.php">this site</a>.</p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-2855056993765260";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2006-12-30: photography, finance, investment, technology, web 2.0
google_ad_channel = "6224033148+8249211808+9620917373+3525649417+9799424650";
google_color_border = "336699";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.thomaspan.com/archives/72/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crunch Time</title>
		<link>http://blog.thomaspan.com/archives/51</link>
		<comments>http://blog.thomaspan.com/archives/51#comments</comments>
		<pubDate>Fri, 23 Jun 2006 08:29:45 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Health]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Software]]></category>

	<!-- AutoMeta Start -->
	<category>crunch</category>
	<category>project</category>
	<category>morning</category>
	<category>energy</category>
	<category>beta</category>
	<category>final</category>
	<category>exercise</category>
	<category>body</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.thomaspan.com/archives/51</guid>
		<description><![CDATA[In IT industry, crunch time represents the period of time immediately before a project (or other timetabled item) is due. It is typical for the crunch time to occur between the next-to-last scheduled milestone and the final due date. Depending on how many due dates a project could have, the duration of crunch time could be pretty long in modern IT projects. Since crunch time is unavoidable, how could we deal with it?


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>In IT industry, crunch time represents the period of time immediately before a project (or other timetabled item) is due. It is typical for the crunch time to occur between the next-to-last scheduled milestone and the final due date. Depending on how many due dates a project could have, the duration of crunch time could be pretty long in modern IT projects. For example, there could be an internal beta, a public beta, and a final launch. If people are doing extreme programming, the release cycle could be as short as two weeks.</p>
<p>Since crunch time is unavoidable, how could we deal with it? I would like to share some personal experiences here:</p>
<ol>
<li>Get up early. It keeps one&#8217;s body clock right enjoying the sunshine. It helps maintain a positive attitude during the long day.</li>
<li>Take a morning shower to help the body wake up.</li>
<li>Prepare extra clothing for early morning or late evening if one lives in an area with large temperature diference between day and night. Cold will at least cause headache.</li>
<li>Take a nap from time to time whenever one feels sleepy.</li>
<li>Have enough exercise to keep the blood flow. However, don&#8217;t over-exercise to exhaust oneself.</li>
<li>Keep energy bars or snacks handy in the working place. Don&#8217;t have energy crisis!</li>
<li><a href="http://blog.thomaspan.com/archives/48">Have good quality food</a>!</li>
</ol>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-2855056993765260";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2006-12-30: photography, finance, investment, technology, web 2.0
google_ad_channel = "6224033148+8249211808+9620917373+3525649417+9799424650";
google_color_border = "336699";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.thomaspan.com/archives/51/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Password Recovery from Mozilla/Firefox</title>
		<link>http://blog.thomaspan.com/archives/32</link>
		<comments>http://blog.thomaspan.com/archives/32#comments</comments>
		<pubDate>Sun, 19 Mar 2006 20:43:39 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

	<!-- AutoMeta Start -->
	<category>passwords</category>
	<category>recovery</category>
	<category>mozilla</category>
	<category>profile</category>
	<category>login</category>
	<category>firefox</category>
	<category>input</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.thomaspan.com/archives/32</guid>
		<description><![CDATA[A quick how-to guide for people to recover on-line passwords from Mozilla/Firefox.


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>The story started when my raid disk crashed early this year. I have lost all the passwords stored on that disk. Fortunately, that disk only contained user data. I have Windows system installed on the main hard-drive. Since I mainly use Mozilla as my primary browser and I am used to let it manage my on-line passwords, I still have the access to major web sites, including my personal web site. Hey, otherwise, I cannot post this blog! </p>
<p>But, still, it is important for me to extract passwords out of Mozilla and backup them a little more properly this time. By searching on-line, it took me less than 5 minutes to find <a href="Mozilla: http://www.holgermetzger.de/moz-passwords.html">this guide</a>.</p>
<p>The path of Mozilla/Firefox password file is <strong>{Profile Root Path/{Profile Name}/{Random String}.slt/{String}.s</strong>. Each site block text contains 6 lines:</p>
<ol>
<li>Site address containing host and optional port</li>
<li>Form login input name</li>
<li>Base64 encoded login name wrapped around by <strong>~</strong> and <strong>=</strong></li>
<li>Form password input name</li>
<li>Base64 encoded password wrapped around by <strong>~</strong> and <strong>=</strong></li>
<li>A period to end the block</li>
</ol>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.thomaspan.com/archives/32/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notes Taking By Microsoft Word for Mac 2004</title>
		<link>http://blog.thomaspan.com/archives/16</link>
		<comments>http://blog.thomaspan.com/archives/16#comments</comments>
		<pubDate>Sat, 03 Dec 2005 16:33:46 +0000</pubDate>
		<dc:creator>Thomas</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Software]]></category>

	<!-- AutoMeta Start -->
	<category>word</category>
	<category>notebook</category>
	<category>audio</category>
	<category>layout</category>
	<category>notes</category>
	<category>taking</category>
	<category>view</category>
	<category>microsoft</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.thomaspan.com/?p=16</guid>
		<description><![CDATA[Why Apple laptop? Why Mac? Here is one of the many reasons. <a href="http://www.apple.com/macosx/applications/office/">Microsoft Word for Mac 2004</a> is <strong>different</strong> from its Windows sibling. It gives us a <strong>Notebook</strong> layout view for easy notes taking, and allows us to record audio from any indoor conversation.


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<p>Why Apple laptop? Why Mac? Here is one of the many reasons. <a href="http://www.apple.com/macosx/applications/office/">Microsoft Word for Mac 2004</a> is <strong>different</strong> from its Windows sibling. It gives us a <strong>Notebook</strong> layout view for easy notes taking, and allows us to record audio from any indoor conversation.</p>
<p>
<!-- Begin Google Adsense code -->
<script type="text/javascript"><!--
google_ad_client = "pub-2855056993765260";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
//2006-12-30: photography, finance, investment, technology, web 2.0
google_ad_channel = "6224033148+8249211808+9620917373+3525649417+9799424650";
google_color_border = "336699";
google_color_bg = "FFFFFF";
google_color_link = "0000FF";
google_color_text = "000000";
google_color_url = "008000";
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<!-- End Google Adsense code -->
</p>
<p>1. Let&#8217;s new a <strong>Notebook</strong> Word document:</p>
<link rel="stylesheet" type="text/css" href="http://blog.thomaspan.com/gallery2/main.php?g2_view=imageframe.CSS&amp;g2_frames=slide%7Cshadow&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b"/><span id="g2content" class="g2_blogimage">
<div class="one-image">
<table class="ImageFrame_shadow" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="LLT"></td>
<td rowspan="2" colspan="2" class="IMG"<br />
  ><a href="http://blog.thomaspan.com/wp-gallery2.php?g2_view=core.ShowItem&amp;g2_itemId=267&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" ><img src="http://blog.thomaspan.com/gallery2/main.php?g2_view=core.DownloadItem&amp;g2_itemId=269&amp;g2_serialNumber=2&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" width="150" height="150" id="IFid63" class="ImageFrame_image" alt="Word_new" longdesc="New a Word Notebook"/></a></td>
<td class="RRT"></td>
</tr>
<tr>
<td class="LL"     style="height:expression((document.getElementById('IFid63').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
<td class="RR"     style="height:expression((document.getElementById('IFid63').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
</tr>
<tr>
<td class="BL"></td>
<td class="BBL"></td>
<td class="BB"     style="width:expression((document.getElementById('IFid63').width-9)+'px')"<br />
    >
<div class="H"></div>
</td>
<td class="BR"></td>
</tr>
</table>
</div>
<p></span></p>
<p>2. Check out the <strong>Notebook</strong> layout view with the <strong>Audio Notes</strong> toolbar:</p>
<link rel="stylesheet" type="text/css" href="http://blog.thomaspan.com/gallery2/main.php?g2_view=imageframe.CSS&amp;g2_frames=slide%7Cshadow&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b"/><span id="g2content" class="g2_blogimage">
<div class="one-image">
<table class="ImageFrame_shadow" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="LLT"></td>
<td rowspan="2" colspan="2" class="IMG"<br />
  ><a href="http://blog.thomaspan.com/wp-gallery2.php?g2_view=core.ShowItem&amp;g2_itemId=271&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" ><img src="http://blog.thomaspan.com/gallery2/main.php?g2_view=core.DownloadItem&amp;g2_itemId=273&amp;g2_serialNumber=2&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" width="150" height="150" id="IFid70" class="ImageFrame_image" alt="Word_record" longdesc="Record notes"/></a></td>
<td class="RRT"></td>
</tr>
<tr>
<td class="LL"     style="height:expression((document.getElementById('IFid70').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
<td class="RR"     style="height:expression((document.getElementById('IFid70').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
</tr>
<tr>
<td class="BL"></td>
<td class="BBL"></td>
<td class="BB"     style="width:expression((document.getElementById('IFid70').width-9)+'px')"<br />
    >
<div class="H"></div>
</td>
<td class="BR"></td>
</tr>
</table>
</div>
<p></span></p>
<p>3. Extract the audio as mp4 file:</p>
<link rel="stylesheet" type="text/css" href="http://blog.thomaspan.com/gallery2/main.php?g2_view=imageframe.CSS&amp;g2_frames=slide%7Cshadow&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b"/><span id="g2content" class="g2_blogimage">
<div class="one-image">
<table class="ImageFrame_shadow" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="LLT"></td>
<td rowspan="2" colspan="2" class="IMG"<br />
  ><a href="http://blog.thomaspan.com/wp-gallery2.php?g2_view=core.ShowItem&amp;g2_itemId=274&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" ><img src="http://blog.thomaspan.com/gallery2/main.php?g2_view=core.DownloadItem&amp;g2_itemId=276&amp;g2_serialNumber=2&amp;g2_GALLERYSID=a62925b55c1c7e322db80d305a52821b" width="150" height="150" id="IFid77" class="ImageFrame_image" alt="Word_export_audio" longdesc="Export audio in mp4 format"/></a></td>
<td class="RRT"></td>
</tr>
<tr>
<td class="LL"     style="height:expression((document.getElementById('IFid77').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
<td class="RR"     style="height:expression((document.getElementById('IFid77').height-10)+'px')"<br />
    >
<div class="V">&nbsp;</div>
</td>
</tr>
<tr>
<td class="BL"></td>
<td class="BBL"></td>
<td class="BB"     style="width:expression((document.getElementById('IFid77').width-9)+'px')"<br />
    >
<div class="H"></div>
</td>
<td class="BR"></td>
</tr>
</table>
</div>
<p></span></p>
<p>This is definitely a gorgeous swiss army knife for students, scholars, and low budget podcasting.</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.thomaspan.com/archives/16/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
