<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Threespheres Media</title>
	<atom:link href="http://blog.threespheres-media.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.threespheres-media.com</link>
	<description>all things web, sans time travel</description>
	<pubDate>Thu, 19 Aug 2010 17:01:12 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Tabbing through form elements in IE8</title>
		<link>http://blog.threespheres-media.com/?p=342</link>
		<comments>http://blog.threespheres-media.com/?p=342#comments</comments>
		<pubDate>Tue, 23 Feb 2010 17:55:22 +0000</pubDate>
		<dc:creator>mattw</dc:creator>
		
		<category><![CDATA[411]]></category>

		<guid isPermaLink="false">http://blog.threespheres-media.com/?p=342</guid>
		<description><![CDATA[Microsoft has a proud tradition of fixing IE bugs in its successor version. Unfortunately, there is an equally rich tradition of introducing irrational, basic bugs as well. There is a bad, bad bug in IE8 that I spent many an hour researching to no avail, so I thought I'd post the solution here.
Under certain circumstances, [...]]]></description>
			<content:encoded><![CDATA[<p>Microsoft has a proud tradition of fixing IE bugs in its successor version. Unfortunately, there is an equally rich tradition of introducing irrational, basic bugs as well. There is a bad, bad bug in IE8 that I spent many an hour researching to no avail, so I thought I'd post the solution here.</p>
<p>Under certain circumstances, you will not be able to "tab through a form" -- ie. use the tab key to go from one form element to the next, standard-issue behavior in the rational (non-IE) browsers. I had a standard form that when tabbed through, would start selecting images on the page, etc. in a seemingly random way.</p>
<p>The solution is to use the HTML tabindex property, to ensure that IE tabs in the correct order.</p>
<div class="code">
<pre>&nbsp;
&lt;form&gt;
&lt;input type=&quot;text&quot; name=&quot;meeting[name]&quot; tabindex=&quot;1&quot;&gt;
&lt;input type=&quot;text&quot; name=&quot;meeting[attendees]&quot; tabindex=&quot;2&quot;&gt;
&lt;input type=&quot;text&quot; name=&quot;meeting[location]&quot; tabindex=&quot;3&quot;&gt;
&lt;input type=&quot;submit&quot; name=&quot;submit&quot; tabindex=&quot;4&quot;&gt;
&lt;/form&gt;
&nbsp;</pre>
</div>
<p>As a side note, I fail to understand how so much product goes out the door at Microsoft without any QA to speak of.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threespheres-media.com/?feed=rss2&amp;p=342</wfw:commentRss>
		</item>
		<item>
		<title>IE image resize</title>
		<link>http://blog.threespheres-media.com/?p=339</link>
		<comments>http://blog.threespheres-media.com/?p=339#comments</comments>
		<pubDate>Thu, 31 Dec 2009 21:37:06 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
		
		<category><![CDATA[411]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.threespheres-media.com/?p=339</guid>
		<description><![CDATA[Specifying width or height for an image should scale the image down appropriately. So if you'e image is 500px wide but you want to scale to 100px wide you just put &#60;img width="100px". However, IE will make this image look like junk. But there is an answer. Include this in your image tag:
style="-ms-interpolation-mode: bicubic;"
IE now [...]]]></description>
			<content:encoded><![CDATA[<p>Specifying width or height for an image should scale the image down appropriately. So if you'e image is 500px wide but you want to scale to 100px wide you just put &lt;img width="100px". However, IE will make this image look like junk. But there is an answer. Include this in your image tag:</p>
<p>style="-ms-interpolation-mode: bicubic;"</p>
<p>IE now looks sharp and not blurry and pixelated!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threespheres-media.com/?feed=rss2&amp;p=339</wfw:commentRss>
		</item>
		<item>
		<title>Scienceblogs Jobs Goes Live</title>
		<link>http://blog.threespheres-media.com/?p=320</link>
		<comments>http://blog.threespheres-media.com/?p=320#comments</comments>
		<pubDate>Fri, 14 Aug 2009 00:21:25 +0000</pubDate>
		<dc:creator>mattw</dc:creator>
		
		<category><![CDATA[php]]></category>

		<category><![CDATA[project gallery]]></category>

		<guid isPermaLink="false">http://blog.threespheres-media.com/?p=320</guid>
		<description><![CDATA[A very nice job site we built for Seed Media Group.
]]></description>
			<content:encoded><![CDATA[<p>A very nice job site we built for <a href="http://www.seedmediagroup.com">Seed Media Group.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threespheres-media.com/?feed=rss2&amp;p=320</wfw:commentRss>
		</item>
		<item>
		<title>Drupal and Wordpress</title>
		<link>http://blog.threespheres-media.com/?p=302</link>
		<comments>http://blog.threespheres-media.com/?p=302#comments</comments>
		<pubDate>Fri, 14 Aug 2009 00:11:52 +0000</pubDate>
		<dc:creator>mattw</dc:creator>
		
		<category><![CDATA[philosophy]]></category>

		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.threespheres-media.com/?p=302</guid>
		<description><![CDATA[Over the past few months we've worked on a range of projects, mostly all custom work, which is really where our collective heart lies, but also with two of the bigger "off-the-shelf" products-- Wordpress and Drupal. I wanted to tell the tale of my recent experiences, and offer some unsolicited advice for folks who are [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few months we've worked on a range of projects, mostly all custom work, which is really where our collective heart lies, but also with two of the bigger "off-the-shelf" products-- Wordpress and Drupal. I wanted to tell the tale of my recent experiences, and offer some unsolicited advice for folks who are building things in the web world.</p>
<p><strong>Case 1: Wordpress</strong></p>
<p><em>or, a hammer that hammers</em></p>
<p>Somebody said to me today "Wordpress is cool, but it's only good for a blog." That "complaint" is exactly what I like about it: it is  designed for a <em>specific</em> task, and it performs that task very well, from an end-user perspective. It's very easy to set up and use, and there are plenty of nice themes, and useful plugins out there. It's not so easy to to migrate to a new server but that's <a href="http://blog.threespheres-media.com/?p=27">another story</a>.</p>
<p>The codebase is pretty garbage, but you can deal with it. There seems to be very little thought to the high-level underpinnings. If you open the wp directories, the structure have almost no meaning. That's not to say that it's disorganized-- it's just organized in a very "PHP" way. My main gripe is that it stores absolute URLs in the database all over the place. Why not store a base URL in a config file, or if you MUST have it in the database, store it in one location and store relative URLs everywhere else? Anyway, it's not pretty code, but it provides a great blogging platform, and because of the task-specific nature of this software, you can work around the awkward architecture. We've installed Wordpress for both clients and friends. (Check out <a href="http://www.johnbyronkuhner.com">our friend John Kuhner's great blog.</a>) This blog is also proudly powered by Wordpress!</p>
<p><strong>Case 2: Drupal</strong></p>
<p><em>or, a thingamabob that thingamabobs</em></p>
<p>We recently worked on <a href="http://sikids.com">the Sports Illustrated Kids site</a> writing a couple of custom Drupal modules, mostly relating to generating custom XML for a gaming engine and the resultant scoring-- "spoints" as they called. Extremely cute word. The folks at <a href="http://workinman.com">Workinman</a> and <a href="http://www.milkyelephant.com/">Milky Elephant</a> did a great job on the Flash end of things.</p>
<p>This was my first real experience with Drupal other than knocking around on my local machine. In some sense, I was impressed with the sheer amount of stuff that is out there in terms of plugins. My work was supported by several of the Drupal plugins, most of which worked well out of the box. I've heard other developers complain about the complexity of the admin user interface, but it didn't bother me too much.</p>
<p>Like Wordpress, Drupal has an almost unlimited amount of plugins and themes, and the installation process is relatively straightforward. Also like Wordpress, the Drupal codebase is poorly organized, and the database is even worse. The problem is compounded because Drupal is not oriented to a specific task: you actually <strong><em>do</em></strong> want to manipulate the code for whatever your task may be. However, Drupal doesn't follow any accepted design pattern-- even the ubiquitous "sloppy PHP" pattern-- you are essentially learning a new language. A language that is far worse than established paradigms.</p>
<p>I do understand how this happened: it was coded for some site a guy had to build 10 years ago, and people just kept adding to a fundamentally shaky idea. In 1999, PHP wasn't an object oriented language (really), so this made sense. It has not made sense since the release of PHP 5. Which was a really long time ago.</p>
<p>However, I bet that somebody with serious Drupal skills can get a lot accomplished in a fairly decent way. And there's a lot of code in production at Microsoft and Chase Bank and wherever else that is like that: it works to the end user, doesn't break much and performs okay. But it is not fundamentally sound. So how can one complain.</p>
<p><strong>Soapbox Please...</strong></p>
<p>In my experiences with these two platforms I have come to a solid conclusion about off-the-shelf webware: if it is oriented to a specific task and does it well (<a href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a>, <a href="http://www.mantisbt.org/">Mantis</a>) it is worth using. I know people write their own wiki software, or their own bug tracker, but why bother? Smart people have spent a lot of time making something designed for that <em>exact</em> task. It would be like building a car that was functionally equivalent to a Toyota -- why not just buy a Toyota?</p>
<p>That's fairly self-evident, but people extend that reasoning to things that are not designed for a particular task. They believe they need a "CMS". Nobody really needs a CMS. There is always business logic associated with an idea. In many cases, this business logic is more complex than it seems to be. To me, software like Drupal and Joomla have no place. If it is a truly simple "CMS"-- a site where clients can edit the HTML with a good interface, why not just use Wordpress? If it is more complex, you should hire a professional to code it properly. Ultimately, a good coder who uses Zend or Struts is going to be able to work just as quickly as someone familiar with Drupal. Drupal's fundamental logic is not sound, and you need to find a developer in the future who is a "Drupal programmer". This type of specialization is very dangerous for a business. Good object-oriented code-- even in a complex application-- can be readily understood by any developer worth his salt.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threespheres-media.com/?feed=rss2&amp;p=302</wfw:commentRss>
		</item>
		<item>
		<title>SYLK the shocker</title>
		<link>http://blog.threespheres-media.com/?p=291</link>
		<comments>http://blog.threespheres-media.com/?p=291#comments</comments>
		<pubDate>Thu, 16 Jul 2009 01:56:45 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
		
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.threespheres-media.com/?p=291</guid>
		<description><![CDATA[Very weird error - I created an excel file from PHP and returned it as excel content type, etc. as I have done a thousand times. Only this time I got a strange message from Excel saying that my file was not a valid SYLK file. Huh? Anyway, the problem was that the first cell [...]]]></description>
			<content:encoded><![CDATA[<p>Very weird error - I created an excel file from PHP and returned it as excel content type, etc. as I have done a thousand times. Only this time I got a strange message from Excel saying that my file was not a valid SYLK file. Huh? Anyway, the problem was that the first cell was labeled "ID". This seems to have fooled Excel into thinking it was a SYLK file. So, my solution was simply to relabel the cell into something like Identifier (or whatever).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threespheres-media.com/?feed=rss2&amp;p=291</wfw:commentRss>
		</item>
		<item>
		<title>SoapClient class not found solution</title>
		<link>http://blog.threespheres-media.com/?p=287</link>
		<comments>http://blog.threespheres-media.com/?p=287#comments</comments>
		<pubDate>Sat, 21 Mar 2009 00:00:16 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
		
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.threespheres-media.com/?p=287</guid>
		<description><![CDATA[Recently I used the PHP SoapClient class successfully on Windows simply by uncommenting the extension=php_soap.dll line in php.ini. Unfortunately when I ran the same script on CentOS Linux (MediaTemple) I got a SoapClient class not found error.  When I tried yum php-soap, it seemed I did not have the right php distro for soap. So [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I used the PHP SoapClient class successfully on Windows simply by uncommenting the extension=php_soap.dll line in php.ini. Unfortunately when I ran the same script on CentOS Linux (MediaTemple) I got a SoapClient class not found error.  When I tried yum php-soap, it seemed I did not have the right php distro for soap. So that meant that I had to somehow get the soap extension loaded into PHP - this article was extemely helpful and explains exactly how to do it:</p>
<p><a href="<a href="http://devzone.pratthost.com/2008/11/24/php-enable-soap-with-php5-on-media-temples-dv-35/">http://devzone.pratthost.com/2008/11/24/php-enable-soap-with-php5-on-media-temples-dv-35</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threespheres-media.com/?feed=rss2&amp;p=287</wfw:commentRss>
		</item>
		<item>
		<title>goHOV.com</title>
		<link>http://blog.threespheres-media.com/?p=279</link>
		<comments>http://blog.threespheres-media.com/?p=279#comments</comments>
		<pubDate>Tue, 04 Nov 2008 03:46:45 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
		
		<category><![CDATA[project gallery]]></category>

		<guid isPermaLink="false">http://blog.threespheres-media.com/?p=279</guid>
		<description><![CDATA[goHOV.com is a carpooling site aimed at college students looking for a ride to class, home for spring break or maybe to a local concert. Students can search for rides and other profiles, send messages to each other, create a ride to an event and receive automated notifications.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://gohov.com">goHOV.com</a> is a carpooling site aimed at college students looking for a ride to class, home for spring break or maybe to a local concert. Students can search for rides and other profiles, send messages to each other, create a ride to an event and receive automated notifications.</p>

<a href='http://blog.threespheres-media.com/wp-content/uploads/2008/11/gohov11.jpg' title='gohov11' rel="lightbox-279"><img src="http://blog.threespheres-media.com/wp-content/plugins/photojar-base/cache/gohov11-125x125.jpg" width="125" height="125" class="attachment-thumbnail" alt="" /></a>
<a href='http://blog.threespheres-media.com/wp-content/uploads/2008/11/gohov2.jpg' title='gohov2' rel="lightbox-279"><img src="http://blog.threespheres-media.com/wp-content/plugins/photojar-base/cache/gohov2-125x125.jpg" width="125" height="125" class="attachment-thumbnail" alt="" /></a>

]]></content:encoded>
			<wfw:commentRss>http://blog.threespheres-media.com/?feed=rss2&amp;p=279</wfw:commentRss>
		</item>
		<item>
		<title>XMLObjectPrinter</title>
		<link>http://blog.threespheres-media.com/?p=11</link>
		<comments>http://blog.threespheres-media.com/?p=11#comments</comments>
		<pubDate>Tue, 04 Nov 2008 02:57:22 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
		
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.threespheres-media.com/?p=11</guid>
		<description><![CDATA[Many times when I'm coding java I wish that I could just take an object and dump all of its contents into systemout like I was running a debugger. So I wrote the XMLObjectPrinter which calls every get method for a given object and prints it out in XML. It also works for arrays, Lists, [...]]]></description>
			<content:encoded><![CDATA[<p>Many times when I'm coding java I wish that I could just take an object and dump all of its contents into systemout like I was running a debugger. So I wrote the XMLObjectPrinter which calls every get method for a given object and prints it out in XML. It also works for arrays, Lists, ResultSets, Maps. Calling XMLObjectPrinter.print(object) does all the work for you. Check it, hope it saves you lots of System.out.println coding!</p>
<p>Due to a bug in FF 3.5 displaying the pre tag, we're linking to this class <a href="http://www.threespheres-media.com/grammin/java/XmlObjectPrinter.java">here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threespheres-media.com/?feed=rss2&amp;p=11</wfw:commentRss>
		</item>
		<item>
		<title>Importing large sql files in phpMyAdmin</title>
		<link>http://blog.threespheres-media.com/?p=264</link>
		<comments>http://blog.threespheres-media.com/?p=264#comments</comments>
		<pubDate>Wed, 22 Oct 2008 04:28:25 +0000</pubDate>
		<dc:creator>chrisw</dc:creator>
		
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.threespheres-media.com/?p=264</guid>
		<description><![CDATA[Recently I had the unfortunate task of having to reseed an entire database from a snapshot taken a few months ago. So I opened phpMyAdmin, created the database and clicked the Import tab on top to run the data dump. I chose my file and clicked Go, but after the script ran for a few minutes I [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I had the unfortunate task of having to reseed an entire database from a snapshot taken a few months ago. So I opened phpMyAdmin, created the database and clicked the Import tab on top to run the data dump. I chose my file and clicked Go, but after the script ran for a few minutes I got this message:</p>
<p><strong>Maximum execution time of 300 seconds exceeded.</strong></p>
<p>Since this was a very large file that I knew would run longer than this I had to alter the default settings for phpMyAdmin. To do this I altered the config.inc.php in the phpMyAdmin folder (the error message above is probably accompanied with the path to your phpMyAdmin installation).  Set :</p>
<p><strong>$cfg['ExecTimeLimit'] = 0</strong></p>
<p>That will let your script run for as long as it needs. One note, I needed to actually add the entire entry above, as it wasn't in my config file at all. Happy importing!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.threespheres-media.com/?feed=rss2&amp;p=264</wfw:commentRss>
		</item>
		<item>
		<title>ResearchBlogging.org Goes Live</title>
		<link>http://blog.threespheres-media.com/?p=228</link>
		<comments>http://blog.threespheres-media.com/?p=228#comments</comments>
		<pubDate>Sun, 21 Sep 2008 20:38:49 +0000</pubDate>
		<dc:creator>mattw</dc:creator>
		
		<category><![CDATA[project gallery]]></category>

		<guid isPermaLink="false">http://blog.threespheres-media.com/?p=228</guid>
		<description><![CDATA[We recently collaborated with Seed Media Group, publishers of the really cool science magazine Seed, to create ResearchBlogging.org. From the site itself:
Do you like to read about new developments in science and other fields? Are you tired of "science by press release"? ResearchBlogging.org is your place. Research Blogging allows readers to easily find blog posts [...]]]></description>
			<content:encoded><![CDATA[<p>We recently collaborated with <a href="http://seedmediagroup.com/"></a>Seed Media Group, publishers of the really cool science magazine Seed, to create <a href="http://researchblogging.org">ResearchBlogging.org</a>. From the site itself:</p>
<blockquote><p>Do you like to read about new developments in science and other fields? Are you tired of "science by press release"? ResearchBlogging.org is your place. Research Blogging allows readers to easily find blog posts about serious peer-reviewed research, instead of just news reports and press releases.</p></blockquote>
<p>See for yourself:</p>

<a href='http://blog.threespheres-media.com/wp-content/uploads/2008/10/picture-1.png' title='RB posts' rel="lightbox-228"><img src="http://blog.threespheres-media.com/wp-content/plugins/photojar-base/cache/picture-1-125x125.png" width="125" height="125" class="attachment-thumbnail" alt="" /></a>
<a href='http://blog.threespheres-media.com/wp-content/uploads/2008/10/picture-3.png' title='RB Blog' rel="lightbox-228"><img src="http://blog.threespheres-media.com/wp-content/plugins/photojar-base/cache/picture-3-125x125.png" width="125" height="125" class="attachment-thumbnail" alt="" /></a>

]]></content:encoded>
			<wfw:commentRss>http://blog.threespheres-media.com/?feed=rss2&amp;p=228</wfw:commentRss>
		</item>
	</channel>
</rss>
