<?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>XS Labs &#187; Software</title>
	<atom:link href="http://www.xs.fi/blog/topics/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xs.fi</link>
	<description>Software business, our ventures, entertainment and general stuff - no boring bs</description>
	<lastBuildDate>Fri, 11 Feb 2011 12:53:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>How not to design a database</title>
		<link>http://www.xs.fi/blog/2010/10/how-not-to-design-a-database/</link>
		<comments>http://www.xs.fi/blog/2010/10/how-not-to-design-a-database/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 15:08:46 +0000</pubDate>
		<dc:creator>pompo500</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.xs.fi/?p=84</guid>
		<description><![CDATA[I&#8217;ve come across quite a few horrible database designs. Here are a few tips on how to build a better database world. Drupal is a great example of this. It&#8217;s database design offends most of these rules I consider that make a good database. COLUMN NAMES This is actually the most imporant one in my [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve come across quite a few horrible database designs. Here are a few tips on how to build a better database world.</p>
<p>Drupal is a great example of this. It&#8217;s database design offends most of these rules I consider that make a good database.</p>
<h2>COLUMN NAMES</h2>
<p>This is actually the most imporant one in my opinion, where almost everybody gets this wrong.</p>
<p>Always prefix your column names with the table name, and with camelcase. Makes everything more readable.<br />
Consider tables &#8220;products&#8221; and &#8220;categories&#8221;.</p>
<p>Products have</p>
<ul>
<li>ID</li>
<li>Name</li>
<li>Category ID</li>
</ul>
<p>Categories:</p>
<ul>
<li>ID</li>
<li>Name</li>
</ul>
<p>If your tables are designed poorly then you have columns named  products.ID and categories.ID. How do you SELECT products along with  their category names? You have to say category = categories.id. First  off, the name &#8220;category&#8221; suggests it refers to &#8220;categories&#8221; table, but  in fact it references &#8220;products.category&#8221;. That&#8217;s dumb and un-intuitive.</p>
<p>Why not prefix your columns with their table name? Like ProductID, ProductName and so on.</p>
<p>SELECT * FROM products INNER JOIN categories ON ProductCategory = CategoryID</p>
<p>SELECT * FROM products INNER JOIN categories ON category = category.id</p>
<p>Which looks better? And the first saves you from column ambiquity  errors. And if the database schema changes and introduces a new column  name that exists in two tables and a JOIN would happen to get data from  both, without table prefix. Shit hits the fan and your application  breaks.</p>
<h2>COLUMN TYPES</h2>
<p>Choose the right data types that fit the content  you are storing. If your columns are spec&#8217;d as varchar(100) then  something is probably wrong.</p>
<p>There are many and justified cases to  use variable length columns, but if the table does not specifically  need it, fixed length rows are much faster to seek to. It&#8217;s only a  simple multiply operation on fixed-length rows.</p>
<p>What&#8217;s a variable  length row? It&#8217;s when a table contains at least one column whose data  type is variable length. (varchar / tinytext / mediumtext / blob / ..)</p>
<h2>CONTENT</h2>
<p>What to store in the database? Only the data that that concerns you business logic. Not anything else, supporting functions for example.</p>
<p>Drupal is a great example of this. Drupal has 7 (seven) tables for caching purposes. Database should not handle cached data, rate limiter counts or anything of that nature.</p>
<h2>INDEXES</h2>
<p>Index the right stuff.</p>
<p>I won&#8217;t be explaining indexing here. Should not know of it enough, there are many guides and sites that explain it better and more  wisely than I could. Go Google it.</p>
<h2>CASCADES</h2>
<p>Don&#8217;t use any &#8220;ON UPDATE CASCADE, ON DELETE CASCADE&#8221; magic. They may be of convenience but there are some cases where you really need handle more complex logic when deleting something that simple cascades couldn&#8217;t handle.</p>
<p>And anyways database should be just a stupid entity that stores the data you tell it to. It should not contain any business logic. And CASCADES just make things a bit more confusing, and software is quite complex as is already.</p>
<p>You might think they&#8217;re cool and you know them when you implement them, but when a new developer comes to the project they have to study the foreign references with great concentration to get to know how the database behaves on certain events. Like I said, database should be dumb and act just like you want it to (= only do things you are told to).</p>
<h2>STORED PROCEDURES</h2>
<p>Don&#8217;t use stored procedures. Same as previous, database is not part of your business logic, except only in the sense of storing your data. Unnecessary complexity. Harder to debug on errors. Vendor lock-ins. Database should be a dumb entity that can be switched if needed.</p>
<p>Don&#8217;t store images, files or serialized data inside your DB. It&#8217;s not cool. Filesystem is for images and files. Serialized data? You are probably doing something wrong already.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xs.fi/blog/2010/10/how-not-to-design-a-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A bug in Drupal affecting installations transferred from Windows to Linux</title>
		<link>http://www.xs.fi/blog/2010/09/a-bug-in-drupal-affecting-installations-transferred-from-windows-to-linux/</link>
		<comments>http://www.xs.fi/blog/2010/09/a-bug-in-drupal-affecting-installations-transferred-from-windows-to-linux/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 21:55:22 +0000</pubDate>
		<dc:creator>pompo500</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.xs.fi/?p=82</guid>
		<description><![CDATA[Should you have a case like I had, where you worked on a Drupal installation with your Windows development environment, and then transferred your Drupal installation to client&#8217;s server running Linux, Drupal may spit out a message saying &#8220;C:\Windows\Temp&#8221; was created. How nice. I don&#8217;t exactly know how much of Drupal&#8217;s functionality that disrupts since [...]]]></description>
			<content:encoded><![CDATA[<p>Should you have a case like I had, where you worked on a Drupal installation with your Windows development environment, and then transferred your Drupal installation to client&#8217;s server running Linux, Drupal may spit out a message saying &#8220;C:\Windows\Temp&#8221; was created.</p>
<p>How nice.</p>
<p>I don&#8217;t exactly know how much of Drupal&#8217;s functionality that disrupts since I fixed it immediately, but at least it makes C:\Windows\Temp directory under your Drupal installation. Yes you heard it, it makes &#8220;/drupal/C:\Windows\Temp/&#8221; directory.</p>
<p>Should you want to repair it, run this SQL against your database:</p>
<blockquote><p>UPDATE variable SET value = &#8220;s:4:\&#8221;/tmp\&#8221;;&#8221; WHERE name = &#8220;file_directory_temp&#8221;</p></blockquote>
<p>Note: if you have used a table prefix with your Drupal installation, you should prefix the &#8220;variable&#8221; text accordingly.</p>
<p>Anyways. Hope this helps somebody.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xs.fi/blog/2010/09/a-bug-in-drupal-affecting-installations-transferred-from-windows-to-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Change file type icons easily in Windows 7 / Vista</title>
		<link>http://www.xs.fi/blog/2010/08/change-file-type-icons-easily-in-windows-7-vista/</link>
		<comments>http://www.xs.fi/blog/2010/08/change-file-type-icons-easily-in-windows-7-vista/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 09:00:02 +0000</pubDate>
		<dc:creator>pompo500</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.xs.fi/?p=73</guid>
		<description><![CDATA[In Windows 7 / Vista changing the file type is next to impossible; you have to fire up regedit.exe and do some inhuman things. Luckily, NirSoft has developed this wonderful and FREE program to handle just this case. Get FileTypesMan here. Short tutorial is here, if you don&#8217;t find it simple enough. It should be [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_76" class="wp-caption alignnone" style="width: 460px"><a rel="attachment wp-att-76" href="http://www.xs.fi/blog/2010/08/change-file-type-icons-easily-in-windows-7-vista/web-dev-icons/"><img class="size-full wp-image-76" title="web dev icons" src="http://xs.fi/wordpress/wp-content/uploads//2010/08/web-dev-icons.png" alt="" width="450" height="131" /></a><p class="wp-caption-text">Web development icons</p></div>
<p>In Windows 7 / Vista changing the file type is next to impossible; you have to fire up regedit.exe and do some inhuman things.</p>
<p>Luckily, NirSoft has developed this wonderful and FREE program to handle just this case. Get <a href="http://www.nirsoft.net/utils/file_types_manager.html">FileTypesMan here</a>.</p>
<p>Short tutorial is <a href="http://www.howtogeek.com/howto/12383/change-a-file-types-icon-in-windows-7/">here</a>, if you don&#8217;t find it simple enough. It should be though.</p>
<p>Remember, Windows only understands .ICO files; so should you need to convert .PNG or other formats to .ICO, I recommend <a href="http://www.towofu.net/soft/e-aicon.php">Icon Sushi</a> (free program) or <a href="http://converticon.com/">converticon.com</a> (free web service)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xs.fi/blog/2010/08/change-file-type-icons-easily-in-windows-7-vista/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook profile picture sync to GMail and phonebook</title>
		<link>http://www.xs.fi/blog/2010/08/facebook-profile-picture-sync-to-gmail-and-phonebook/</link>
		<comments>http://www.xs.fi/blog/2010/08/facebook-profile-picture-sync-to-gmail-and-phonebook/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 13:42:56 +0000</pubDate>
		<dc:creator>pompo500</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.xs.fi/?p=56</guid>
		<description><![CDATA[How would you like to see your friends&#8217; Facebook profile pictures in your phone&#8217;s phonebook? Or GMail&#8217;s contacts? For free! Note: this only works with contacts you already have on your GMail&#8217;s contact list. For importing Facebook&#8217;s contacts to your contact list first, see this link. Interested? Here&#8217;s a how-to. What you need: Facebook account, [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_60" class="wp-caption alignnone" style="width: 489px"><a href="http://www.xs.fi/wordpress/wp-content/uploads/2010/08/facebook-gmail-phone-sync.png"><img class="size-full wp-image-60" title="facebook &gt; gmail &gt; phone sync" src="http://www.xs.fi/wordpress/wp-content/uploads/2010/08/facebook-gmail-phone-sync.png" alt="" width="479" height="156" /></a><p class="wp-caption-text">facebook &gt; gmail &gt; phone sync</p></div>
<p>How would you like to see your friends&#8217; Facebook profile pictures in your phone&#8217;s phonebook? Or GMail&#8217;s contacts? For free! Note: this only works with contacts you already have on your GMail&#8217;s contact list. For importing Facebook&#8217;s contacts to your contact list first, <a href="http://www.google.fi/search?q=facebook+contacts+to+gmail">see this link</a>.</p>
<p>Interested? Here&#8217;s a how-to.</p>
<p><strong>What you need</strong>:</p>
<ul>
<li>Facebook account, obviously</li>
<li>GMail <strong>or</strong> Google Apps account (if you don&#8217;t know what Google Apps is, don&#8217;t worry; this doesn&#8217;t concern you)</li>
<li>You should have your GMail contacts by their full names. E.g. &#8220;John Smith&#8221; instead of just &#8220;John&#8221;. This application only works with full names. &#8220;John Smith IBM  inc.&#8221; works though, because it searches for the Facebook full name in GMail&#8217;s contact list.</li>
<li>Windows</li>
<li>.NET framework 3.5</li>
</ul>
<p>How do I know if I have the .NET 3.5 framework? If you have Windows Vista or 7  or you frequently update or XP, you should have it. If you want to check you can go to Windows&#8217; &#8220;Add or Remove Programs&#8221; to check if it&#8217;s mentioned there. If you need to install it, you can grab it easily from <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325fd-ae52-4e35-b531-508d977d32a6&amp;displaylang=en">here</a>.</p>
<p><strong>Instructions</strong></p>
<ol>
<li>Download <a href="http://www.xs.fi/wordpress/wp-content/uploads/2010/08/FacebookGmailPhoneSync.xslabs.zip">FacebookGmailPhoneSync.xslabs.zip</a>, unpack it somewhere, e.g. desktop or C:\Program Files\FacebookGmailPhoneSync</li>
<li>Run FacebookGmailPhoneSync.exe</li>
<li>Enter your GMail or Google Apps account details, click &#8220;Sync&#8221;</li>
<li>Log in to Facebook</li>
<li>It doesn&#8217;t have a progress bar, it just quietly runs a while</li>
<li>After it&#8217;s done, it pops up &#8220;Done.&#8221;</li>
<li>That&#8217;s it, it may take a few minutes for the pictures to update into your GMail, and if you&#8217;ve set up <a href="http://www.google.com/mobile/sync/">GMail &lt;-&gt; Cell phone sync</a>, to your phone!</li>
</ol>
<p>If there&#8217;s any error, please check the &#8220;What you need&#8221; section again, and please note that XS Labs <span style="text-decoration: underline;">does not offer any support</span> for this, since this software is not originally ours and it&#8217;s free anyways.</p>
<p><strong>Is it safe?</strong></p>
<p>Yes, XS Labs has reviewed the source code, and it does not save or send your private information anywhere.</p>
<p>Should you want to see it for yourself, see the &#8220;Source code&#8221; section.</p>
<p><strong>Source code</strong></p>
<p>If you don&#8217;t know what source code means, you don&#8217;t need to download this. You only need to follow the &#8220;Instructions&#8221; section. Source code is intended for developers who want to modify this program.</p>
<p>Download <a href="http://www.xs.fi/wordpress/wp-content/uploads/2010/08/FacebookGmailPhoneSync.xslabs-source.zip">FacebookGmailPhoneSync.xslabs-source.zip</a></p>
<p>What you need to compile FacebookGmailPhoneSync from source code:</p>
<ol>
<li>Microsoft Visual Studio, preferably 2008 or newer version. Search xs.fi for &#8220;dreamspark&#8221; and see if you&#8217;re eligible for the free version.</li>
<li>The FacebookGmailPhoneSync.xslabs-source.zip mentioned above, unpacked somewhere</li>
<li>Google Data API Setup (1.6.0.0) or newer from <a href="http://code.google.com/p/google-gdata/downloads/list">http://code.google.com/p/google-gdata/downloads/list</a></li>
</ol>
<p><strong>Credits</strong></p>
<p>GoogleContactSync was not developed by XS Labs. Original credits go to <a href="http://www.koushikdutta.com/2008/10/synchronizing-google-and-facebook.html">www.koushikdutta.com</a></p>
<p>However, XS Labs has modified the program a bit (the source code in it&#8217;s current form didn&#8217;t work and relied on having Microsoft Office installed).</p>
<p>Changes made in MainForm.cs:</p>
<ol>
<li>deleted &#8220;using Microsoft.Office.Interop&#8221; lines.</li>
<li>commented out &#8220;Microsoft.Office.Interop.Outlook.ApplicationClass app = new ApplicationClass();&#8221; and following three lines.</li>
<li>replaced &#8220;match.Google.PhotoEditUri&#8221; with &#8220;match.Google.PhotoUri&#8221;</li>
</ol>
<p>Changes made in Facebook API (Entity/User.cs):</p>
<ol>
<li>Added enum &#8220;Widowed&#8221; to User.RelationshipStatus, that was causing Exceptions with people who had widowed friends</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.xs.fi/blog/2010/08/facebook-profile-picture-sync-to-gmail-and-phonebook/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>10 Questions From Modern Web Designers: Answered</title>
		<link>http://www.xs.fi/blog/2010/08/10-questions-from-modern-web-designers-answered/</link>
		<comments>http://www.xs.fi/blog/2010/08/10-questions-from-modern-web-designers-answered/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 09:00:01 +0000</pubDate>
		<dc:creator>pompo500</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.xs.fi/?p=53</guid>
		<description><![CDATA[What New Technologies Should I Focus on Most? What Types of Things Should I Invest Money In? The Big One: Should I Go Freelance / Stick With A Firm? As a Web Designer, Do I Need to Code If I Don&#8217;t Want To? With All The Hype, Should I Learn How to Make WordPress Themes? [...]]]></description>
			<content:encoded><![CDATA[<ol>
<li>What New Technologies Should I Focus on Most?</li>
<li>What Types of Things Should I Invest Money In?</li>
<li>The Big One: Should I Go Freelance / Stick With A Firm?</li>
<li>As a Web Designer, Do I Need to Code If I Don&#8217;t Want To?</li>
<li>With All The Hype, Should I Learn How to Make WordPress Themes?</li>
<li>What is the Most Effective Way to Market Myself in This Industry?</li>
<li>What&#8217;s a Good Balance Between Spending Time on My Own Stuff vs. Client Projects?</li>
<li>What Are The Best Places to Find Web Design Resources?</li>
<li>For Web Design Projects, Should I Use a Fixed Price or Charge Hourly?</li>
<li>Are Bigger Clients Necessarily Better?</li>
</ol>
<p>Read the article <a href="http://www.onextrapixel.com/2010/08/18/10-questions-from-modern-web-designers-answered/">here</a> (via <a href="http://www.onextrapixel.com/">onextrapixel.com</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xs.fi/blog/2010/08/10-questions-from-modern-web-designers-answered/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coders&#8217; reference</title>
		<link>http://www.xs.fi/blog/2010/08/48/</link>
		<comments>http://www.xs.fi/blog/2010/08/48/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 13:13:58 +0000</pubDate>
		<dc:creator>pompo500</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.xs.fi/?p=48</guid>
		<description><![CDATA[XS Labs has compiled a reference for the benefit of coders&#8217; frequently needed information. Included: Data Types SQL Numeric Types HTTP Codes Common Ports PHP Reference ASCII &#38; Hex tables Bitwise Operations Web Notes CSS Reference Binary permutations http://xs.fi/static/codersreference/]]></description>
			<content:encoded><![CDATA[<p>XS Labs has compiled a reference for the benefit of coders&#8217; frequently needed information. Included:</p>
<ul>
<li>Data Types</li>
<li>SQL Numeric Types</li>
<li>HTTP Codes</li>
<li>Common Ports</li>
<li>PHP Reference</li>
<li>ASCII &amp; Hex tables</li>
<li>Bitwise Operations</li>
<li>Web Notes</li>
<li>CSS Reference</li>
<li>Binary permutations</li>
</ul>
<p><a href="http://xs.fi/static/codersreference/">http://xs.fi/static/codersreference/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xs.fi/blog/2010/08/48/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java&#8217;s visual appeal is zero</title>
		<link>http://www.xs.fi/blog/2010/08/javas-visual-appeal-is-zero/</link>
		<comments>http://www.xs.fi/blog/2010/08/javas-visual-appeal-is-zero/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 09:00:26 +0000</pubDate>
		<dc:creator>pompo500</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.xs.fi/?p=42</guid>
		<description><![CDATA[Today the visual appeal of software means more than ever. Just take a look at Windows&#8217; history: Windows 3.1, Windows 95, Windows 2000, XP, 7.. Every release of Windows has been more visually appealing than the previous version. Today it matters how your software looks. If your installer looks like this, you&#8217;re going to think [...]]]></description>
			<content:encoded><![CDATA[<p>Today the visual appeal of software means more than ever. Just take a look at Windows&#8217; history: Windows 3.1, Windows 95, Windows 2000, XP, 7..</p>
<p>Every release of Windows has been more visually appealing than the previous version. Today it matters how your software looks.</p>
<p><a href="http://www.xs.fi/wordpress/wp-content/uploads/2010/08/java-updater.png"><img class="alignnone size-medium wp-image-43" title="Java's installer" src="http://www.xs.fi/wordpress/wp-content/uploads/2010/08/java-updater-300x159.png" alt="" width="300" height="159" /></a></p>
<p>If your installer looks like this, you&#8217;re going to think less of the entire product right before even using it. It&#8217;s incredible how Java has had this butt-ugly grey default dialogs from since, 1990?</p>
<p>Get with the times, Oracle.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xs.fi/blog/2010/08/javas-visual-appeal-is-zero/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>This is why PHP rocks</title>
		<link>http://www.xs.fi/blog/2010/08/this-is-why-php-rocks/</link>
		<comments>http://www.xs.fi/blog/2010/08/this-is-why-php-rocks/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 09:00:06 +0000</pubDate>
		<dc:creator>pompo500</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.xs.fi/?p=37</guid>
		<description><![CDATA[PHP lets you concentrate on the most important part of software development: the problem itself. If you manage to put together hig-level APIs that do most of the work for you, then it&#8217;s easy as this. The previous function GetMatchDuration() would be implemented without this library somewhat like this: $SQL = &#8216;SELECT MINUTE(MatchEnds &#8211; MatchStarts) [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.xs.fi/wordpress/wp-content/uploads/2010/08/php.png"><img class="alignleft size-medium wp-image-38" title="PHP code" src="http://www.xs.fi/wordpress/wp-content/uploads/2010/08/php-300x196.png" alt="" width="300" height="196" /></a> PHP lets you concentrate on the most important part of software development: the problem itself. If you manage to put together hig-level APIs that do most of the work for you, then it&#8217;s easy as this.</p>
<p>The previous function GetMatchDuration() would be implemented without this library somewhat like this:</p>
<blockquote><p>$SQL = &#8216;SELECT MINUTE(MatchEnds &#8211; MatchStarts) FROM matches WHERE MatchID = &#8216;.mysql_escape_string($MatchID);</p>
<p>if(!($Query = mysql_query($SQL)))</p>
<p>return false;</p>
<p>if(!($Row = mysql_fetch_row($Query)))</p>
<p>return false;</p>
<p>return $Row[0];</p></blockquote>
<p>Quite a lot prettier in the picture, huh?</p>
<p>PHP effin&#8217; rocks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xs.fi/blog/2010/08/this-is-why-php-rocks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery UI&#8217;s datepicker adds extra empty space at bottom of the page</title>
		<link>http://www.xs.fi/blog/2010/08/jquery-uis-datepicker-adds-extra-empty-space-at-bottom-of-the-page/</link>
		<comments>http://www.xs.fi/blog/2010/08/jquery-uis-datepicker-adds-extra-empty-space-at-bottom-of-the-page/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 18:58:49 +0000</pubDate>
		<dc:creator>pompo500</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.xs.fi/?p=33</guid>
		<description><![CDATA[There seems to be a small bug in jQuery UI&#8217;s datepicker component that adds empty space at the bottom of the page, which looks pretty nasty with layout like the one in the picture. I don&#8217;t know if this concerns other themes, but at least the default one (&#8220;UI lightness&#8221;) The added space is marked [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.xs.fi/wordpress/wp-content/uploads/2010/08/jquery-ui-datepicker-white-margin-bug.png"><img class="alignleft size-medium wp-image-34" title="jquery-ui-datepicker-white-margin-bug" src="http://www.xs.fi/wordpress/wp-content/uploads/2010/08/jquery-ui-datepicker-white-margin-bug-235x300.png" alt="" width="235" height="300" /></a> There seems to be a small bug in jQuery UI&#8217;s datepicker component that adds empty space at the bottom of the page, which looks pretty nasty with layout like the one in the picture. I don&#8217;t know if this concerns other themes, but at least the default one (&#8220;UI lightness&#8221;)</p>
<p>The added space is marked with a red circle in the picture.</p>
<p>Luckily there&#8217;s an easy fix to it, just add the following code to jQuery UI&#8217;s theme CSS file, at the bottom:</p>
<blockquote><p>#ui-datepicker-div { display:none }</p></blockquote>
<p>I&#8217;ve submitted a bug report to jQuery UI, hope it&#8217;ll be fixed in future releases. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xs.fi/blog/2010/08/jquery-uis-datepicker-adds-extra-empty-space-at-bottom-of-the-page/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Tip: HTML template for starting new pages quickly</title>
		<link>http://www.xs.fi/blog/2010/08/tip-html-template-for-starting-new-pages-quickly/</link>
		<comments>http://www.xs.fi/blog/2010/08/tip-html-template-for-starting-new-pages-quickly/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 09:00:51 +0000</pubDate>
		<dc:creator>pompo500</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.xs.fi/?p=24</guid>
		<description><![CDATA[This tip is particularly useful for us webheads. Ever been frustrated when typing the same &#60;html&#62;&#60;head&#62;&#60;title&#62;..&#60;/title&#62;&#60;link&#62;&#8230;&#60;/link&#62;&#60;/head&#62;&#60;body&#62;&#60;div&#62;.. stuff over and over again? Wouldn&#8217;t it be wonderful by just right-clicking on the desktop or inside a folder and just picking &#8220;New -&#62; Firefox Document&#8221;, then Windows creating a fresh template for you with the most frequently used [...]]]></description>
			<content:encoded><![CDATA[<p>This tip is particularly useful for us webheads.</p>
<p>Ever been frustrated when typing the same &lt;html&gt;&lt;head&gt;&lt;title&gt;..&lt;/title&gt;&lt;link&gt;&#8230;&lt;/link&gt;&lt;/head&gt;&lt;body&gt;&lt;div&gt;.. stuff over and over again?</p>
<p>Wouldn&#8217;t it be wonderful by just right-clicking on the desktop or inside a folder and just picking &#8220;New -&gt; Firefox Document&#8221;, then Windows creating a fresh template for you with the most frequently used tags already typed in?</p>
<p><span id="more-24"></span></p>
<p>Here&#8217;s my template, for example: (Download as file: <a href="/wordpress/wp-content/uploads/2010/07/html.txt">HTML Template</a>)</p>
<blockquote><p>&lt;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.0 Transitional//EN&#8221;<br />
&#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#8221;&gt;</p>
<p>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Title&lt;/title&gt;<br />
&lt;link type=&#8221;text/css&#8221; rel=&#8221;stylesheet&#8221; href=&#8221;style.css&#8221; /&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
$().ready(function() {<br />
});<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;</p>
<p>&lt;div&gt;<br />
&lt;h1&gt;Heading&lt;/h1&gt;</p>
<p>&lt;p&gt;Paragraph&lt;/p&gt;<br />
&lt;/div&gt;</p>
<p>&lt;/body&gt;<br />
&lt;/html&gt;</p></blockquote>
<p>This can be easily  achieved without any third-party software by creating a template file in Windows.</p>
<p>Instructions for doing this: (should work with Windows Vista / 7 at least, most probably XP too)</p>
<ol>
<li>Right click on &#8220;Start menu &gt; All programs &gt; Accessories &gt; Notepad&#8221;</li>
<li>Click &#8220;Run as administrator&#8221; (only administrators can write to the folder in step 4)</li>
<li>Copy-paste the code from the file presented above (download the file, the Blog software manhandles the line feeds and tabs)</li>
<li>Save file as C:\Windows\ShellNew\html.html</li>
<li>Open registry editor from Start menu &gt; &#8220;regedit.exe&#8221; (type into the free text box and press enter)</li>
<li>Go to HKEY_CLASSES_ROOT\.html\ShellNew</li>
<li>Right click on New -&gt; String Value</li>
<li>Set values accordingly: Name = FileName, Data = html.html</li>
<li>That should be it. If it doesn&#8217;t work right away, perhaps you need to logout and log in again. If it still doesn&#8217;t work, read the instructions again and make sure you followed them precisely.</li>
</ol>
<p>Happy and productive coding from XS Labs!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xs.fi/blog/2010/08/tip-html-template-for-starting-new-pages-quickly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

