<?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>Designoplasty Web Design and Development Blog</title>
	<atom:link href="http://designoplasty.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://designoplasty.com</link>
	<description>HTML, Javascript, PHP, and Me</description>
	<lastBuildDate>Sat, 14 Aug 2010 06:56:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Understanding creativity</title>
		<link>http://designoplasty.com/2010/08/13/understanding-creativity/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=understanding-creativity</link>
		<comments>http://designoplasty.com/2010/08/13/understanding-creativity/#comments</comments>
		<pubDate>Sat, 14 Aug 2010 06:56:55 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Artwork]]></category>
		<category><![CDATA[Creativity]]></category>
		<category><![CDATA[Pixar]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1273</guid>
		<description><![CDATA[This is an interesting article that briefly talks about the basics of creativity. It&#8217;s nice because even thinking about creativity feels like it gets those creative juices flowing.

They use Pixar as an example of successful creativity:

Pixar produced the first fully computer-animated feature film, Toy Story, in 1995, followed by Monsters, Inc. and Finding Nemo. The [...]]]></description>
			<content:encoded><![CDATA[<p>This is an interesting article that briefly talks about the basics of creativity. It&#8217;s nice because even thinking about creativity feels like it gets those creative juices flowing.</p>

<p>They use Pixar as an example of successful creativity:</p>

<blockquote><p>Pixar produced the first fully computer-animated feature film, Toy Story, in 1995, followed by Monsters, Inc. and Finding Nemo. The success of these films is not only due to innovations in animation techniques; rather, Pixar understood that, in nearly every scene of a film, there had to be an unusual idea to surprise the viewer, again and again.</p>

<p>While the plots of Pixar films may not be complicated, the individual scenes are unique in the way in which they are created. Something as simple as the blink of a fish&#8217;s eye can truly excite the audience, and as a result, Pixar&#8217;s production teams create thousands of such moments.</p></blockquote>



<p><a href="http://economictimes.indiatimes.com/features/corporate-dossier/Understanding-creativity/articleshow/6304028.cms">Understanding creativity</a></p>]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/08/13/understanding-creativity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Designers, “Hacks” and Professionalism: Are We Our Own Worst Enemy?</title>
		<link>http://designoplasty.com/2010/08/08/designers-%e2%80%9chacks%e2%80%9d-and-professionalism-are-we-our-own-worst-enemy/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=designers-%25e2%2580%259chacks%25e2%2580%259d-and-professionalism-are-we-our-own-worst-enemy</link>
		<comments>http://designoplasty.com/2010/08/08/designers-%e2%80%9chacks%e2%80%9d-and-professionalism-are-we-our-own-worst-enemy/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 17:50:41 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Customer Satisfaction]]></category>
		<category><![CDATA[Hourly Rates]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1270</guid>
		<description><![CDATA[This article talks about some of the existential issues surrounding running a design business. That is, how to actually make money and keep existing.

The whole topic makes me uncomfortable. I kind of mind telling you that I know people who do really crappy work who charge more per hour than I do. However, all my [...]]]></description>
			<content:encoded><![CDATA[<p>This article talks about some of the existential issues surrounding running a design business. That is, how to actually make money and keep existing.</p>

<p>The whole topic makes me uncomfortable. I kind of mind telling you that I know people who do really crappy work who charge more per hour than I do. However, all my customers absolutely love me and I&#8217;m certain I charge for many more hours per customer than they can.</p>

<p>Also, I&#8217;m more of a software engineer. Because of that I sometimes try to pretend that I&#8217;m not in the design business. Still, it&#8217;s a weird world out there.</p>

<p><a href="http://www.smashingmagazine.com/2010/08/03/designers-hacks-and-professionalism-are-we-our-own-worst-enemy/">Designers, “Hacks” and Professionalism: Are We Our Own Worst Enemy?</a></p>]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/08/08/designers-%e2%80%9chacks%e2%80%9d-and-professionalism-are-we-our-own-worst-enemy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing/Updating WordPress with Subversion</title>
		<link>http://designoplasty.com/2010/08/06/installingupdating-wordpress-with-subversion/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=installingupdating-wordpress-with-subversion</link>
		<comments>http://designoplasty.com/2010/08/06/installingupdating-wordpress-with-subversion/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 00:56:59 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Subversion]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1266</guid>
		<description><![CDATA[Installing/Updating WordPress with Subversion

After a long time of installing WordPress manually on my test machines, I have finally switched to using subversion. It is so much easier.

It wouldn&#8217;t be, except that for some reason WordPress will not update properly if your site is not on the open internet. I don&#8217;t know what their deal is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://codex.wordpress.org/Installing/Updating_WordPress_with_Subversion#Converting_a_.22Traditional.22_WordPress_Blog_to_a_Subversion_Checkout">Installing/Updating WordPress with Subversion</a></p>

<p>After a long time of installing WordPress manually on my test machines, I have finally switched to using subversion. It is so much easier.</p>

<p>It wouldn&#8217;t be, except that for some reason WordPress will not update properly if your site is not on the open internet. I don&#8217;t know what their deal is with that, but this gets around it easily. If you use subversion for other things and are familiar with it, but don&#8217;t yet use it for your local WordPress installations, I highly recommend making the switch.</p>]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/08/06/installingupdating-wordpress-with-subversion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OS X Server Open Directory DNS Error -65563</title>
		<link>http://designoplasty.com/2010/05/13/os-x-server-open-directory-dns-error-65563/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=os-x-server-open-directory-dns-error-65563</link>
		<comments>http://designoplasty.com/2010/05/13/os-x-server-open-directory-dns-error-65563/#comments</comments>
		<pubDate>Fri, 14 May 2010 01:22:38 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Kerberos]]></category>
		<category><![CDATA[Mac Mini Server]]></category>
		<category><![CDATA[Open Directory]]></category>
		<category><![CDATA[OS X Server]]></category>
		<category><![CDATA[Server Admin]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1247</guid>
		<description><![CDATA[I&#8217;ve been muddling my way through learning to use OS X Server&#8217;s Open Directory. Kerberos, especially, doesn&#8217;t work very well for me, so I&#8217;ve been looking through the logs and investigating anything that looks suspicious. A fair amount of people see the following message in the Directory Services Error Log in Server Admin.

2010-05-13 17:15:08 PDT [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been muddling my way through learning to use OS X Server&#8217;s Open Directory. Kerberos, especially, doesn&#8217;t work very well for me, so I&#8217;ve been looking through the logs and investigating anything that looks suspicious. A fair amount of people see the following message in the Directory Services Error Log in Server Admin.</p>

<pre>2010-05-13 17:15:08 PDT - T[0x00007FFF70D74BE0] - DNSServiceProcessResult returned -65563</pre>

<p>Like the rest of them, I&#8217;ve been wondering what this means and if it could be the cause of some of the problems I&#8217;m having. But now I don&#8217;t think it is.</p>

<p>After much searching, I finally found <a href="http://developer.apple.com/mac/library/documentation/Networking/Reference/DNSServiceDiscovery_CRef/dns_sd_h/index.html#//apple_ref/doc/title:tag/DNSErrorCodes">Apple&#8217;s API documentation for DNS Error Codes</a>. Here&#8217;s an excerpt.</p>

<pre>kDNSServiceErr_ServiceNotRunning = -65563, /* Background daemon not running */</pre>

<p>Like me you&#8217;re probably pretty sure your DNS service is actually running. Now that I look at the logs, this only happens on startup. I have one server that&#8217;s running Open Directory and DNS so I can take a guess that Open Directory starts trying to use DNS before DNS has fully started. I&#8217;m only seeing this log entry when I restart my server.</p>

<p>I doubt this is the cause of any serious problems. I hope it&#8217;s not because the only way around it would be to buy another server to run DNS.</p>
]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/05/13/os-x-server-open-directory-dns-error-65563/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OS X Server Management Plan for Small Businesses</title>
		<link>http://designoplasty.com/2010/05/11/os-x-server-management-plan-for-small-businesses/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=os-x-server-management-plan-for-small-businesses</link>
		<comments>http://designoplasty.com/2010/05/11/os-x-server-management-plan-for-small-businesses/#comments</comments>
		<pubDate>Wed, 12 May 2010 00:17:43 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Mac Mini Server]]></category>
		<category><![CDATA[OS X Server]]></category>
		<category><![CDATA[Windows Server]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1241</guid>
		<description><![CDATA[I&#8217;ll warn you now, this is a bit of a rant. I need to vent a little bit while I install OS X Server on my Mac Mini Server for the fifth time.

Here&#8217;s my situation, and I&#8217;m sure there are many other people that are in the same position as I am. One of my [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll warn you now, this is a bit of a rant. I need to vent a little bit while I install OS X Server on my Mac Mini Server for the fifth time.</p>

<p>Here&#8217;s my situation, and I&#8217;m sure there are many other people that are in the same position as I am. One of my clients is a small to medium sized business and they use Macs. After I started working for them, I think they started to see I could help them with a lot of business tasks. After talking with me about their goals they decided to buy a couple of Mac Mini Servers.</p>

<p>I&#8217;m excited at the chance to set these up for them and I even bought one for myself which is already working out to be quite a time saver (well, not exactly at the moment, but it will be.) I&#8217;m a smart guy, I worked as a developer at Microsoft for many years. I knew I could do this server thing and it&#8217;s been a tough learning curve, but it will be fine. My main problem is that I&#8217;m having a hard time figuring out what an OS X Server network is &#8220;supposed&#8221; to look like.</p>

<p>With a Windows Server network, at least the one we had at Microsoft, you log in to each computer as your domain user, it verifies your password via the network, sets up a local home directory on the computer and you&#8217;re done. Whether the network is there or not, you can log in. Windows Server isn&#8217;t big on network home drives. People have tons of storage on their workstation, it&#8217;s too expensive to ignore that.</p>

<p>OS X Server is just the opposite, and it doesn&#8217;t make a ton of sense to me. They&#8217;re favorite thing is the network user with a network home. This is great because you can log in anywhere and your files are available to you. The problem is, what about the terabyte of storage on the local workstation that the user uses everyday? Apple doesn&#8217;t have any suggestions here, but I guess you have to educate the user on how to store things locally, because they aren&#8217;t going to have that much storage space on the network (for small businesses).</p>

<p>I found out how to have a home folder created locally on each computer a user logs into, which is kinda good. But what I would really like is some sort of integrated solution where a user has both network and local stuff and the idea of that is fully supported.</p>

<p>Also, the computer you logged into doesn&#8217;t remember you or your password if you have a network account. It might store some files for you, but if the network goes down, nobody in the whole organization can log in. For a small business with a part time administrator, this is not an option.</p>

<p>Of course, you can choose to have the users have a true local machine account (not managed by server) and a network account (managed by the server) and then log into services while logged into their local account, but this isn&#8217;t really supported either. These are truly two separate accounts and nothing is going to confuse users more than having two accounts and two passwords, especially if you do as some suggest and give the accounts the same username, which is totally possible. My clients would freak knowing that one username had two passwords that had to be changed separately in separate places.</p>

<p>So now I&#8217;m looking into creating mobile accounts. My understanding is that then the computer will remember you so you can still log in if the network is down. I can minimize syncing to certain folders and train the users that these folders are &#8220;network&#8221; folders. I can also train them to use their local drives for the files they only need on a single computer.</p>

<p>I&#8217;m so curious as to how Apple has their network set up. Does every user have two logins and passwords? Do they all have network accounts but aren&#8217;t able to log in if the network goes down? Do they all have mobile accounts for the reasons that I think they are a good idea? How do they make the most of both network and local storage?</p>

<p>The thing that&#8217;s most disappointing about Mac OS X Server is that it seems like this issue is the elephant in the middle of the room that nobody&#8217;s talking about. But it really needs to be talked about? Real businesses don&#8217;t just have library terminals set up everywhere. So how is it supposed to look?</p>

<p>If you have any knowledge that can help me find my way, please share it in a comment! Or if you just want to add to my rant, please feel free to do so!</p>]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/05/11/os-x-server-management-plan-for-small-businesses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OS X Server: File Sharing vs. AFP</title>
		<link>http://designoplasty.com/2010/05/07/os-x-server-file-sharing-vs-afp/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=os-x-server-file-sharing-vs-afp</link>
		<comments>http://designoplasty.com/2010/05/07/os-x-server-file-sharing-vs-afp/#comments</comments>
		<pubDate>Fri, 07 May 2010 10:45:00 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[AFP]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[File Sharing]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[Mac Mini Server]]></category>
		<category><![CDATA[NFS]]></category>
		<category><![CDATA[Open Directory]]></category>
		<category><![CDATA[OS X Server]]></category>
		<category><![CDATA[Server Admin]]></category>
		<category><![CDATA[Server Preferences]]></category>
		<category><![CDATA[SMB]]></category>
		<category><![CDATA[Time Machine]]></category>
		<category><![CDATA[Workgroup Manager]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1235</guid>
		<description><![CDATA[This post is about a very subtle difference I learned between &#8220;File Sharing&#8221; and AFP when using Mac OS X Snow Leopard Server (and probably previous versions as well.) But first bear with me while I explain how I got here.

Over the last couple of weeks, I&#8217;ve been taking a crash course in Mac OS [...]]]></description>
			<content:encoded><![CDATA[<p>This post is about a very subtle difference I learned between &ldquo;File Sharing&rdquo; and AFP when using Mac OS X Snow Leopard Server (and probably previous versions as well.) But first bear with me while I explain how I got here.</p>

<p>Over the last couple of weeks, I&#8217;ve been taking a crash course in Mac OS X Server administration. I bought a <a href="http://www.amazon.com/dp/B0013FTCPU/?tag=designoplasty-20">Mac Mini Server</a> and ever since I&#8217;ve been reading as much of the server documentation as I could and installing and reinstalling and staying up way to late every day.</p>

<p>I reinstall now about once every two days, and each time, I try to maintain as much of the previous installation&#8217;s settings as possible. For instance, last time I exported and reimported DNS and Open Directory (via Workgroup Manager) information successfully.</p>

<p>I keep network home directories, time machine backups, and mysql data on the second drive in the Mac Mini Server so that I can do clean installs without destroying that data.</p> 

<p>As I&#8217;m geting more used to using the tools such as Server Admin and Workgroup Manager, I&#8217;m using Server Preferences less and less. This happened organically. Server Preferences has a simpler friendlier interface, but I&#8217;m finding that it may be a &#8220;false friend&#8221; as it sometimes does more than you&#8217;d like when you want to have finer control over your server.</p>

<p>After my most recent clean install, I enabled the AFP service in Server Admin and I was removing the default shares and adding my preferred shares on the other drive. I also went ahead and shared the network Time Machine disk. But when I started the AFP service, none of my computers that had previously been using Time Machine on the network acknowledged that the drive was there.</p>

<p>I went into my iMac and I re-selected the drive. It started a fresh backup but in the root directory of the drive instead of in Shared &gt; Backups where it was previously backing up. I immediately stopped that backup and went to investigate.</p>

<p>For all previous installations I had enabled network Time Machine in Server Preferences, not Server Admin. So I went to Server Preferences and then to Time Machine and it told me something strange. It said that &ldquo;File Sharing&rdquo; was not turned on. But it clearly was. My network home directory was working fine and I had already started and stopped a backup using network Time Machine.</p>

<p>Well that&#8217;s it, clearly File Sharing is a different concept from AFP. First of all, File Sharing will share things by default using SMB and AFP, which at least at this point, I don&#8217;t care that much about. I can always enable SMB when I need it.</p>

<p>Also, when you start network Time Machine using Server Preferences it creates the directory structure Shared &gt; Backups on the drive you select. Then it only shares the Backups folder. So when you go in Server Admin to do the same thing, you only want to share the Backups folder and not the whole drive. Once I did this my remaining computers woke up, recognized that the Time Machine drive was now present, and continued to back up as if I had never reinstalled OS X Server. This is just what I wanted.</p>

<p>Also, for the computer where I had changed the backup drive, I now selected the new share and it also recognized its old backup file and continued with its backups as if I had not reinstalled. This was a pleasant surprise.</p>

<p>So now my server is set so that &ldquo;File Sharing&rdquo; is off and AFP is on, and that&#8217;s fine with me. Hopefully I can forget that Server Preferences exists and it will be one less tool to have to worry about.</p>


]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/05/07/os-x-server-file-sharing-vs-afp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML: What Tags to use for Key-Value Pairs?</title>
		<link>http://designoplasty.com/2010/04/12/html-what-tags-to-use-for-key-value-pairs/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=html-what-tags-to-use-for-key-value-pairs</link>
		<comments>http://designoplasty.com/2010/04/12/html-what-tags-to-use-for-key-value-pairs/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 23:45:15 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1214</guid>
		<description><![CDATA[When you have a key-value list what HTML tags should you use? I&#8217;ve been thinking a lot about this and I&#8217;ll say it flat out: the answer is tables. Here are some of the common tags used to contain key-value pair lists and why using tables is better.

Tags That Don&#8217;t Work Very Well

Dictionary Lists

You could [...]]]></description>
			<content:encoded><![CDATA[<p>When you have a key-value list what HTML tags should you use? I&#8217;ve been thinking a lot about this and I&#8217;ll say it flat out: the answer is tables. Here are some of the common tags used to contain key-value pair lists and why using tables is better.</p>

<h3>Tags That Don&#8217;t Work Very Well</h3>

<h4>Dictionary Lists</h4>

<p>You could use a dictionary list like so:</p>

<pre><code>&lt;dl&gt;
    &lt;dt&gt;Color&lt;/dt&gt;
    &lt;dd&gt;Red&lt;/dd&gt;
    &lt;dt&gt;Shape&lt;/dt&gt;
    &lt;dd&gt;Square&lt;/dd&gt;
&lt;/dl&gt;</code></pre>

<p>Semantically, this kind of works out. It has key and value tags, dt and dd. But the problem comes with formatting. What if you want to put a border around a key value pair? Well, you can&#8217;t. One solution is to wrap each key-value pair in its own dl tag, but that seems like a lot of work and then you lose out on the whole list wrapper, so you have to wrap the whole thing in a div or something depending on your formatting requirements. </p>

<p>This is not to say that dictionary lists are bad, they are perfect for things that closely resemble actual dictionary lists, but they are not a very good general key-value pair container because of limited formatting options.</p>

<h4>Unordered Lists</h4>

<p>Unordered lists are very flexible and can wisely be used for all kinds of lists. The other day I saw them used as a container for key-value pairs like this:</p>

<pre><code>&lt;ul&gt;
    &lt;li&gt;Color &lt;span class="Value"&gt;Red&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;Shape &lt;span class="Value"&gt;Square&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</code></pre>

<p>In many cases this will work fine. It has the benefit over a dictionary list that both the key and value are contained within one element. It has the downside that the Value span has to be formatted to undo any formatting you&#8217;ve given the li (the key). This could be altered by adding a Key span, but at that point you may as well just use a bunch of divs. This doesn&#8217;t give you very good CSS free presentation and completely loses the semantics of the data. The point of HTML is that if there&#8217;s no style things still end up looking fairly decent and that at the very least, the HTML can accurately represent the data relationships.</p>

<h3>The Winner</h3>

<h4>Tables</h4>

<p>We&#8217;ve been so conditioned against tables and rightly so. People have abused tables in the past to format their pages to the point where you can&#8217;t tell what&#8217;s going on. But remember the rule, &#8220;Tables should be used for tabular data.&#8221; A list of key-value pairs is an excellent example of tabular data, but I think people don&#8217;t think to use tables at first because the tabular data in this case only has two columns. People start to think of tables for things with three or more columns. Here&#8217;s the markup.</p>

<pre><code>&lt;table&gt;
    &lt;tr&gt;
        &lt;th&gt;Color&lt;/th&gt;
        &lt;td&gt;Red&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;th&gt;Shape&lt;/th&gt;
        &lt;td&gt;Square&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;</code></pre>

<p>This fixes all the problems. Each key value pair is enclosed in a tr element. The key is enclosed in a th and the value is enclosed in a td. The default formatting is going to be perfect.</p>

<p>Furthermore, tables offer so much more extensibility. If you need a header row, break out the thead and tbody elements. If you need a summary row at the bottom, add another tbody element. It&#8217;s ultimately extendable with no classes.</p>

<p>Of course, that doesn&#8217;t mean it&#8217;s the solution for everything. If what you have is a dictionary list, then of course the dictionary list tags are going to work better. But for general key-value pairs, and the ways we generally think of formatting key-value pairs this is way better.</p>

<p>It might be time to get back in touch with tables if you&#8217;ve stopped thinking about them. Once you drop the idea of tables being used for page formatting and adopt the idea of using them just for small blocks of data you can really start to see how great they are.</p>

<p>The CSS for tables is a little more complex, so take some time to start understanding that. I&#8217;ll give you a hint, though. Do yourself a favor and use the border-collapse property. It takes a lot of the fuss and mess out of formatting tables:</p>

<pre><code>table
{
    border-collapse: collapse;
}</code></pre>

<h4>Difficult Situations</h4>

<p>I just thought I should mention here that I have run into one situation that isn&#8217;t covered very well by any existing HTML elements and in its nature is just difficult. This is the case where you have individual key-value pairs that you want &#8220;arranged&#8221; in an some custom manner. For instance you want the key on top with a border on the bottom and the value beneath that. Then you want those elements to be lined up horizontally:</p>

<pre>Color     Shape
--------  --------
Red       Square</pre>

<p>Using more radical CSS dictionary lists can be made to perform this way although it&#8217;s probably better handled by turning the table suggestion above on its side and using a table with two rows, a header row and a data row depending on how you want it formatted.</p>

<pre><code>&lt;table&gt;
    &lt;thead&gt;
        &lt;tr&gt;
            &lt;th&gt;Color&lt;/th&gt;
            &lt;th&gt;Shape&lt;/th&gt;
        &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;Red&lt;/td&gt;
            &lt;td&gt;Square&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;</code></pre>

<p>That&#8217;s more HTML than absolutely necessary, the thead and tbody can be left out, but it still feel like a lot of HTML for something semantically simple. But at this point it&#8217;s going to take either a lot of HTML (tables) or a lot of CSS (dictionary lists) to make this particular scenario work. If you want it to work without CSS, you really have no choice but tables.</p>

<p>The issue with this concept is that it doesn&#8217;t allow for very long values or very many key-value pairs horizontally and the whole scenario is only appropriate when you know in advance the range and quantity of values to expect.</p>


]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/04/12/html-what-tags-to-use-for-key-value-pairs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Force Deleting Files in OS X</title>
		<link>http://designoplasty.com/2010/04/03/force-deleting-files-in-os-x/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=force-deleting-files-in-os-x</link>
		<comments>http://designoplasty.com/2010/04/03/force-deleting-files-in-os-x/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 01:47:34 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Apple Inc.]]></category>
		<category><![CDATA[OS X]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1208</guid>
		<description><![CDATA[A file on an external drive was constantly giving me the message:

The operation can’t be completed because the item &#8220;filename&#8221; is in use.

I got it over a period of days even after switching files in the only application that could have possibly used it and quitting that application. When I looked for help on this, [...]]]></description>
			<content:encoded><![CDATA[<p>A file on an external drive was constantly giving me the message:</p>

<blockquote>The operation can’t be completed because the item &#8220;<i>filename</i>&#8221; is in use.</blockquote>

<p>I got it over a period of days even after switching files in the only application that could have possibly used it and quitting that application. When I looked for help on this, I saw only the obvious suggestions, &#8220;make sure you shut down apps that use the file&#8221;, to the crazy, &#8220;you need to repair permissions&#8221;.</p>

<p>Repairing permissions is like control-alt-delete for Mac users, except that it&#8217;s usually not necessary and rarely works but it&#8217;s the first thing Mac users from a certain age suggest, along with reboot. But in this day and age, I shouldn&#8217;t have to reboot to delete a file or do any other crazy stunts. Then the obvious hit me: use Terminal.</p>

<p>So I opened Terminal and typed this:</p>

<pre><code>rm -f <i>filename</i></code></pre>

<p>It worked great. The <code>rm</code> means remove and the <code>-f</code> means force if you&#8217;re new to this.</p>

<p>You can drag files from the Finder into Terminal and it will insert the filename into Terminal for you. I used this trick because it was a long network path.</p>


]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/04/03/force-deleting-files-in-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using MediaWiki Increases my Productivity</title>
		<link>http://designoplasty.com/2010/03/26/using-mediawiki-increases-my-productivity/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=using-mediawiki-increases-my-productivity</link>
		<comments>http://designoplasty.com/2010/03/26/using-mediawiki-increases-my-productivity/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 00:32:28 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Wiki]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1195</guid>
		<description><![CDATA[It's only been one day and already I'm in love with MediaWiki. I have been able to organize my thoughts around a theme system redesign more than I ever though possible.]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s only been one day and already I&#8217;m in love with MediaWiki. I have been able to organize my thoughts around a theme system redesign more than I ever though possible.</p>

<p><small>continued after image&#8230;</small></p>

<img src="http://photos.smugmug.com/photos/820237205_sF4Sx-O.png" class="centerblock frame" style="width: 757px; height: 372px;" alt="Sample of a MediaWiki page." />

<div class="caption" style="width: 757px;">Example of part of a MediaWiki page including footnotes that was created very quickly.</div>

<p>I&#8217;ve realized that MediaWiki is what I&#8217;ve always wanted from a specification writing tool. The limited but fast and flexible formatting options of a wiki allows you to really focus on your content. I think it&#8217;s also very handy that you can edit one section at a time. The wiki language is the fastest way to created tables that I&#8217;ve seen. I copied the common.css page over from Wikipedia so the tables look great because I add the &#8220;wikitable&#8221; class to them.</p>

<p>When I was at Microsoft we tried using some Windows specific wiki software for specifications at one time. It kind of worked, but it kind of didn&#8217;t. I think maybe just because not everyone had laptops at the time, so we had to do a lot of printing for meetings. It may have also been that the Microsoft wiki software sucked relative to MediaWiki. But having had this experience, I can&#8217;t imaging writing specifications any other way.</p>

<p>It&#8217;s great for more than specifications, like just keeping track of even unorganized thoughts that may be useful. Sometimes I will just figure out some random idea and need to write it down, but everything gets lost on paper, or even text editor files. As soon as you&#8217;ve opened up a word processor application just forget it, the moment is lost.</p>

<p>I think MediaWiki is my personal productivity application of the year. I have really never been this productive before.</p>]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/03/26/using-mediawiki-increases-my-productivity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing MediaWiki</title>
		<link>http://designoplasty.com/2010/03/25/installing-mediawiki/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=installing-mediawiki</link>
		<comments>http://designoplasty.com/2010/03/25/installing-mediawiki/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 23:46:35 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[HTAccess]]></category>
		<category><![CDATA[MediaWiki]]></category>
		<category><![CDATA[Wiki]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1186</guid>
		<description><![CDATA[Today I installed MediaWiki for the first time to keep track of the documentation behind my various projects. I was finding myself getting reset too many times because I would forget my previous assumptions and my various TextEdit documents were getting lost in an unorganized virtual pile on my desktop. This happens a lot as multiple clients have you switching between tasks.]]></description>
			<content:encoded><![CDATA[<p>Today I installed MediaWiki for the first time to keep track of the documentation behind my various projects. I was finding myself getting reset too many times because I would forget my previous assumptions and my various TextEdit documents were getting lost in an unorganized virtual pile on my desktop. This happens a lot as multiple clients have you switching between tasks.</p>

<p>Installing MediaWiki is theoretically and practically easy, but the first time still takes a few hours. I spent a good amount of time figuring out how to get pretty URLs which was complicated by the fact that my wiki was going to be at the local address <code>http://wiki</code>. Hint: Don&#8217;t name your internal wiki site wiki if you want the process of getting pretty URLs to go quickly. I renamed my wiki directory and site name to something else and proceeded successfully. Luckily, all of that while taking some time, went smoothly.</p>

<p>I have my wiki installed on an Apache virtual host, which the documentation writers don&#8217;t really think of as a common scenario. If you are going to do this and want pretty URLs, just realize you will have to know a little bit about .htaccess files. If it helps, here&#8217;s my .htaccess file I created as part of the process to get pretty URLs:</p>

<pre><code>RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^wiki/(.*)$ /index.php?title=$1 [PT,L,QSA]</code></pre>

<p>Overall I am happy with it, although in some ways I&#8217;m just mildly unhappy with it. I would prefer a web based administration page to manually editing the LocalSettings.php file. I would prefer that MediaWiki automatically create the appropriate .htaccess file for pretty URLs based on your installation. (Why would anyone not want pretty URLs?) On the other hand, the installation is pretty smooth and MediaWiki really keeps you focused on content because there isn&#8217;t much else to do but create content. This is a good thing.</p>



]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/03/25/installing-mediawiki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Themes: Object Oriented PHP Code is Very Important</title>
		<link>http://designoplasty.com/2010/02/15/wordpress-themes-php-code-is-very-important/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-themes-php-code-is-very-important</link>
		<comments>http://designoplasty.com/2010/02/15/wordpress-themes-php-code-is-very-important/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 17:41:46 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Object Oriented]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1180</guid>
		<description><![CDATA[I'm doing a heavy rewrite of my main WordPress theme that all of my other themes are based on. As someone who has spent a lot of time writing code, one of the things that has been bugging me about WordPress themes is all the duplication of HTML.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m doing a heavy rewrite of my main WordPress theme that all of my other themes are based on. As someone who has spent a lot of time writing code, one of the things that has been bugging me about WordPress themes is all the duplication of HTML.</p>

<p>For instance, if all your pages have a format involving a header element, a body element, and a footer element, then you have to duplicate that HTML in single.php, page.php, 404.php, etc. Then if you ever change it you have to edit every one of those files just to make the same changes over and over again. You&#8217;re probably going to forget to do it in some files and you&#8217;re going to do it wrong in others.</p>

<p>Wouldn&#8217;t it be great if you could just call a function that would establish this pattern for you in all files? Then if you needed to change it, you would only have to change it in one place and all your site&#8217;s pages would be effected. But what if you need to tweak the template slightly for different pages? This is exactly why object oriented design is important.</p>

<p>So you have a base class that draws the usual page structure and then provide override-able and abstract methods so that a new class can be created if you need to customize. It works perfectly because it gives you maximum code reuse and there&#8217;s no duplication.</p>

<p>However, it does make the theme very code heavy. There&#8217;s not a ton of code, but enough that would intimidate most people. Plus, if you don&#8217;t have a lot of experience with object oriented design getting the extensibility right is going to be a bit difficult.</p>

<p>But that&#8217;s kind of my point for this post. It&#8217;s not necessarily that you need to do this, because obviously themes can be made without it. But it&#8217;s the fact that object oriented design is important to web applications and even blogs too. If you do a lot of PHP coding but aren&#8217;t yet familiar with the concepts behind object oriented programming, then learning more about that will really be a benefit to you.</p>
]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/02/15/wordpress-themes-php-code-is-very-important/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip: Always Comment overflow: hidden; CSS Rules</title>
		<link>http://designoplasty.com/2010/02/09/tip-always-comment-overflow-hidden-css-rules/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=tip-always-comment-overflow-hidden-css-rules</link>
		<comments>http://designoplasty.com/2010/02/09/tip-always-comment-overflow-hidden-css-rules/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 08:05:45 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Floating Elements]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1169</guid>
		<description><![CDATA[CSS comments aren&#8217;t always helpful, they tend to muddle the code and once you get good at naming classes and ids your CSS should tell a pretty clear story. But one thing that should always be clearly commented is the use of overflow: hidden;

This rule is used mostly for a couple of reasons, and almost [...]]]></description>
			<content:encoded><![CDATA[<p>CSS comments aren&#8217;t always helpful, they tend to muddle the code and once you get good at naming classes and ids your CSS should tell a pretty clear story. But one thing that should always be clearly commented is the use of <code>overflow: hidden;</code></p>

<p>This rule is used mostly for a couple of reasons, and almost never to actually hide overflowing content. The first is to make sure that and element containing floating elements will clear itself. The other is to make sure that an element next to a float doesn&#8217;t wrap under that float.</p>

<p>If in your CSS file you clearly comment every time you use overflow: hidden you will be able to read your CSS much faster when you come back to it later. You will also almost certainly find all the unnecessary <code>overflow: hidden;</code> rules you have and it will help you get a much better overall understanding of your layout philosophy.</p>
]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/02/09/tip-always-comment-overflow-hidden-css-rules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using the WordPress apply_filters Function for Dynamic Content</title>
		<link>http://designoplasty.com/2010/01/26/using-the-wordpress-apply_filters-function-for-dynamic-content/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=using-the-wordpress-apply_filters-function-for-dynamic-content</link>
		<comments>http://designoplasty.com/2010/01/26/using-the-wordpress-apply_filters-function-for-dynamic-content/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 04:52:30 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Filters]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1159</guid>
		<description><![CDATA[In a WordPress plugin you can filter many values including the title and content of a post using:

add_filter('the_content', 'MyPluginClass::FilterTheContent');

This is pretty handy, but sometimes when you&#8217;re writing a WordPress theme you want to allow plugins to add content, not just filter the usual content. Using apply_filters makes this pretty easy because you can call apply [...]]]></description>
			<content:encoded><![CDATA[<p>In a WordPress plugin you can filter many values including the title and content of a post using:</p>

<pre><code>add_filter('the_content', 'MyPluginClass::FilterTheContent');</code></pre>

<p>This is pretty handy, but sometimes when you&#8217;re writing a WordPress theme you want to allow plugins to add content, not just filter the usual content. Using <code>apply_filters</code> makes this pretty easy because you can call apply filters with custom &#8220;tags&#8221; and it will just work. For instance in your theme you can put:</p>

<pre><code>&lt;?php

    $theMessage = apply_filters('CustomThemeMessage', '' /* default value: empty string */);

    if (!empty($theMessage))
    {
        echo '&lt;div class="Message"&gt;', $theMessage, '&lt;/div&gt;';
    }

?&gt;</code></pre>

<p>If nobody ever filters on the tag &#8216;CustomThemeMessage&#8217; it&#8217;s fine, your theme won&#8217;t break or anything. But plugins that know this tag is available can use it:</p>

<pre><code>add_filter('CustomThemeMessage', 'MyPluginClass::FilterTheContent');</code></pre>

<p>When you&#8217;re developing themes and plugins in tandem, this is incredibly useful and robust. It&#8217;s also not as risky as filtering a tag like &#8216;the_content&#8217; where a mistake can really mess up your site. It will also be more performant when you only need the custom content on one or a few of the pages on your site.</p>]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/01/26/using-the-wordpress-apply_filters-function-for-dynamic-content/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Real Development Life Cycle</title>
		<link>http://designoplasty.com/2010/01/19/the-real-development-life-cycle/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=the-real-development-life-cycle</link>
		<comments>http://designoplasty.com/2010/01/19/the-real-development-life-cycle/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 05:14:01 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Clients]]></category>
		<category><![CDATA[Inspiration]]></category>
		<category><![CDATA[Quality]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1152</guid>
		<description><![CDATA[

One reason I really wanted to run my own business was to be able to do business and live my life honestly. I have a very honest way of working with my customers, they know I can only give so much time and it may take some time to get what they want. But it [...]]]></description>
			<content:encoded><![CDATA[<img src="http://photos.smugmug.com/photos/768943885_8ivaJ-O.png" class="floatright" style="width: 280px; height: 280px;" alt="Product Development Life Cycle, Web Design" />

<p>One reason I really wanted to run my own business was to be able to do business and live my life honestly. I have a very honest way of working with my customers, they know I can only give so much time and it may take some time to get what they want. But it works out, because they are happy with the results.</p>

<p>While working on a project there are various phases in the development cycle, but one that has never been written in books is the phase I like to call, &#8220;relaxation and reflection&#8221;. I go through periods where I work very hard and kind of exhaust myself. Then I need to stop work for at least a few days and just think about what I&#8217;ve done. Make sure things are fitting together correctly and heading in the right direction.</p>

<p>Just to fly right in the face of traditional development cycles, I find this &#8220;relaxation and reflection&#8221; phase needs to happen, among other times, right before the code is placed into production? Yes, that&#8217;s right. Right when the customer wants it, right when the tension&#8217;s the highest, it&#8217;s time to take a break. How can that be?</p>

<p>Well, if you want the code to work, and you want to enjoy the maintenance cycle, and you want to enjoy your life, and you want your customers to be happy, then you need to make sure you&#8217;ve done the right thing before you throw it out into the wild.</p>

<p>This is just plain true, but I don&#8217;t expect IT departments or software development companies to understand it any time soon. This is because they are run by managers, and managers never really understand anything, so it doesn&#8217;t even make a bit of sense to take the time to understand things. Understanding things is not what they do. There&#8217;s nothing for them to understand, it&#8217;s all about deadlines to them. As long as something crappy that mostly works is put out on time, they get their bonus.</p>

<p>This is how small consulting companies can come into the game and thrive, by hitting large companies in their soft spot: quality.</p>

<p>It&#8217;s to the point now where people don&#8217;t expect to ever get quality, so if you can provide it, especially at a reasonable price, that&#8217;s really going to work for your business. It sounds obvious, which makes it even more strange that it doesn&#8217;t happen that often.</p>
]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/01/19/the-real-development-life-cycle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress and PHP have Poor Support for Dates and Time Zones</title>
		<link>http://designoplasty.com/2010/01/16/wordpress-and-php-have-poor-support-for-dates-and-time-zones/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-and-php-have-poor-support-for-dates-and-time-zones</link>
		<comments>http://designoplasty.com/2010/01/16/wordpress-and-php-have-poor-support-for-dates-and-time-zones/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 09:00:00 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Object Oriented]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://designoplasty.com/?p=1140</guid>
		<description><![CDATA[Today I spent way too much time figuring out how to convert dates and times to different time zones. PHP can barely do it, and WordPress really doesn&#8217;t do anything to make it easier. I would love it if someone would just create a simple function like this:

$string = format_gmt_time_for_time_zone(
    'l, F [...]]]></description>
			<content:encoded><![CDATA[<p>Today I spent way too much time figuring out how to convert dates and times to different time zones. PHP can barely do it, and WordPress really doesn&#8217;t do anything to make it easier. I would love it if someone would just create a simple function like this:</p>

<pre><code>$string = format_gmt_time_for_time_zone(
    'l, F jS g:ia', 
    $myGMTTimestamp,
    'America/Los Angeles');</code></pre>

<p>or even better, using and object oriented approach:</p>

<pre><code>$string = $date->Format(
    'l, F jS g:ia', 
    'America/Los Angeles');</code></pre>

<p>It&#8217;s important because it&#8217;s kind of a &#8220;best practice&#8221; to store dates in the database in GMT (or really UTC) format and then translate them as necessary. Then I want someone in New York to see times in their time zone and also someone in Seattle. It would also help if WordPress had a per user time zone.</p>

<p>I know that PHP 6 is doing some enhanced date stuff, so hopefully that will include this simple functionality. But right now, both WordPress and PHP don&#8217;t seem to imaging a case where someone wants to print out a time for a timezone they&#8217;re not in.</p>

<p>What I ended up doing was this:</p>

<pre><code>$oldTimeZone = date_default_timezone_get();

date_default_timezone_set($requestedTimeZone));
        
$convertedString = date($formatString, $gmtTimestamp);
        
date_default_timezone_set($oldTimeZone);
        
return $convertedString;</code></pre>

<p>It works, but it&#8217;s fairly clunky. From my experience at Microsoft I know sometimes when there&#8217;s a whole category of things that needs improving, it can be hard to find someone to take that on. What has to happen is a person needs to say, &#8220;I&#8217;m going to take on times and dates and make the API better.&#8221; But either people aren&#8217;t interesting or people are too afraid to suggest such a drastic move. Furthermore, the people who wrote the original code will often be offended that someone would suggest it could be better. They will point to something like my code above an say that&#8217;s good enough. It isn&#8217;t.</p>

<p>I&#8217;m actually considering getting involved with WordPress on this, however, I am honestly scared that they will not be into it. I&#8217;d also like to add the per user time zone, but I sense something like that would be controversial.</p>]]></content:encoded>
			<wfw:commentRss>http://designoplasty.com/2010/01/16/wordpress-and-php-have-poor-support-for-dates-and-time-zones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
