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

<channel>
	<title>ZMAngArticles</title>
	<atom:link href="http://articles.zmang.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://articles.zmang.com</link>
	<description>More of Ang Zhuu Ming's Boring Writing</description>
	<pubDate>Fri, 08 Sep 2006 12:52:23 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>Synchronizing Google Calendar and Microsoft Outlook</title>
		<link>http://articles.zmang.com/software/synchronizing-google-calendar-and-microsoft-outlook/</link>
		<comments>http://articles.zmang.com/software/synchronizing-google-calendar-and-microsoft-outlook/#comments</comments>
		<pubDate>Fri, 08 Sep 2006 12:47:58 +0000</pubDate>
		<dc:creator>ZMAng</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://articles.zmang.com/software/synchronizing-google-calendar-and-microsoft-outlook/</guid>
		<description><![CDATA[Well, we&#8217;ve heard it a thousand, maybe a million times: It&#8217;s only a matter of time before Google Calendar (gCal) rules the online calendar sphere. For certain, it&#8217;s a solid application, and comes integrated with Gmail too. But great as it is, one issue still prevents that from happening: gCal + Microsoft Outlook synchronization. Yes, [...]]]></description>
			<content:encoded><![CDATA[<p>Well, we&#8217;ve heard it a thousand, maybe a million times: It&#8217;s only a matter of time before <a href="http://www.google.com/calendar/">Google Calendar</a> (gCal) rules the online calendar sphere. For certain, it&#8217;s a solid application, and comes integrated with <a href="http://gmail.com">Gmail</a> too. But great as it is, one issue still prevents that from happening: <strong>gCal + Microsoft Outlook synchronization</strong>. Yes, a <strong>perfect</strong> two-way sync.</p>
<p>It&#8217;s honestly surprising that Google engineers haven&#8217;t bothered to whip up a MS Outlook plug-in for this purpose, but rather than continue dreaming, let&#8217;s look at the various methods that have been introduced by independent developers instead:</p>
<ul>
<li>
<p><strong><a href="http://remotecalendars.sourceforge.net/">RemoteCalendars (RC)</a></strong><br/>An open source plug-in for Outlook 2003, RC provides you the necessary functionality to subscribe and sync with remote calendars, such as gCal. However, getting it to work right isn&#8217;t a walk in the park. You will want to refer to a step-by-step <a href="http://www.jakeludington.com/ask_jake/20060818_how_to_sync_google_calendar_with_outlook_and_smartphones_automatically.html">setup guide</a>, which should then be followed with <a href="http://remotecalendars.sourceforge.net/help.html#services">publishing instructions</a> over at the official documentation. Even then, you mileage may vary.</li>
<li>
<p><strong>ScheduleWorld + SyncML/Funambol Outlook Plugin</strong><br/>This approach involves using <a href="http://scheduleworld.com">ScheduleWorld</a> (SW) - a free web service (at the time of writing) - as the middleman between gCal and Outlook. For step-by-step instructions, refer to a <a href="http://engtech.wordpress.com/2006/08/11/the-holy-grail-of-synchronization-how-to-synchronize-microsoft-outlook-multiple-locations-google-calendar-gmail-ipod-and-mobile-phone-with-funambol-scheduleworld/">detailed guide</a> on this approach. Note, however, that you no longer need to copy your calendar&#8217;s Private iCal Address to SW as SW automatically pulls your calendars via your gCal User ID and password. Also note that SW does not automatically/periodically sync with gCal (though a script to do that seems to be available).</p>
</li>
<li>
<p><strong><a href="http://www.companionlink.com/clgoogle.html">CompanionLink for Google Calendar (CLGC)</a></strong><br/>A pay-for software (US$29.95 at the time of writing), CLGC is an independent software which allows you to synchronize gCal with most, if not all, of the latest mobile devices and Personal Information Managers (PIMs) available. However, not only is it not free, it seems to be bug-ridden as well. Moreover, you can only sync your default gCal at the moment, so syncing multiple calendars via CLGC is currently out of the question. So, like RemoteCalendars, your mileage may certainly vary. Therefore, it is suggested that you try their evaluation version first before purchasing a copy. </p>
</li>
</ul>
<p>Clearly, a perfect two-way syncing solution for gCal and Outlook has yet to be developed. So, any developer that does come up with one will certainly be blessed with gratefulness (both verbal <strong>and monetary</strong>).</p>
]]></content:encoded>
			<wfw:commentRss>http://articles.zmang.com/software/synchronizing-google-calendar-and-microsoft-outlook/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Web-based CSS Optimization Tools</title>
		<link>http://articles.zmang.com/web-design/web-based-css-optimization-tools/</link>
		<comments>http://articles.zmang.com/web-design/web-based-css-optimization-tools/#comments</comments>
		<pubDate>Sat, 26 Aug 2006 03:21:24 +0000</pubDate>
		<dc:creator>ZMAng</dc:creator>
		
		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://articles.zmang.com/web-design/web-based-css-optimization-tools/</guid>
		<description><![CDATA[Even if you are not an accessibility freak, reducing the total size of your web pages (both internal and external components) is always win-win. Not only will your site load faster for your users, you save bandwidth. There are a number of different approaches that can be pursued, but we&#8217;ll only look at CSS optimization [...]]]></description>
			<content:encoded><![CDATA[<p>Even if you are not an accessibility freak, reducing the total size of your web pages (both internal and external components) is always win-win. Not only will your site load faster for your users, you save bandwidth. There are a number of different approaches that can be pursued, but we&#8217;ll only look at CSS optimization in this article. </p>
<p>In particular, we&#8217;ll be looking at web-based tools that automatically reduce the size of your CSS files - whether by removing whitespace, removing comments, and/or merging classes and attributes. In alphabetical order, they are:</p>
<ul>
<li><strong><a href="http://www.cleancss.com/">CleanCSS</a></strong></li>
<li><strong><a href="http://www.freshstartcafe.com/css-compress/">Clean Compress</a></strong></li>
<li><strong><a href="http://www.cssoptimiser.com/">CSS Optimiser</a></strong></li>
<li><strong><a href="http://www.cssdev.com/csstweak/">CSS Tweak</a></strong></li>
<li><strong><a href="http://flumpcakes.co.uk/css/optimiser/">Flumpcakes CSS Optimiser</a></strong></li>
<li><strong><a href="http://iceyboard.no-ip.org/projects/css_compressor">Icey&#8217;s CSS Compressor</a></strong></li>
</ul>
<p>Article under construction.</p>
]]></content:encoded>
			<wfw:commentRss>http://articles.zmang.com/web-design/web-based-css-optimization-tools/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Text Replacement Techniques</title>
		<link>http://articles.zmang.com/web-design/text-replacement-techniques/</link>
		<comments>http://articles.zmang.com/web-design/text-replacement-techniques/#comments</comments>
		<pubDate>Thu, 24 Aug 2006 23:59:17 +0000</pubDate>
		<dc:creator>ZMAng</dc:creator>
		
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://articles.zmang.com/web-design/text-replacement-techniques/</guid>
		<description><![CDATA[One of the greatest handicaps web designers are afflicted with is in the area of typography. Besides being limited by a small stable of universal fonts, the lack of anti-aliasing support in most browsers renders text styled using mere CSS and HTML highly limited in quality (a.k.a. ugly). This isn&#8217;t going to change in the [...]]]></description>
			<content:encoded><![CDATA[<p>One of the greatest handicaps web designers are afflicted with is in the area of typography. Besides being limited by a small stable of universal fonts, the lack of anti-aliasing support in most browsers renders text styled using mere CSS and HTML highly limited in quality (a.k.a. ugly). This isn&#8217;t going to change in the long term, so it goes without saying that web designers will have to persist with traditional typefaces - at least for large blocks of body text - for accessibility purposes.</p>
<p>What about large headlines though? Given their limited quantity on a single page, shouldn&#8217;t there be a means to produce beautiful text using custom typefaces? For most web sites, hand-created images are used to replace the underlying plain text headline. While complete typographical customisation is afforded, three problems come to mind. </p>
<p>One: Separation of style and content. Plonking down a plain <code>&lt;img&gt;</code> tag with your hand-crafted image means that your image location will have to be defined within your structural markup, rather than the preferred external stylesheet. Two: Accessibility. Using CSS to define a background image instead results in no alternative text when images are turned off given the lack of an <code>alt</code> attribute. Three: Manageablity and flexibility. Every headline you want to replace with an image will have to be managed individually. Images created by hand and tags assigned by hand. Any change in typeface will require a change in the individual replacement image.</p>
<p>Enter modern text replacement techniques. Some of these attempt to solve all three problems, while others focus on only the issue of accessibility. All, however, ensure that you have an effective, standards-based means to stamp down typography you dictate - completely. There are three categories of methods which comprise modern text replacement methods: <a href="#imagebased">Image-based</a>, <a href="#javabased">Javascript-based</a> or <a href="#flashbased">Flash-based</a> text replacement.</p>
<h4><a name="imagebased">Image-based Text Replacement</a></h4>
<p>For the most part, these techniques tackle the issues of separation of style and content, as well as accessibility in replacing text with images - both problems highlighted above. But before you assume there is a finished and perfect product ready for instant implementation, here&#8217;s how the image replacement camp looks like (in some order of development):</p>
<ol>
<li>
<p><strong>Classic Fahrner Image Replacement (FIR)</strong><br/>First popularised by Douglas Bowman (with his <a href="http://www.stopdesign.com/articles/replace_text/">original tutorial</a>), this technique is the building block upon which almost all image replacement techniques thereafter have been developed. <strong>It has since been deprecated</strong>, though the concept remains important to know.</p>
<p>Fundamentally, classic FIR involves nesting one set of tags within another, using the inner set of tags to hide the text we intend to substitute, and using the outer set to display the image. While no particular tags are required, most nest a <code>&lt;span&gt;</code> tag within a header tag (e.g. <code>&lt;h1&gt;</code>) - with <code>display:none</code> assigned to the <code>&lt;span&gt;</code> and <code>background-image</code> assigned to the header.</p>
<p><strong>Its weaknesses:</strong> Not screen-reader friendly, second tag required (i.e. <code>&lt;span&gt;</code>), plus nothing is rendered when users turn off images, but enable CSS in their browsers.
</li>
<li>
<p><strong>FIR + ALT Text</strong><br/>Given that the lack of ALT text is the key cause of screen reader inaccessibility (in comparison with the use of a conventional <code>&lt;img&gt;</code> tag), <a href="http://www.homelesspixel.de">Radu Darvas</a> proposed the use of an additional transparent .gif to hold ALT text. View his <a href="http://www.homelesspixel.de/rt/textimage.html">original source code</a>.</p>
<p><strong>Its weaknesses:</strong> Besides the requirement of an additional <code>&lt;span&gt;</code> tag like in classic FIR, this method also requires the use of a third html tag, i.e. <code>&lt;img&gt;</code>, to hold the transparent .gif. There is thus little difference between this method and merely plonking down an <code>&lt;img&gt;</code> tag with the replacement image itself.
</li>
<li>
<p><strong>Leahy/Langridge Method</strong><br/>Two designers, <a href="http://www.moronicbajebus.com/playground/cssplay/image-replacement/">Seamus Leahy</a> and <a href="http://www.kryogenix.org/code/browser/lir/"Stuart Langridge</a>, independently devised an enhancement using <code>overflow:hidden</code>, which allows us to drop the second html tag, i.e. <code>&lt;span&gt;</code>. Screen readers surprisingly show text replaced through this method.</p>
<p><strong>Its weaknesses:</strong> Nothing is shown when images are turned off, but CSS turned on. Hack required to get it working in Internet Explorer 5.
</li>
<li>
<p><strong>Text Shifting Methods</strong><br/>Three somewhat similar methods using text shifting have been discovered. One by <a href="http://web-graphics.com/mtarchive/001108.php#subheadcomments">Radu Darvas</a> using a very large negative <code>margin-left</code>, and another by <a href="http://phark.typepad.com/phark/2003/08/accessible_imag.html">Mike Rundle</a> of Phark using a very large negative <code>text-indent</code> (see <a href="http://www.mezzoblue.com/tests/revised-image-replacement/">Phark Revised</a> which adds a <code>height</code> declaration to squash a Safari bug). The third method at <a href="http://www.stuffandnonsense.co.uk/archives/examples/malarkey-method-example.html">Stuff and Nonsense</a> uses a very large negative <code>letter-spacing</code>. All methods show the replaced text in screen readers.</p>
<p><strong>Its weaknesses:</strong> Again, nothing shows when images are off and CSS is on.
</li>
<li>
<p><strong>Z-Index Method</strong><br/>By <a href="http://mezzoblue.com/archives/2003/12/12/accessible_i/#c018350">applying a negative z-index</a> on the inner html tag, i.e. <code>&lt;span&gt;</code>, text can effectively be hidden in simple layouts, and yet show in screen readers. It also solves the problem when images are off and CSS is left on.</p>
<p><strong>Its weaknesses:</strong> This method only seems to work on simple layouts. In more complex layouts where multiple elements are nested, the negative z-index <a href="http://levin.grundeis.net/files/20031217/test.html">puts the element too deep</a> to be visible. Moreover, this method still requires the additional <code>&lt;span&gt;</code> tag.</li>
<li>
<p><strong>Gilder/Levin Method</strong><br/>Solving the problem when images are off and CSS is on, and yet working in screen readers as well is a method devised by <a href="http://blog.tom.me.uk/2003/08/07/">Tom Gilder</a> and <a href="http://levin.grundeis.net/files/20030809/alternatefir.html">Levin Alexander</a>. This, along with the text shifting methods above, are among the most promising techniques.</p>
<p><strong>Its weaknesses:</strong> Still requires a second html tag, i.e. <code>&lt;span&gt;</code>. Transparent images cannot be used since they won&#8217;t hide the replaced text. Code is <a href="http://mezzoblue.com/archives/2003/12/12/accessible_i/">arguably more complicated</a> than the text shifting methods above. </li>
</ol>
<p>Of all the methods, only the Gilder/Levin method and text shifting methods tackle two out of three of the main weaknesses addressed here (screen reader accessibility, images off CSS on, extra html tag) without introducing any new major problems into the picture. The former ensures text is shown in screen readers and also when images are turned off and CSS is on. The latter is also screen reader accessible, but does not show anything when images are off and CSS on. However, it does not require the additional <code>&lt;span&gt;</code> tag.</p>
<p>This would thus imply that, in general, the Gilder/Levin method is the most optimal image-based text replacement method available at the moment, considering that it solves the two major accessibility problems, while only leaving us with an additional <code>&lt;span&gt;</code> tag.</p>
<h4><a name="javabased">Javascript-based Text Replacement</a></h4>
<p>Javascript-based techniques hope to reduce the dependency of image-based CSS techniques on a key assumption: Screen readers can&#8217;t handle certain CSS rules, and thus show the hidden text normally replaced on conventional PC screens. </p>
<ul>
<li>
<p><strong>Javascript-centric FIR</strong><br/>Pretty much the first full attempt to bring in Javascript to compensate for FIR&#8217;s traditional weaknesses, <a href="http://www.quirksmode.org/dom/fir.html">this method</a> by Peter-Paul Koch requires only a small amount of Javascript (~1kb) to handle the text replacement normally done by CSS. Like the image-based text replacement methods above, this one still requires you to manually create the replacement images yourself - unlike the methods outlined below. </p>
<p><strong>Its weaknesses:</strong> Requires Javascript to be turned on.</li>
<li>
<p><strong>Dynamic Text Replacement</strong><br/>As an extension for the Javascript-centric FIR method outlined before this, this method brings in automatic generation of the replacement image using PHP (plus the GD library). A lot of detail has been taken into consideration to ensure a robust technique, including print-friendliness and flicker-freeness.</p>
<p><strong>Its weaknesses:</strong> On the client-side, it requires Javascript to be turned on, and imposes an ~8kb script overhead. Server-side, it requires PHP, with the GD library installed.</li>
<li>
<p><strong>Scalable Jens Image Replacement (sJIR)</strong><br/>Built upon the framework of <a href="#flashbased">scalable Inman Flash Replacement (sIFR)</a>, sJIR attempts to remove the Flash component required in sIFR (leaving only Javascript as the remaining client-side requirement). As a result, sJIR has almost similar requirements to the Dynamic Text Replacement method. Therefore, your final choice between them pretty much depends on personal preference.</p>
<p><strong>Its weaknesses:</strong> On the client-side, it requires Javascript to be turned on, and imposes an ~8kb script overhead. Server-side, it requires PHP, with GD and libfreetype libraries installed.</li>
</ul>
<h4><a name="flashbased">Flash-based Text Replacement</a></h4>
<p>Only one method exists within this category, but it is one of the most promising text replacement techniques available today. Although it requires Flash client-side, the strong browser compatability of Flash and its high adoption rate ensures that this method can be depended on in production-level sites. Scalable Inman Flash Replacement (sIFR) is currently <a href="http://www.mikeindustries.com/sifr/">stable at version 2</a>, though <a href="http://novemberborn.net/sifr3">version 3 is already in beta</a> at the time of writing of this article.</p>
<p><strong>Its weaknesses:</strong> Requires both Flash and Javascript client-side, and imposes a ~8kb script overhead, as well as a 5-20kb font .swf overhead. Cannot be used in high volume due to the processor overhead involved. Requires Flash developer-side to generate font .swf files (though repositories of free .swf font files are available online).</p>
]]></content:encoded>
			<wfw:commentRss>http://articles.zmang.com/web-design/text-replacement-techniques/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
