<?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>opensourcetutor.com &#187; Javascript</title>
	<atom:link href="http://www.opensourcetutor.com/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.opensourcetutor.com</link>
	<description>On Linux, Web Development, Joomla and Magento commerce</description>
	<lastBuildDate>Sat, 04 Feb 2012 10:27:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>How to compress css &amp; javascript: An alternative to mod_deflate or mod_gzip</title>
		<link>http://www.opensourcetutor.com/2009/06/01/how-to-compress-css-javascript-an-alternative-to-mod_deflate-or-mod_gzip/</link>
		<comments>http://www.opensourcetutor.com/2009/06/01/how-to-compress-css-javascript-an-alternative-to-mod_deflate-or-mod_gzip/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 07:35:27 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Linux Administration]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[mod_deflate]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[yslow]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/2009/06/01/how-to-compress-css-javascript-an-alternative-to-mod_deflate-or-mod_gzip/</guid>
		<description><![CDATA[



So, you have used Website Optimization Analyzer or you installed Yslow for Firefox or you discovered somewhere else that compressing your files (html, javascript &#38; css) is a good thing to do. Unfortunately, it&#8217;s not always as easy as it looks to do this.
In Apache web hosting environments, there is a module called mod_deflate (for 2.x versions) or mod_gzip (for 1.3) versions. This is generally the easiest way to get content compressed. As in my last post about Magento, you should normally be able to enable this safely with the ...]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript"><!--
google_ad_client = "pub-9469051832075629";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text";
//2007-05-22: opensourcetutor.com
google_ad_channel = "3549963802";
google_color_border = "FFF";
google_color_bg = "FFF";
google_color_link = "333";
google_color_text = "CCCCCC";
google_color_url = "999999";
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>So, you have used <a href="http://www.websiteoptimization.com/services/analyze/" target="_blank">Website Optimization Analyzer</a> or you installed <a href="https://addons.mozilla.org/en-US/firefox/addon/5369" target="_blank">Yslow for Firefox</a> or you discovered somewhere else that compressing your files (html, javascript &amp; css) is a good thing to do. Unfortunately, it&#8217;s not always as easy as it looks to do this.</p>
<p>In Apache web hosting environments, there is a module called mod_deflate (for 2.x versions) or mod_gzip (for 1.3) versions. This is generally the easiest way to get content compressed. As in my <a href="http://www.opensourcetutor.com/2009/04/07/how-to-speed-up-magento-ecommerce/" target="_blank">last post about Magento</a>, you should normally be able to enable this safely with the following lines inside your .htaccess file in your www root of your website:</p>
<p><code>&lt;ifmodule mod_deflate.c&gt;<br />
    # Insert filter<br />
    SetOutputFilter DEFLATE<br />
    # Netscape 4.x has some problems...<br />
    BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
    # Netscape 4.06-4.08 have some more problems<br />
    BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
    # MSIE masquerades as Netscape, but it is fine<br />
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html<br />
    # Don't compress images<br />
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
    # Make sure proxies don't deliver the wrong content<br />
    Header append Vary User-Agent env=!dont-vary<br />
&lt;/ifmodule&gt;</code></p>
<p>Then visit your website and in your browser right-click on the web page and choose &#8220;View Source&#8221;. In the source code, try and find a line that contains your stylesheet, then we go to <a href="http://www.whatsmyip.org/http_compression/" target="_blank">whatsmyip compression checker</a> and we enter the whole URL to your stylesheet there. To test, enter my css url.</p>
<p><code>http://www.opensourcetutor.com/wp-content/themes/hemingwayEx/style.css</code></p>
<p>You should see a big green tick and the site will say the CSS is compressed. Now, if you don&#8217;t, you either haven&#8217;t applied my above .htaccess settings yet or mod_deflate is not enabled on your server for you to access.</p>
<h2>Alternative #1 &#8211; requires Apache mod_rewrite</h2>
<p>This method is probably the best method I have seen to overcome the mod_deflate issue and we are only concerned about javascript and css files for now. PHP has an easy method to compress php files on the fly. What we need to do is gzip all our javascript &amp; css files.</p>
<p>If you have shell access, you can run this command to take of the job for you. It will find each and every javascript file and css file and create a gzip copy.</p>
<p><code>find . -regex ".*\(css\|js\)$" -exec bash -c 'echo Compressing "{}" &amp;amp;&amp;amp; gzip -c --best "{}" &gt; "{}.gz"' \;</code></p>
<p>The line above searches the current directory and any subdirectories for files with extensions .js or .css, then prints out that it is being compressed, then compresses with the highest compression in that directory leaving the original file as is.</p>
<p>Now, we need to tell our browser to access the gzip version *IF* it supports gzip encoding. To do this, we use the following in our .htaccess file. Make sure you have removed the above code if it wasn&#8217;t successful.</p>
<pre>
<code>&lt;files *.js.gz&gt;
  AddType "text/javascript" .gz
  AddEncoding gzip .gz
&lt;/files&gt;
&lt;files *.css.gz&gt;
  AddType "text/css" .gz
  AddEncoding gzip .gz
&lt;/files&gt;
RewriteEngine on
#Check to see if browser can accept gzip files.
ReWriteCond %{HTTP:accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
#make sure there's no trailing .gz on the url
ReWriteCond %{REQUEST_FILENAME} !^.+\.gz$
#check to see if a .gz version of the file exists.
RewriteCond %{REQUEST_FILENAME}.gz -f
#All conditions met so add .gz to URL filename (invisibly)
RewriteRule ^(.+) $1.gz [QSA,L] </code>
</pre>
<p>The advantage of this Alternative is that our server doesn&#8217;t have to gzip / compress the javascript and css each time it is called. This eases the load up on the server as we already do the compression one time and then just call the compressed version from then after. The other advantage is that we don&#8217;t need to load up mod_deflate each time. This could be advantages if you are running a VPS with very low memory available.</p>
<p>If you have a static website, you could apply the same technique for all your html files. To do so, you would instead use this line:</p>
<p><code>find . -regex ".*\(html\|css\|js\)$" -exec bash -c 'echo Compressing "{}" &amp;amp;&amp;amp; gzip -c --best "{}" &gt; "{}.gz"' \;</code></p>
<p>and then add this into your .htaccess also</p>
<pre>
<code>&lt;files *.html.gz&gt;
  AddType "text/html" .gz
  AddEncoding gzip .gz
&lt;/files&gt;</code>
</pre>
<p><script type="text/javascript"><!--
google_ad_client = "pub-9469051832075629";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text";
//2007-05-22: opensourcetutor.com
google_ad_channel = "3549963802";
google_color_border = "FFF";
google_color_bg = "FFF";
google_color_link = "333";
google_color_text = "CCCCCC";
google_color_url = "999999";
//-->
</script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>
Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/apache" rel="tag">apache</a>, <a class="performancingtags" href="http://technorati.com/tag/gzip" rel="tag">gzip</a>, <a class="performancingtags" href="http://technorati.com/tag/mod_deflate" rel="tag">mod_deflate</a>, <a class="performancingtags" href="http://technorati.com/tag/compression" rel="tag">compression</a>, <a class="performancingtags" href="http://technorati.com/tag/yslow" rel="tag">yslow</a>, <a class="performancingtags" href="http://technorati.com/tag/firefox" rel="tag">firefox</a>, <a class="performancingtags" href="http://technorati.com/tag/optimization" rel="tag">optimization</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2009/06/01/how-to-compress-css-javascript-an-alternative-to-mod_deflate-or-mod_gzip/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>How to Speed up Magento</title>
		<link>http://www.opensourcetutor.com/2009/04/07/how-to-speed-up-magento/</link>
		<comments>http://www.opensourcetutor.com/2009/04/07/how-to-speed-up-magento/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 08:27:30 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Ecommerce]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/?p=172</guid>
		<description><![CDATA[Having implemented a number of websites now in Magento and being the web hosting provider for them also, it&#8217;s been both challenging and rewarding trying to get Magento running at an acceptable speed.People generally don&#8217;t understand what&#8217;s happening when they say &#8220;my website is slow&#8221;. So, for those of you unfamiliar with benchmarking / understanding what factors to consider when a page loads from a server, we have quite a number of variables.

Your URL you type into a browser, translates to an IP address &#8211; this check should take a ...]]></description>
			<content:encoded><![CDATA[<p>Having implemented a number of websites now in Magento and being the <a href="http://www.serverspacesolutions.com.au/" target="_blank">web hosting provider</a> for them also, it&#8217;s been both challenging and rewarding trying to get Magento running at an acceptable speed.People generally don&#8217;t understand what&#8217;s happening when they say &#8220;my website is slow&#8221;. So, for those of you unfamiliar with benchmarking / understanding what factors to consider when a page loads from a server, we have quite a number of variables.</p>
<ol>
<li>Your URL you type into a browser, translates to an IP address &#8211; this check should take a very, very short time</li>
<li>Your browser then begins to access the web server where your website is hosted to ask for the page you want, this can cause some delay, typically 40-200ms (bottleneck 1.)</li>
<li>In the case of Magento,it uses PHP as the software language that runs the site, so the php begins to execute (bottleneck 2.)</li>
<li>PHP then reaches a part of it&#8217;s code it needs to access the database to retrieve website data and sometimes insert information about who you are. (bottleneck 3.)</li>
<li>The PHP code retrieves the information, does a bit more computing on it (for simplicity, this is still bottleneck 2) and then sends it to your web server</li>
<li>Your webserver can then send it or compress it and then send it to you (bottlneck 4)</li>
<li>The data is sent over the internet to your browser (bottlneck 5)</li>
<li>Your browser must &#8216;render&#8217; the data it receives into an actual web page (bottleneck 6)</li>
</ol>
<p>I will assume you are here specifically for Magento issues, so let&#8217;s get started with the basics. I will make the assumption that your web server is running Apache and you have very little control over that.</p>
<h3>Preparation &#8211; the &#8220;before&#8221;</h3>
<ol>
<li>If you are familiar with the, use <a target="_blank" href="http://www.mozilla.com/">Firefox</a> and the <a target="_blank" href="http://www.getfirebug.com/">Firebug extension</a> and the <a target="_blank" href="http://developer.yahoo.com/yslow/">Yslow extension</a>. Take a screenshot of your statistics.
</li>
<li>Alternatively, what I suggest is to go to <a href="http://analyze.websiteoptimization.com/">WebsiteOptimization</a> if you&#8217;re fairly new to this. You basically enter your URL and click. Print out the page, preferably to PDF before we begin.</li>
</ol>
<h3>Check Magento Caching is turned on (if not developing still)</h3>
<ol>
<li>Login to your Magento Admin</li>
<li>go to System -> Cache Management</li>
<li>in the dropdown box, choose &#8220;enable&#8221; and tick all the boxes, then save settings.</li>
</ol>
<h3>Let&#8217;s start simple &#8211; .htaccess and gzip/deflate<br />
</h3>
<ol>
<li>Go to <a href="http://www.whatsmyip.org/mod_gzip_test/">mod_gzip tester</a> and enter your magento site address. If it comes back with a big green tick and says http://yourmagentosite.com is gzipped, then you&#8217;re in business and skip step 2. If not..go to step 2
</li>
<li>Using ftp or ssh, however you access your magento website, go to the root of the site and find your .htaccess file. Scroll down until you see something like:</li>
<p><code>&lt;ifmodule mod_deflate.c&gt;<br />
    # Insert filter<br />
    SetOutputFilter DEFLATE<br />
    # Netscape 4.x has some problems...<br />
    #BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
    # Netscape 4.06-4.08 have some more problems<br />
    BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
    # MSIE masquerades as Netscape, but it is fine<br />
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html<br />
    # Don't compress images<br />
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
    # Make sure proxies don't deliver the wrong content<br />
    Header append Vary User-Agent env=!dont-vary<br />
&lt;/ifmodule&gt;</code></p>
<li>Make sure it looks like above. A hash in front of the line means it&#8217;s commented out. If your .htaccess file does look like this AND <a href="http://www.whatsmyip.org/mod_gzip_test/">mod_gzip tester</a> is still not showing enabled, you need to talk to your web hosting provider. They may not allow overrides or may not have the deflate module installed or enabled. If it doesn&#8217;t look like the above, remove the hashes from your lines so that it reflects what is above, then retest with <a href="http://www.whatsmyip.org/mod_gzip_test/">mod_gzip tester</a></li>
<li>Take a screenshot / pdf printout of Yslow / websiteoptimizer results. ;)
</li>
</ol>
<h3>Let&#8217;s shrink our javascript</h3>
<ol>
<li>Magento uses A LOT of LARGE javascript libraries and depending on your template, it&#8217;s a good chance that these make up for 50% of your website page size. This should only affect the first page load but it&#8217;s often the first impressions that count, so let&#8217;s shrink it.</li>
<li>For this, we will use the <a target="_blank" href="http://www.magentocommerce.com/extension/457/fooman-speedster">Fooman Speedster Extension</a> from magentoconnect. Click on the &#8220;get extension key&#8221; and then copy the key to your clipboard.</li>
<li>Now go to your magento store admin interface and click on &#8220;System -> Magento Connect -> Magento Connect Manager&#8221;. Enter your admin user/pass to access magento connect manager.
</li>
<li>*Warning &#8211; once you install the extension until you fix your .htaccess, it may break your website*</li>
<li>Paste the extension key to install the extension</li>
<li>Now go to your .htaccess and under the line: #RewriteBase /magento/ add this line
<p><code>RewriteRule ^(index.php/)?minify/([^/]+)(/.*.(js|css))$ lib/minify/m.php?f=$3&amp;amp;d=$2<br />
</code></li>
<li>Save your .htaccess and access your site (it may take a while to load the first time as it minifies and creates it&#8217;s cache.
</li>
<li>**Test your site is working properly**
</li>
<li>Take a screenshot / pdf printout of Yslow / websiteoptimizer results. ;)</li>
</ol>
<h3>Let&#8217;s check our php settings</h3>
<ol>
<li>Create a file called phpinfo.php and enter this information into it.</li>
<li>Check for the following: memory_limit</li>
<li>If it&#8217;s less than 128M, try and add an entry into your .htaccess like so:
</li>
<p><code>php_value memory_limit 128M</code></p>
</ol>
<h3>Finally, MySQL &#8211; for experienced users.<br />
</h3>
<ol>
<li>If you&#8217;re a mysql hero, you don&#8217;t need me to tell you how but we want to try and get the following settings in your my.cnf
</li>
<p><code>query_cache_type = 1<br />
query_cache_size = 32M<br />
query_cache_limit=2M</code></p>
<li>If you don&#8217;t have root access to check /etc/my.cnf (or /etc/mysql/my.cnf) variables, then login to mysql or use phpmyadmin to show variables.
</li>
<p><code>$ mysql -u mysqluser -p magento_database_name<br />
$ mysql&gt; SHOW VARIABLES;</code></p>
<li>If you don&#8217;t have control over your mysql configuration, go knocking on your Web Host&#8217;s support tickets to get them to modify it to suit you or if you&#8217;re in Australia, <a target="_blank" href="http://www.serverspacesolutions.com.au/">check us out</a>
</li>
</ol>
<p>**If you want someone to do this all for you, lodge a support ticket at <a target="_blank" href="https://www.yourwebhostingsupport.com/index.php?_m=tickets&amp;_a=submit">Yourwebhostingsupport</a> with the Subject &#8220;Magento Optimisation&#8221;</p>
<p><!--adsense#widelinks--></p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/magento" rel="tag">magento</a>, <a class="performancingtags" href="http://technorati.com/tag/optimization" rel="tag">optimization</a>, <a class="performancingtags" href="http://technorati.com/tag/apache" rel="tag">apache</a>, <a class="performancingtags" href="http://technorati.com/tag/mysql" rel="tag">mysql</a>, <a class="performancingtags" href="http://technorati.com/tag/speed" rel="tag">speed</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2009/04/07/how-to-speed-up-magento/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Quick Lightbox effect for any content in Joomla 1.5</title>
		<link>http://www.opensourcetutor.com/2009/02/20/quick-lightbox-effect-for-any-content-in-joomla-15/</link>
		<comments>http://www.opensourcetutor.com/2009/02/20/quick-lightbox-effect-for-any-content-in-joomla-15/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 05:31:51 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Joomla 1.5]]></category>
		<category><![CDATA[Lightbox]]></category>
		<category><![CDATA[Squeezebox]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/2009/02/20/quick-lightbox-effect-for-any-content-in-joomla-15/</guid>
		<description><![CDATA[
Joomla 1.5&#8242;s use of Squeezebox in the backend makes for easy use in the frontend. Thanks to this article at Dvector.com I was able to mash up a lightbox style feedback form for category listing in sobi directory component.
Technorati Tags: Joomla, Joomla 1.5, Squeezebox, Lightbox, Email

]]></description>
			<content:encoded><![CDATA[<p><!--adsense#widelinks--><br />
Joomla 1.5&#8242;s use of <a target="_blank" href="http://digitarald.de/project/squeezebox/">Squeezebox</a> in the backend makes for easy use in the frontend. Thanks to <a target="_blank" href="http://dvector.com/oracle/2009/02/05/using-the-joomla-lightbox/">this article</a> at <a href="http://www.dvector.com/">Dvector.com</a> I was able to mash up a lightbox style feedback form for category listing in sobi directory component.</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/Joomla" rel="tag">Joomla</a>, <a class="performancingtags" href="http://technorati.com/tag/Joomla%201.5" rel="tag">Joomla 1.5</a>, <a class="performancingtags" href="http://technorati.com/tag/Squeezebox" rel="tag">Squeezebox</a>, <a class="performancingtags" href="http://technorati.com/tag/Lightbox" rel="tag">Lightbox</a>, <a class="performancingtags" href="http://technorati.com/tag/Email" rel="tag">Email</a></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=8d1ad7c8-8762-435c-9b71-354704299591" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2009/02/20/quick-lightbox-effect-for-any-content-in-joomla-15/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Open Source Web Design and Development Tools &#8211; Inkscape and Kompozer</title>
		<link>http://www.opensourcetutor.com/2008/05/28/open-source-web-design-and-development-tools-inkscape-and-kompozer/</link>
		<comments>http://www.opensourcetutor.com/2008/05/28/open-source-web-design-and-development-tools-inkscape-and-kompozer/#comments</comments>
		<pubDate>Wed, 28 May 2008 00:08:10 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/2008/05/28/open-source-web-design-and-development-tools-inkscape-and-kompozer/</guid>
		<description><![CDATA[
I have been using Linux on the desktop part-time for nearly 6 years now and full-time for 3 years. My web development experience began using Macromedia&#8217;s tools and when I migrated to Linux, I took them with me with the help of the Wine project to run them under Linux. The majority of the functionality I used in Fireworks worked flawlessly, with only a few small exceptions and never crashed on me. 
Dreamweaver was a slightly different story, especially as layouts became more complex and the html grew in size, ...]]></description>
			<content:encoded><![CDATA[<p><!--adsense#widelinks--><br />
I have been using Linux on the desktop part-time for nearly 6 years now and full-time for 3 years. My web development experience began using Macromedia&#8217;s tools and when I migrated to Linux, I took them with me with the help of the Wine project to run them under Linux. The majority of the functionality I used in Fireworks worked flawlessly, with only a few small exceptions and never crashed on me. </p>
<p>Dreamweaver was a slightly different story, especially as layouts became more complex and the html grew in size, it had a tendency to crash under wine in these circumstances. I run a horizontal split window of the design view and code view. Sometimes, it&#8217;s easier to achieve what you want in one or the other. </p>
<p>Until recently, I was unable to find something that a) Performed the job as good (or close to) both Dreamweaver and Fireworks and b) Felt natural to use and learn.</p>
<p>For imaging / design: &#8220;The Gimp&#8221;<br />Web &#8216;development&#8217;: Screem or Bluefish</p>
<p>For numerous reasons, these never cut it for me. I am not a fan of Photoshop / The Gimp interface and while I was able to get around and do things I needed to do, it felt slow and awkward. Both screem and bluefish had no way to quickly view your changes in the IDE or to make changes visually.</p>
<p>That said, all three programs are very capable it&#8217;s just that they don&#8217;t suit my way of doing things.</p>
<p>I now am slowly migrating to two new tools for web development.</p>
<p>Replacing Fireworks &#8211; Inkscape has come to the rescue.<br />Replacing Dreamweaver &#8211; Kompozer is here to help.</p>
<p><b>Inkscape</b></p>
<p>Just the last 2 weeks I have really begun getting into Inkscape, an amazingly capable and well designed vector graphics editor that (apart from the odd crash &#8211; though it manages to save your work) is proving to me to be even better than Fireworks. It&#8217;s like Freehand and Fireworks all in one beautifully wrapped package &#8211; that can even be scripted in Python.</p>
<p>I am certainly no graphics guru but I&#8217;m definitely above average compared to most non-professional graphics users.</p>
<p>Apart from the user interface being well thought out, the other great things about Inkscape are: </p>
<ol>
<li>Excellent Tutorials and Resources</li>
<li>Keyboard Shortcuts for almost anything.</li>
<li>In-built access to <a target="_blank" href="http://www.openclipart.org/">Open Clipart</a> (0.46 Linux only)</li>
</ol>
<p>Here&#8217;s a quicklist of places to find great inkscape tutorials:
<ul>
<li><a target="_blank" href="http://inkscapetutorials.wordpress.com/">Inkscape Tutorials</a></li>
<li><a href="http://screencasters.heathenx.org/">Heathenex Screencasters</a></li>
<li><a target="_blank" href="http://www.inkscape.org/doc/index.php">Inkscape Docs</a> (in 12 languages)</li>
<li><a target="_blank" href="http://nicubunu.blogspot.com/search/label/inkscape">Nicu Bunu</a></li>
<li><a target="_blank" href="http://tavmjong.free.fr/INKSCAPE/MANUAL/html/index.php">Inkscape Book</a></li>
</ul>
<p>a feature I would love to see is the ability to automatically download any open source fonts found in your Inkscape document, so that sharing files could be easier.</p>
<p>Inkscape is available for Linux, Windows and Mac OS X and can be <a target="_blank" href="http://www.inkscape.org/download/">downloaded here</a></p>
<p>It is available via apt-get and yum repositories in their respective Linux distributions.</p>
<p><b>Kompozer</b></p>
<p><a target="_blank" href="http://www.kompozer.net/">Kompozer</a> is an unofficial bug-fix release of &#8216;Nvu&#8217;, which was born out of Mozilla&#8217;s Composer. The advantage of this is that Kompozer uses the gecko engine to render Kompozer&#8217;s layouts within itself much like you can with Dreamweaver (ie: without opening an external browser to view your layout). Additionally, it has very good support for CSS, XML and Javascript editing and a built-in W3C HTML Validator.</p>
<p>I have had Kompozer crash on me, usually when pasting in a large HTML page from elsewhere but other than that, it is an extremely user friendly and capable HTML/CSS/JS editor.</p>
<p>It is not an ASP / PHP / Python IDE and doesn&#8217;t make any attempts to be one. From that perspective I feel it encourages clean separation of code and layout.</p>
<p>Once again, Kompozer is also cross-platform and is available for Windows, Linux and Mac OS X</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2008/05/28/open-source-web-design-and-development-tools-inkscape-and-kompozer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JSON &amp; Serialization in Django &#8211; Links for my reference</title>
		<link>http://www.opensourcetutor.com/2007/10/16/json-serialization-in-django-links-for-my-reference/</link>
		<comments>http://www.opensourcetutor.com/2007/10/16/json-serialization-in-django-links-for-my-reference/#comments</comments>
		<pubDate>Tue, 16 Oct 2007 05:18:57 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/2007/10/16/json-serialization-in-django-links-for-my-reference/</guid>
		<description><![CDATA[Generic Serialization using JSON &#8211; here &#8217;tis
Django + Ajax Presentation (pdf) &#8211; page 35 onwards &#8211; here &#8217;tis
Thread on ExtJS forum specifically Django + JSON + ExtJS &#8211; here &#8217;tis
Aah, also five part ipython series on showmedo.com
Technorati Tags: django, extjs, json, ajax
Powered by ScribeFire.
]]></description>
			<content:encoded><![CDATA[<p>Generic Serialization using JSON &#8211; <a href="http://blog.michaeltrier.com/tags/json">here &#8217;tis</a><br />
Django + Ajax Presentation (pdf) &#8211; page 35 onwards &#8211; <a href="http://www.red-bean.com/~adrian/presentations/2006-harvard-acm-django.pdf">here &#8217;tis</a><br />
Thread on ExtJS forum specifically Django + JSON + ExtJS &#8211; <a href="http://extjs.com/forum/showthread.php?t=3059">here &#8217;tis</a></p>
<p>Aah, also five part <a href="http://showmedo.com/videos/IPython">ipython series</a> on <a href="http://www.showmedo.com">showmedo.com</a></p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/django" rel="tag">django</a>, <a class="performancingtags" href="http://technorati.com/tag/extjs" rel="tag">extjs</a>, <a class="performancingtags" href="http://technorati.com/tag/json" rel="tag">json</a>, <a class="performancingtags" href="http://technorati.com/tag/ajax" rel="tag">ajax</a></p>
<p class="poweredbyperformancing">Powered by <a href="http://scribefire.com/">ScribeFire</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2007/10/16/json-serialization-in-django-links-for-my-reference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seamless on/offline: Design winForms and deploy as ajax webapp on mono</title>
		<link>http://www.opensourcetutor.com/2007/10/09/seamless-onoffline-design-winforms-and-deploy-as-ajax-webapp-on-mono/</link>
		<comments>http://www.opensourcetutor.com/2007/10/09/seamless-onoffline-design-winforms-and-deploy-as-ajax-webapp-on-mono/#comments</comments>
		<pubDate>Mon, 08 Oct 2007 13:03:21 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Internet Goodness]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/2007/10/09/seamless-onoffline-design-winforms-and-deploy-as-ajax-webapp-on-mono/</guid>
		<description><![CDATA[
Visual WebGui looks very interesting from a perspective that it allows you to develop a winforms application as you normally would and deploy it as a webapp (also).
As per some previous posts, I like to be able to jump seamlessly between platforms. I don&#8217;t want to be tied down to anything if I can help it. This is why I wouldn&#8217;t buy an Ipod and like Mark Pilgrim, I don&#8217;t get the iphone phenomena. I want to use my application online, offline seamlessly. I want to have the same experience, ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.scriptlance.com/?ref=salubrium"><img SRC="http://www.scriptlance.com//banners/banner_9_468x60.gif" WIDTH="468" HEIGHT="60" BORDER="0" ALT="Find freelance programmers at ScriptLance.com - Search worldwide"/></a><br />
<a href="http://www.visualwebgui.com/">Visual WebGui</a> looks very interesting from a perspective that it allows you to develop a winforms application as you normally would and deploy it as a webapp (also).</p>
<p>As per some previous posts, I like to be able to jump seamlessly between platforms. I don&#8217;t want to be tied down to anything if I can help it. This is why I wouldn&#8217;t buy an Ipod and <a href="http://diveintomark.org/archives/2007/10/04/if-wishes-were-iphones">like Mark Pilgrim</a>, I don&#8217;t get the iphone phenomena. I want to use my application online, offline seamlessly. I want to have the same experience, no matter where I am, what I am doing etc. Software like NoMachine&#8217;s NX server give me this ability. I have a ultra-portable laptop I bought for $280 on ebay, I have <a href="http://www.three.com.au">Three</a> wireless, which means I can be a passenger in a car / train / ferry / bus nearly anywhere in metro-Sydney and still have access to my Ubuntu desktop.. that&#8217;s frikkin&#8217; cool.</p>
<p>But what about when I don&#8217;t have internet access? Well, I previously used <a href="http://www.ifolder.com">Ifolder</a> to keep all my files in sync (which uses mono btw) but ifolder has to be the worst managed open source project I have ever used. Trying to keep a client / server combination that worked together proved to be a feat for me too many times and finally I went in search of something else. I then switched over to <a href="http://www.mindquarry.com/">Mindquarry </a>(I could have just used svn with some python scripts that watched folders and syncs when it sees a change, I guess) but Mindquarry actually offers a few more features than svn or Ifolder alone ie: Tasks, timeline, wiki and teams. </p>
<p>So, now we have our files synchronised and I use imap, so we have mail synchronised and I have used <a href="http://sitebar.org/">sitebar</a> for bookmarks for a very long time but there&#8217;s something more. What about my feeds in opera? all my vim settings? my bash_profile alias? This is where I think <a href="http://www.conduit-project.org/">Conduit</a> will be able to help me out eventually (one of the reasons I looked forward to moving to Gnome)</p>
<p><object height="350" width="425"><param name="movie" value="http://www.youtube.com/v/bMJG-zNl5PA"></param><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/bMJG-zNl5PA" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"></embed></param></object></p>
<p>Now, I am really raising two separate issues here. On one hand, I am talking about syncronising two separate computers and on the other, I am talking about a seamless experience between online and offline applications. I think the first is mostly being taken care of. The second issue has some solutions becoming available also. This is where I see stuff like <a href="http://gears.google.com/">Google Gears</a>, <a href="http://labs.adobe.com/technologies/air/">Adobe Air</a> and <a href="http://www.db4o.com/">db4o</a> especially their db4o <a href="http://www.db4o.com/about/productinformation/features/drs.aspx">replication system</a>proving to show their usefulness.</p>
<p>Sidenote: In the Enterprise Data Centre, <a href="http://www.lefthandnetworks.com/">Lefthandnetworks</a> has some very similar concepts happening for data virtualisation for online / offline drs solutions as db4o has for persistance &#8211; and more importanly for me, their new VMware product looks very promising for high availability + drs soutions using vmware.</p>
<p>So, now I bring up my original point in my posting. Let&#8217;s say we develop a desktop applications using db4o (mono bindings available) and I think we could even do that using the .Net python-like language called Boo &#8211; the developer of said language happens to also be a developer of db4o. Now, we take said winForms application and deploy it to the web using <a href="http://www.visualwebgui.com/">Visual WebGui</a>. Now, I know the web purists might find this all very freakish as I haven&#8217;t done a W3C Validation on it, but I am half-certain something will be wrong and it&#8217;s not the sort of thing you are going to be delivering to blind people. I am talking about applications with a specific user base, something like a Mobile Lender, Mobile Salesperson, Microfinancing in remote areas etc. </p>
<p>In my post <a href="http://www.opensourcetutor.com/2007/05/02/a-case-for-learning-python/">A Case for Learning Python</a> I put forth my reasoning for deciding to spend all energy learning a language in Python &#8211; I don&#8217;t think any other language can offer the same access to so much for so little (time investment) as Python. </p>
<p>I will add something to the original list: <a href="http://windmill.osafoundation.org/">Windmill</a> is a web testing framework intended for complete automation of user interface testing, with strong test debugging capabilities and of course, it&#8217;s written in Python and uses CherryPy.</p>
<p>Also, in the same vein are <a href="http://webunit.sourceforge.net/">WebUnit</a> and <a href="http://twill.idyll.org/">Twill</a> (both written in Python)</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/python" rel="tag">python</a>, <a class="performancingtags" href="http://technorati.com/tag/ajax" rel="tag">ajax</a>, <a class="performancingtags" href="http://technorati.com/tag/winforms" rel="tag">winforms</a>, <a class="performancingtags" href="http://technorati.com/tag/mono" rel="tag">mono</a>, <a class="performancingtags" href="http://technorati.com/tag/django" rel="tag">django</a>, <a class="performancingtags" href="http://technorati.com/tag/visual%20webgui" rel="tag">visual webgui</a>, <a class="performancingtags" href="http://technorati.com/tag/mindquarry" rel="tag">mindquarry</a>, <a class="performancingtags" href="http://technorati.com/tag/gnome" rel="tag">gnome</a>, <a class="performancingtags" href="http://technorati.com/tag/conduit" rel="tag">conduit</a></p>
<p class="poweredbyperformancing">Powered by <a href="http://scribefire.com/">ScribeFire</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2007/10/09/seamless-onoffline-design-winforms-and-deploy-as-ajax-webapp-on-mono/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Links for the day &#8211; Javascript for Rich Internet Applications</title>
		<link>http://www.opensourcetutor.com/2007/09/28/links-for-the-day-javascript-for-rich-internet-applications/</link>
		<comments>http://www.opensourcetutor.com/2007/09/28/links-for-the-day-javascript-for-rich-internet-applications/#comments</comments>
		<pubDate>Fri, 28 Sep 2007 05:01:51 +0000</pubDate>
		<dc:creator>salubrium</dc:creator>
				<category><![CDATA[Internet Goodness]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.opensourcetutor.com/2007/09/28/links-for-the-day-javascript-for-rich-internet-applications/</guid>
		<description><![CDATA[Some Interesting Javascript &#8211; I am no JS guru, so comments are welcome
ExtJS &#8211; an interesting javascript library with some half-decent documentation and community, as well as paid support and alternative licensing
Shortcut.js &#8211; Keyboard enable your web application &#8211; this is something that&#8217;s seriously needed. I have seen bank tellers migrate from Terminal based systems to browser based systems where they were literally forced to work at a quarter of the speed of their terminal apps because the browser forces them into hunt and peck mode. Especially for old grannies ...]]></description>
			<content:encoded><![CDATA[<p>Some Interesting Javascript &#8211; I am no JS guru, so comments are welcome</p>
<p><a href="http://www.extjs.com/">ExtJS</a> &#8211; an interesting javascript library with some half-decent documentation and community, as well as paid support and alternative licensing</p>
<p><a href="http://www.openjs.com/scripts/events/keyboard_shortcuts/">Shortcut.js</a> &#8211; Keyboard enable your web application &#8211; this is something that&#8217;s seriously needed. I have seen bank tellers migrate from Terminal based systems to browser based systems where they were literally forced to work at a quarter of the speed of their terminal apps because the browser forces them into hunt and peck mode. Especially for old grannies who&#8217;s eyes were starting to fail them it can become painful to watch.</p>
<p>Oh &#8211; totally off topic but how to kill 5000 print jobs from your LPD queue in HP-UX? </p>
<blockquote><p>cancel -e &lt;printer_name&gt;</p></blockquote>
<p>I&#8217;ll have to look for the Linux alternative because the cancel command is deprecated in Linux for standard lp commands.</p>
<p>Technorati Tags: <a class="performancingtags" href="http://technorati.com/tag/javascript%20library" rel="tag">javascript library</a>, <a class="performancingtags" href="http://technorati.com/tag/keyboard%20shortcuts" rel="tag">keyboard shortcuts</a>, <a class="performancingtags" href="http://technorati.com/tag/Extjs" rel="tag">Extjs</a></p>
<p class="poweredbyperformancing">Powered by <a href="http://scribefire.com/">ScribeFire</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opensourcetutor.com/2007/09/28/links-for-the-day-javascript-for-rich-internet-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

