<?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>Francois Faubert &#187; The Music Tank</title>
	<atom:link href="http://www.francoisfaubert.com/category/the-music-tank/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.francoisfaubert.com</link>
	<description></description>
	<lastBuildDate>Tue, 08 Sep 2009 19:00:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>I&#8217;m a dot com</title>
		<link>http://www.francoisfaubert.com/2007/12/05/im-a-dot-com/</link>
		<comments>http://www.francoisfaubert.com/2007/12/05/im-a-dot-com/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 18:41:56 +0000</pubDate>
		<dc:creator>francoisfaubert</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[The Music Tank]]></category>
		<category><![CDATA[Domain]]></category>
		<category><![CDATA[Francois Faubert]]></category>
		<category><![CDATA[Go Daddy]]></category>

		<guid isPermaLink="false">http://www.francoisfaubert.com/2007/12/05/im-a-dot-com/</guid>
		<description><![CDATA[I nearly lost the rights to The Music Tank&#8217;s domain name. I tried to transfer the dot com from Domain Registry of Canada to Go Daddy but I got caught with very bad timing and my subscription had ended before the transfer was completed.
Fortunately, DROC&#8217;s customer server service allowed me to renew the dot com [...]]]></description>
			<content:encoded><![CDATA[<p>I nearly lost the rights to <a href="http://www.themusictank.com">The Music Tank</a>&#8217;s domain name. I tried to transfer the dot com from <a href="http://www.droc.ca/">Domain Registry of Canada</a> to <a href="http://www.godaddy.com">Go Daddy</a> but I got caught with very bad timing and my subscription had ended before the transfer was completed.</p>
<p>Fortunately, DROC&#8217;s customer server service allowed me to renew the dot com and gave me a price discount for the trouble. Ironically, the lowered yearly fee for the domain is still more expensive than Go Daddy&#8217;s (without including the Diggnation code). However, I&#8217;m just happy I didn&#8217;t lose The Music Tank&#8217;s branding which I have already worked 9 years on (no matter how successful it has been).</p>
<p>While registering on Go Daddy,  I also purchased <a href="http://www.francoisfaubert.com">Francois Faubert.com</a> as my portfolio&#8217;s domain name. It&#8217;s so cheap that it would be crazy for someone working full time in the web design business not to do it.</p>
<p>I guess it means I&#8217;m old enough now to assume my real name and not leave my online presence exclusively behind my accustomed &#8220;Fake&#8221; nickname.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francoisfaubert.com/2007/12/05/im-a-dot-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpBB3 RC7 update raised error</title>
		<link>http://www.francoisfaubert.com/2007/11/15/phpbb3-rc7-update-raised-error/</link>
		<comments>http://www.francoisfaubert.com/2007/11/15/phpbb3-rc7-update-raised-error/#comments</comments>
		<pubDate>Thu, 15 Nov 2007 17:45:24 +0000</pubDate>
		<dc:creator>francoisfaubert</dc:creator>
				<category><![CDATA[The Music Tank]]></category>
		<category><![CDATA[phpBB]]></category>

		<guid isPermaLink="false">http://fake.themusictank.com/2007/11/15/phpbb3-rc7-update-raised-error/</guid>
		<description><![CDATA[Thinking all would be easy, I decided to move The Music Tank&#8217;s forum data into its own database. Doing so, I noticed there was a new release candidate for phpBB3 and installed it at the same time.
While most of it is my fault because I overrode the templates and migrated the database manually, the update [...]]]></description>
			<content:encoded><![CDATA[<p>Thinking all would be easy, I decided to move The Music Tank&#8217;s forum data into its own database. Doing so, I noticed there was a new release candidate for phpBB3 and installed it at the same time.</p>
<p>While most of it is my fault because I overrode the templates and migrated the database manually, the update caused the following error to occur each time you submit a post :<br />
<code>The submitted form was invalid. Try submitting again.</code></p>
<p>On phpBB&#8217;s official support forums, there were mentions of about a gazillion manually performed changes to the board&#8217;s templates. I didn&#8217;t do any of them because I knew better and the side effects weren&#8217;t exactly the same as theirs.</p>
<p>Finally, all I had to do was to reset the &#8220;user_form_salt&#8221; from the &#8220;users&#8221; table to a valid hash value (ex: the one the Anonymous user has). It may not be the most secure thing to do though, for obvious reasons.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francoisfaubert.com/2007/11/15/phpbb3-rc7-update-raised-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saving PHP Sessions to MySQL</title>
		<link>http://www.francoisfaubert.com/2007/06/16/saving-php-sessions-to-mysql/</link>
		<comments>http://www.francoisfaubert.com/2007/06/16/saving-php-sessions-to-mysql/#comments</comments>
		<pubDate>Sat, 16 Jun 2007 20:23:24 +0000</pubDate>
		<dc:creator>francoisfaubert</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[The Music Tank]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Sessions]]></category>

		<guid isPermaLink="false">http://fake.themusictank.com/2007/06/16/saving-php-sessions-to-mysql/</guid>
		<description><![CDATA[In most cases, websites don&#8217;t necessarily need to be managed by sessions that end as soon as the users closes their browser. Most websites now offer to keep their session alive for whatever amount of time. This is really less of a hassle for your users and adds to the positive user experience.
Learning what not [...]]]></description>
			<content:encoded><![CDATA[<p>In most cases, websites don&#8217;t necessarily need to be managed by sessions that end as soon as the users closes their browser. Most websites now offer to keep their session alive for whatever amount of time. This is really less of a hassle for your users and adds to the positive user experience.</p>
<p><strong>Learning what not to do </strong></p>
<p>On TMT, I used to handle sessions manually by storing the encrypted value of the user&#8217;s id in a cookie. That&#8217;s is highly unrecommended for security reasons as its fairly easy to hack your way around using an id that isn&#8217;t yours (and which might be the administrator&#8217;s!). </p>
<p>I experimented by storing so-called &#8216;unique&#8217; values I generated and stored in MySQL to have better validation when decrypting the cookie, but since you can spoof most $_SERVER values (which provides the user&#8217;s IP), it really wasn&#8217;t good enough.</p>
<p><strong>Hardcore PHP-ing</strong></p>
<p>You can override the whole session object using PHP&#8217;s <code><a href="http://www.php.net/manual/en/function.session-set-save-handler.php">session_set_save_handler()</a></code> function. Basically, you re-program what the object does when it reads and writes session values or when it destroys itself.</p>
<p>Instead of writing the session values to a file on the server like the default behavior is set to do, you can redirect the data handling to an insert or update query in your favorite database.</p>
<p><strong>Advantages</strong></p>
<p>The most obvious advantage is that you can keep the sessions alive as long as your server is live, more or less. You can also change the condition of how session expiration are done. For instance, through a simple MySQL query, TMT sessions can be kept for one week before being destroyed if no activity is logged.</p>
<p>I&#8217;ve read it&#8217;s safer to store session values that way too, as a possible hacker would need the database&#8217;s password to access it. While I&#8217;m not sure how harder this method actually makes it for hackers in reality, I really feel safer to use PHP&#8217;s native object rather than a shaky class I would have written.</p>
<p>Fully using PHP&#8217;s native session object allows more flexibility as you are very close to Apache. You can therefore validate with confidence (not blind confidence though) that the user is indeed human and not a spam bot, save the user&#8217;s preferred language or do whatever else your website offers as possible features without fear. In my previous horrible system, it wasn&#8217;t even a possibility.</p>
<p><strong>Examples</strong></p>
<p>Apart from <em>stalker at ruun dot de</em>&#8217;s very good comment on PHP.net&#8217;s documentation page, I found <a href="http://www.tonymarston.net/php-mysql/session-handler.html">Tony Marston</a>&#8217;s version of the object. The latter is harder to grasp as he uses his own object-oriented system to get database data &#8212; that&#8217;s good practice, but a bit harder to learn from. You can also see TMT&#8217;s class in our <a href="http://themusictank.svn.sourceforge.net/viewvc/themusictank/trunk/brain/php_Session.php?revision=22&amp;view=markup">SVN repository</a>.</p>
<p>The important thing is just to understand what you&#8217;re trying to do rather than copy pasting each of our codes. TMT&#8217;s only started working once I grasped the concept.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francoisfaubert.com/2007/06/16/saving-php-sessions-to-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trying out phpBB 3</title>
		<link>http://www.francoisfaubert.com/2007/03/07/trying-out-phpbb-3/</link>
		<comments>http://www.francoisfaubert.com/2007/03/07/trying-out-phpbb-3/#comments</comments>
		<pubDate>Thu, 08 Mar 2007 04:08:33 +0000</pubDate>
		<dc:creator>francoisfaubert</dc:creator>
				<category><![CDATA[The Music Tank]]></category>
		<category><![CDATA[Beta]]></category>
		<category><![CDATA[Forum]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[phpBB]]></category>

		<guid isPermaLink="false">http://fake.themusictank.com/2007/03/07/trying-out-phpbb-3/</guid>
		<description><![CDATA[As I took the time to explain in a post in The Music Tank&#8217;s new forum, I&#8217;ve been using the second version of phpBB for what seemed like forever on the website. Until the recent redesign, I grew increasingly unsatisfied with the board on two subjects: the spam filtering and the general administration interface.
There weren&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>As I took the time to explain in <a href="http://www.themusictank.com/forum/viewtopic.php?f=3&amp;p=4">a post</a> in The Music Tank&#8217;s new forum, I&#8217;ve been using the second version of phpBB for what seemed like forever on the website. Until the recent redesign, I grew increasingly unsatisfied with the board on two subjects: the spam filtering and the general administration interface.</p>
<p>There weren&#8217;t any validation to make sure the user was a valid poster or registrant nor was it that easy to perform relatively simple tasks in the administration area (to edit a user&#8217;s access rights for instance).</p>
<p>That&#8217;s why I didn&#8217;t reinstall phpBB version 2 on The Music Tank. However, I&#8217;ve been reading <a href="http://area51.phpbb.com/docs/features.html">cool stuff</a> on the upcoming third version as it promised to have all of what I thought was missing from the second version. Instead of moving to another board script I finally gave in and installed the fifth beta release of the third version. Besides, I&#8217;m willing to tolerate some faux-pas to support open-source software.</p>
<p>The installation experience, as a user that doesn&#8217;t know that much on hardware-ish issues, was incredible. It may have taken a lot of time, but things went very smoothly and required limited effort on my part. There were informatial text blurbs on every step I needed to perform. No guessing around. </p>
<p>Visually, the default design has been given a more up-to-date look. Most important for me as an admin, a massive overhaul of everything related to the administration has been done. It makes management incredibly more structured, though there are about ten sections with seven subsections each. That many different menus to go through which can grow a bit confusing.</p>
<p>Only time will tell how efficient the new version of the board is on The Music Tank. Keeping in mind the current release is not even a Release Candidate, one should expect that features are bound to blow up from times to times, but nothing did come up in the short period I&#8217;ve been using it. For the moment, I can only say good things about the third release of phpBB.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francoisfaubert.com/2007/03/07/trying-out-phpbb-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Page encoding can stop the PHP parser</title>
		<link>http://www.francoisfaubert.com/2006/11/23/page-encoding-can-stop-the-php-parser/</link>
		<comments>http://www.francoisfaubert.com/2006/11/23/page-encoding-can-stop-the-php-parser/#comments</comments>
		<pubDate>Thu, 23 Nov 2006 15:54:23 +0000</pubDate>
		<dc:creator>francoisfaubert</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[The Music Tank]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Server Error]]></category>
		<category><![CDATA[Time Loss]]></category>

		<guid isPermaLink="false">http://fake.themusictank.com/2006/11/23/page-encoding-can-stop-the-php-parser/</guid>
		<description><![CDATA[The main PHP Class file of The Music Tank stopped loading altogether yesterday. After scanning lines after lines of code trying to guess what what generating an error I still hadn&#8217;t found the problem until late last night. 
What made it nebulous was that instead of having a message from PHP describing a known error [...]]]></description>
			<content:encoded><![CDATA[<p>The main PHP Class file of The Music Tank stopped loading altogether yesterday. After scanning lines after lines of code trying to guess what what generating an error I still hadn&#8217;t found the problem until late last night. </p>
<p>What made it nebulous was that instead of having a message from PHP describing a known error like &#8221; &#8216;)&#8217; expected on line 64 &#8220;, I was triggering an Internal Server Error on Apache when loading the website and the parser was outputting unicode garbage when I tried to load the class directly from the browser (instead of nothing at all because I don&#8217;t print data right from the class).</p>
<p>I have to admit I could have been a bit keener on the issue just by looking a the garbage the file was making. It turns out that my code editor, TextWrangler, had changed the encoding type of the file from UTF-8 to the Macintosh charset when I inserted the © character straight in the document without using it&#8217;s HTML counterpart <code>&amp;copy</code>.</p>
<p>The change of charset and/or the use of special characters in the source code stopped the PHP parser. I can&#8217;t explain why as I don&#8217;t have much access to the configuration files to my server&#8217;s PHP version nor do I know how PHP reads the .php files, but I think it was due to the use of multiple charsets in the same rendering call. For instance the main class was using the Mac charset while the subclasses it was importing used UTF-8 encoding.</p>
<p>The frustrating part is really how this whole deal was created out of laziness. Apple offers a wide selection of special characters by doing a [alt + most keys] combination. I thought I&#8217;d save some time by using their copyright sign instead of sticking with &amp;copy.</p>
<p>At least, this episode forced me into cleaning the quote quite a lot by splitting my pages into modules which reflect the content&#8217;s architecture. The Tank should show a light performance boost now. Very light though, hehehe.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francoisfaubert.com/2006/11/23/page-encoding-can-stop-the-php-parser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do you remember my table structure?</title>
		<link>http://www.francoisfaubert.com/2006/11/16/do-you-remember-my-table-structure/</link>
		<comments>http://www.francoisfaubert.com/2006/11/16/do-you-remember-my-table-structure/#comments</comments>
		<pubDate>Thu, 16 Nov 2006 15:13:49 +0000</pubDate>
		<dc:creator>francoisfaubert</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[The Music Tank]]></category>
		<category><![CDATA[Backups]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://fake.themusictank.com/2006/11/16/do-you-remember-my-table-structure/</guid>
		<description><![CDATA[I think the worst part of the whole host transfer deal was the relatively old age of my last MySQL backup. I always keep updated versions of my PHP files close by, may it only be because I am always working on something new, so at least all the programming logic has migrated successfully.
However, all [...]]]></description>
			<content:encoded><![CDATA[<p>I think the worst part of the whole host transfer deal was the relatively old age of my last MySQL backup. I always keep updated versions of my PHP files close by, may it only be because I am always working on something new, so at least all the programming logic has migrated successfully.</p>
<p>However, all the tables and database structure I had built stayed with Abnormis. Hopefully my old server will come back online and I will be able to get some of the file content back, but I am really just interested in how I had built my tables &#8212; which I don&#8217;t think I&#8217;ll be able to access. I don&#8217;t even remember most lengths and data types of the columns. Even my PHP source code can&#8217;t give me much hints at the moment.</p>
<p>At least this morning I was able to reconnect the user table. This means future posters and tankers can already join the Tank&#8230; and do nothing afterwards. Hopefully I&#8217;ll have the news working by early afternoon.</p>
<p>The moral of the story is that a backup, when you are developing,  is always too old.</p>
<p>And damn do I need to fix the transparent issues with IE 6 as soon as possible!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francoisfaubert.com/2006/11/16/do-you-remember-my-table-structure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What a rushed (and botched) transfer</title>
		<link>http://www.francoisfaubert.com/2006/11/15/what-a-rushed-and-botched-transfer/</link>
		<comments>http://www.francoisfaubert.com/2006/11/15/what-a-rushed-and-botched-transfer/#comments</comments>
		<pubDate>Wed, 15 Nov 2006 21:15:14 +0000</pubDate>
		<dc:creator>francoisfaubert</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[The Music Tank]]></category>
		<category><![CDATA[Downtime]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[MediaTemple]]></category>

		<guid isPermaLink="false">http://fake.themusictank.com/2006/11/15/what-a-rushed-read-botched-transfer/</guid>
		<description><![CDATA[I have just switched my hosting plan from Abnormis&#8217;s to MediaTemple&#8217;s. Four days of downtime (therefore breaking the 99-plus % guaranteed uptime period) was too long for my hard-earned dollars.
I intend to describe how great Media Temple&#8217;s service is, how it&#8217;s the best shared-hosting package I have experienced yet, and how happy I am with [...]]]></description>
			<content:encoded><![CDATA[<p>I have just switched my hosting plan from <a href="http://www.abnormis.net">Abnormis</a>&#8217;s to <a title="MediaTemple hosting plan" href="http://www.mediatemple.net">MediaTemple</a>&#8217;s. Four days of downtime (therefore breaking the 99-plus % guaranteed uptime period) was too long for my hard-earned dollars.</p>
<p>I intend to describe how great Media Temple&#8217;s service is, how it&#8217;s the best shared-hosting package I have experienced yet, and how happy I am with the transfer in another post. Right now, I mainly want to warn you all that lost content will be popping back as I regain access to more recent backups from the old server.</p>
<p>These delayed recoveries will have an impact on both this blog and The Music Tank.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.francoisfaubert.com/2006/11/15/what-a-rushed-and-botched-transfer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
