<?xml version="1.0" encoding="utf-8"?>

			<rss version="2.0">

				<channel>

					<title>Matt Thommes / Archive</title>
<link>http://matthom.com/</link>
<description>Personal weblog of Matt Thommes: independent publishing enthusiast, informative writer, web developer from Chicago.</description>
<language>en-us</language>

<copyright>Copyright 2010, Matt Thommes</copyright>
<webMaster>matthom@gmail.com</webMaster>

<image>
	<title>Matt Thommes</title>
	<url>http://matthom.com/images/emblem_m1.jpg</url>
	<link>http://matthom.com/</link>

	<width>300</width>
	<height>300</height>
	<description>Personal weblog of Matt Thommes: independent publishing enthusiast, informative writer, web developer from Chicago.</description>
</image>


		<item>

			<title><![CDATA[iTunes social network Ping could replace Lala]]></title>
			<link>http://matthom.com/archive/2010/09/02/itunes-social-network-ping-could-replace-lala</link>
			<category>Social Networks, Software</category>
			<pubDate>Thu, 02 Sep 2010 10:57:27 -0700</pubDate>

			<description>

				<![CDATA[

					<p><img src="http://matthom.com/images/m1/1872.png" width="297" height="176" alt="Apple Ping logo" title="Ping - a social network within iTunes" /></p>

<p><img src="http://matthom.com/images/491.jpg" /></p>

<p>With the arrival of <a href="http://www.apple.com/itunes/ping/">Ping</a>, iTunes has just become a lot more like Lala - the web-based CD-swapping, music library streaming social network from yesteryear. Apple acquired Lala <a href="http://matthom.com/archive/2010/04/30/apple-shutting-down-lala">a short while back</a>, and subsequently shut it down.</p>

<p>Is this the replacement that old Lala fans have been waiting for?</p>

<p>Ping at least replaces the social network aspect of Lala, providing the ability to follow people, and share music activity. It certainly doesn't replace the CD-swapping capability, nor the ability to stream full-length songs free of charge (once per song).</p>

<p>Personally, I liked Lala due to it's web-based interface (no additional software installation), but I could get used to accessing everything through iTunes, so as long as Apple doesn't create a walled-garden around the data. I want to be able to push (or pull) my activity into my own <a href="http://matthom.com/archive/2010/08/19/my-social-network-third-party-data-backup-system">backup system</a> for posterity. I also wouldn't mind the ability to share with other social networks like Facebook.</p>

<p>Also, I enjoyed letting Lala worry about storing and managing my music library. With iTunes you still have to maintain a hard drive full of songs somewhere. Push this aspect into the cloud, for users who want it, and I think the Lala-to-iTunes transformation would be almost complete.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Apple TV thoughts]]></title>
			<link>http://matthom.com/archive/2010/09/01/apple-tv-thoughts</link>
			<category>Products</category>
			<pubDate>Wed, 01 Sep 2010 15:21:11 -0700</pubDate>

			<description>

				<![CDATA[

					<p>When I first bought my original Apple TV, <a href="http://matthom.com/archive/2008/05/19/dynamic-slideshows-with-apple-tv-and-flickr">I was excited</a> at the prospect of viewing internet content on my television.</p>

<p>These days I rarely use it. It's just easier to flip on my Playstation 3 and load up Netflix streaming. There's more choices with Netflix, and it feels cheaper using a subscription plan, than having to buy individual movies one at a time.</p>

<p>YouTube and Flickr were appealing additions on Apple TV, but who really sits down to browse content from YouTube? It's more like a "pass around the office for quick email humor" service, than something I would spend time viewing in my living room.</p>

<p>I <em>have</em> used my Apple TV for displaying photo slideshows, and my iTunes music library, but that's about it.</p>

<p>Today we have a <a href="http://www.apple.com/appletv/">new Apple TV</a>, which has transformed into a streaming-only box, and includes Netflix.</p>

<p>Knowing this, let's ask ourselves - who really needs another set-top box, since most existing boxes can already do what Apple TV does? This is probably one of the last-in-line of set-top boxes to include Netflix streaming - hardly a feature worth touting.</p>

<p>It's size, price, and user interface will speak louder than anything, though.</p>

<p>I don't see it re-kindling my use of the device though, but <a href="http://matthom.com/archive/2010/01/28/my-initial-apple-ipad-thoughts">I said the same about the iPad</a>, so knowing me I'll be buying one of these new Apple TV's soon.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[My own "Priority Inbox" from August 2009]]></title>
			<link>http://matthom.com/archive/2010/09/01/my-own-priority-inbox-from-august-2009</link>
			<category>Organization, Email</category>
			<pubDate>Wed, 01 Sep 2010 05:37:24 -0700</pubDate>

			<description>

				<![CDATA[

					<p>Re: <a href="http://matthom.com/archive/2010/08/31/new-priority-inbox-from-gmail-overkill-for-some">"Priority Inbox"</a>: By the way, <a href="http://matthom.com/archive/2009/08/18/using-gmail-multiple-inboxes-for-social-network-updates">here's my own</a> "Priority Inbox" implementation from August 2009, using the Gmail Labs feature "Multiple Inboxes."</p>

<p><img src="http://matthom.com/images/1336.png" width="398" height="623" alt="Screenshot of Gmail multiple inboxes" title="My Gmail multiple inboxes" /></p>

<p>I did like this approach - as it was effective at pushing bacn and other notifications further down, and important email to the top.</p>

<p>I've since abandoned this approach for other unrelated reasons, but it was useful while it lasted.</p>

<p>It's nice to see Gmail making this easier to implement.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[New "Priority Inbox" from Gmail overkill for some]]></title>
			<link>http://matthom.com/archive/2010/08/31/new-priority-inbox-from-gmail-overkill-for-some</link>
			<category>Organization, Email</category>
			<pubDate>Tue, 31 Aug 2010 14:59:59 -0700</pubDate>

			<description>

				<![CDATA[

					<p><img src="http://matthom.com/images/m1/1870.jpg" width="250" height="249" alt="Illustration of file folder and email @ symbol" title="Inbox management" /></p>

<p><a href="http://gmailblog.blogspot.com/2010/08/email-overload-try-priority-inbox.html">Gmail's new "Priority Inbox"</a> tries to assist email users with organizational methods involved with managing their inbox.</p>

<p>I find this to be overkill, although <em>cute</em> and potentially useful for many people.</p>

<p>I won't be needing the feature though.</p>

<p>Inbox management is very simple, and can be accomplished by anyone willing to perform these steps:</p>

<ol>
<li><strong>Move it.</strong> Reply or delegate each email. Then archive it - always.</li>
<li><strong>Stay on top of it.</strong> Manage daily.</li>
<li><strong>Revisit</strong> emails if necessary. Utilize the search capability of your email client.</li>
</ol>

<h2>Move it</h2>

<p>Every email either requires action, or does not. Decide what needs to be done.</p>

<p>Does it require a reply now? Do it as soon as possible, then archive it.</p>

<p>Does it require a reply later? Delegate it to another system that handles tasks or To-Do's. Then archive it.</p>

<p><strong>Read: Your email inbox is not your To-Do list.</strong> Using this mentality will quickly become overwhelming because email clients are not built to be full-featured task management systems. There are better systems for that.</p>

<p>A single email should not be in your inbox for more than a day.</p>

<h2>Stay on top of it</h2>

<p>Always maintain your inbox by checking it often and pruning the important from the unimportant. These days, email is everywhere - from your work computer, home PC, mobile devices, and more. Email is very accessible, so you have no excuse to neglect it.</p>

<p>Be harsh and critical. If it's not something that absolutely requires your attention, <strong>remove it from your inbox</strong>. Don't let people waste your time with trivial matters.</p>

<p>Remember your own priorities, and refuse to focus on anything but.</p>

<p>You have to put the effort towards keeping your inbox tidy, otherwise it will quickly spiral out of control.</p>

<h2>Revisit</h2>

<p>Your email client has a search feature for a reason - use it. This way you can immediately archive unimportant emails <em>now</em>, and revisit them in the future if you need to.</p>

<p>There is absolutely no reason why stagnant emails should be sitting in your inbox. If they don't require a reply or attention, archive them.</p>

<p>Anything competing for your attention is robbing you of productivity and priorities.</p>

<h2>Consider...</h2>

<p>Let me throw a hypothetical out there.</p>

<p>Your "snail mail" box - do you leave mail from days ago sitting in there? Even when you bring it in the house each day, do you leave it in a pile on the kitchen table for weeks?</p>

<p>I'd guess the answer is "no." (If it's "yes," that's terribly inefficient. You're probably missing important correspondence or bills.)</p>

<p>So you should treat your email inbox as efficiently as your <em>real</em> mail inbox.</p>

<p>Email being electronic doesn't mean it requires any less attention.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Getting started with HTML audio element]]></title>
			<link>http://matthom.com/archive/2010/08/29/getting-started-with-html-audio-element</link>
			<category>Audio, Tutorials, Web Development, Video Embed</category>
			<pubDate>Sun, 29 Aug 2010 12:26:59 -0700</pubDate>

			<description>

				<![CDATA[

					<p>Today's world of web development is brave and new - it's possible to do things that required convoluted approaches just years ago.</p>

<p>An example is embedding audio on a webpage. Today it's as simple as this:</p>

<pre>
&lt;audio controls="controls" autobuffer="autobuffer"&gt;

  &lt;source src="file.mp3" type="audio/mp3" /&gt;
  Your browser does not support the audio element.

&lt;/audio&gt;
</pre>

<p>This will render a simple player control widget (screenshot from Google Chrome):</p>

<p><img src="http://matthom.com/images/m1/1867.png" width="307" height="39" alt="Screenshot of audio player on webpage" title="HTML audio player" /></p>

<p>If it seems too simple to be true, it is (sort of). There's a catch -- you guessed it: browser support.</p>

<p>The above is only decipherable to browsers such as Google Chrome and Safari (desktop and iOS).</p>

<p>Unsupported browsers should display the message, <em>"Your browser does not support the audio element."</em></p>

<p>The good news is we can fall back to another approach for those browsers. For example, if you replace the message above with actual HTML, you can still display an audio player that works in unsupported browsers:</p>

<pre>
&lt;audio controls="controls" autobuffer="autobuffer"&gt;

  &lt;source src="file.mp3" type="audio/mp3" /&gt;
  
  &lt;!-- BEGIN PLAYER CODE FOR UNSUPPORTED BROWSERS --&gt;
  &lt;div id="legacy_audio_player"&gt;&lt;/div&gt;
  &lt;script type="text/javascript"&gt;
    var s = new SWFObject('mediaplayer.swf','ply','470','20','9');
    s.addParam('allowscriptaccess','always');
    s.addParam('allowfullscreen','true');
    s.addParam('wmode','opaque');
    s.addVariable('file','file.mp3');
    s.write('legacy_audio_player');
  &lt;/script&gt;
  
&lt;/audio&gt;
</pre>

<p>The above (a sample of the <a href="http://www.longtailvideo.com/players/jw-flv-player">Longtail JW Player</a>) will output a Flash-based audio player in browsers that do not support the <code>&lt;audio&gt;</code> element, such as Internet Explorer:</p>

<p><img src="http://matthom.com/images/m1/1868.png" width="476" height="27" alt="Screenshot of audio player on webpage" title="Flash-based audio player" /></p>

<p>Either way, we have our audio file playable in most browsers.</p>

<p>Here is a live example. If you are using Chrome, mobile Safari (I am having trouble on desktop Safari), or Internet Explorer, you should be able to stream this audio file:</p>

<audio id="status_audio_16" controls="controls" autobuffer="autobuffer">
<source src="http://audio.matthom.com/downloads/m1_audio/16.m4a" type="audio/x-m4a" />

<div id="status_audio_swf_16"></div>

<script type="text/javascript">
var s = new SWFObject("http://assets2.matthom.com/swf/longtail_mediaplayer.swf","ply","470","20","9");
s.addParam("allowscriptaccess","always");
s.addParam("allowfullscreen","true");
s.addParam("wmode","opaque");
s.addVariable("file","http://audio.matthom.com/downloads/m1_audio/16.m4a");
s.write("status_audio_swf_16");
</script>

</audio>

<h2>Cautions and caveats</h2>

<p>This example is only meant to illustrate how to get started with embedding audio on a webpage. It is, by no means, a complete browser-compatible approach. Some browsers still may not display the audio player, and others (like Firefox) will fail to display anything useful:</p>

<p><img src="http://matthom.com/images/m1/1869.png" width="305" height="70" alt="Screenshot of invalid audio player in Firefox" title="Invalid audio file type in Firefox" /></p>

<p>The above will show in Firefox for all audio file types other than WAV format, or Vorbis in Ogg containers (<a href="https://developer.mozilla.org/En/HTML/Element/Audio">reference</a>). In this case, you could force the Flash-based player to display in Firefox as well, by using additional scripting.</p>

<p>I am not sure why Firefox has made this so difficult, but I'm sure there's a valid reason.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Getting by on free WiFi]]></title>
			<link>http://matthom.com/archive/2010/08/29/getting-by-on-free-wifi</link>
			<category>Wireless</category>
			<pubDate>Sun, 29 Aug 2010 07:12:45 -0700</pubDate>

			<description>

				<![CDATA[

					<p><img src="http://matthom.com/images/m1/1866.jpg" width="400" height="215" alt="Photo of traffic on expressway" title="Do you really need a wireless connection here?" /></p>

<p><a href="http://matthom.com/archive/2010/04/05/att-contract-terminated-alternate-voice-and-sms-explained">A while back</a> I quit my AT&amp;T contract for my iPhone, and went with a wireless hotspot device to provide internet access for all of my devices. This is more economical than having multiple wireless plans for different devices. </p>

<p>I'm saving money, but the experience is not the same - the Verizon MiFi has weak battery life, meaning I can't be away from a charger for more than four hours. Usually this is okay, but some situations call for much longer time away from a charger, and in those cases I have no choice but to limit my wireless usage.</p>

<p>But what I've realized in the process is I can get by on free WiFi most of the time. I'd say about 80% of the time the location I'm at has free WiFi, and I make it a point (if possible) to choose places that have free WiFi, over places that do not.</p>

<p>Don't get me wrong - I'm not saying free WiFi is ubiquitous - we're nowhere near that point yet. I'm just noticing that it's not so bad going without a wireless connection - you'd be surprised how many free connections are available.</p>

<p>Literally, there's going to be spots that can't possibly have WiFi anytime soon (such as a cruising on a expressway), but maybe you don't absolutely need to be connected at that very moment. Waiting a short while until your next connection is not going to kill you.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Switching to desktop email client from web-based]]></title>
			<link>http://matthom.com/archive/2010/08/27/switching-to-desktop-email-client-from-web-based</link>
			<category>Software, Email</category>
			<pubDate>Fri, 27 Aug 2010 12:02:27 -0700</pubDate>

			<description>

				<![CDATA[

					<p><img src="http://matthom.com/images/m1/1854.png" width="420" height="168" alt="Screenshot snippet of Gmail and Thunderbird" title="Migrating from Gmail to Thunderbird" /></p>

<p>I've started using a desktop email client due to <a href="http://matthom.com/archive/2010/07/21/gmail-slowness">my recent issues</a> with Gmail's web interface.</p>

<p>I figured it would be good exposure to software I haven't used on a regular basis in a very long time - in fact, before the days of Gmail. I've become so accustomed to web-based email, I never needed a desktop email client. It should also help with the slowness issue - I shouldn't notice it as much, I would hope.</p>

<p>I chose Thunderbird because I've used it before, and it happened to already be installed on my computer. I'm using IMAP to keep everything in sync.</p>

<p>Here are my thoughts after a few days of using this new setup.</p>

<h2>Pros</h2>

<ul>
<li>Polished and responsive interface</li>
<li>Unified inbox</li>
<li>Split-pane view</li>
<li>Separate window for replies</li>
</ul>

<p>Email feels more polished and responsive using a desktop application. Gmail's web interface is a brilliant design and implementation, but there's still something <em>amateurish</em> about it. Browser-based software just doesn't <em>handle</em> as well as native applications.</p>

<p>The <strong>unified inbox</strong> is nice, and mimics how iOS does it for the native Mail app:</p>

<p><img src="http://matthom.com/images/m1/1853.png" width="214" height="247" alt="Screenshot of Thunderbird email software" title="Unified inboxes in Thunderbird" /></p>

<p><img src="http://matthom.com/images/m1/1865.png" width="250" height="375" alt="Screenshot of iPhone Mail client" title="Multiple inboxes on iPhone Mail client" /></p>

<p>I never thought I liked <strong>split-pane view</strong>, but I've forgotten how nice it is to see my inbox <em>and</em> a particular message at the same time:</p>

<p><img src="http://matthom.com/images/m1/1855.png" width="533" height="544" alt="Screenshot of Thunderbird" title="Split-pane view in Thunderbird" /></p>

<p>With Gmail's web interface, it was always one or the other. I hated not seeing my inbox when reading a particular message. There was always this nagging feeling that an urgent message had come in while I was typing a reply to someone else.</p>

<p>I also like <strong>replying in a separate window</strong>, so if I need to check for new message (while I am typing my reply), I can simply focus on the main window and refresh the inbox:</p>

<p><img src="http://matthom.com/images/m1/1856.png" width="626" height="501" alt="Screenshot of Thunderbird" title="Separate windows in Thunderbird" /></p>

<p>I realize that most of these things can be accomplished in some form using the Gmail web interface - but it's just more natural using a desktop client.</p>

<h2>Cons</h2>

<p>You might want to sit down for this.</p>

<ul>
<li>Lack of thread feature</li>
<li>No IMAP archive button</li>
<li>Initial setup takes a while to sync</li>
<li>No integration (or quick access) to other Google services</li>
<li>Can't hard-link to individual emails</li>
<li>No message preview for inbox view</li>
<li>No native preview for message attachments</li>
<li>Auto-complete for recipient doesn't work as smoothly as Gmail's web interface</li>
<li>Can't apply multiple labels (folders) to a single message</li>
</ul>

<p>This is a short list. I am discovering more cons each day. It's also possible some of these have solutions that I simply haven't uncovered yet.</p>

<p>I'll touch base on some of the more significant cons for me.</p>

<p>A big thing for me is not having <strong>native previews</strong> for attachments:</p>

<p><img src="http://matthom.com/images/m1/1857.png" width="253" height="101" alt="Screenshot of Thunderbird" title="Thunderbird attachments - no previews available" /></p>

<p>Gmail's web interface has this, and it saves me a lot of time, especially with documents where I do not have native software to read the file (like Word files, for example):</p>

<p><img src="http://matthom.com/images/m1/1858.png" width="207" height="115" alt="Screenshot of Gmail" title="Preview attachments in Gmail" /></p>

<p><strong>Lack of threading</strong> is also a drawback. Every message is displayed individually while viewing the inbox:</p>

<p><img src="http://matthom.com/images/m1/1859.png" width="350" height="122" alt="Screenshot of Thunderbird" title="Emails not in threads" /></p>

<p>In Gmail, messages are grouped together, which condenses replies from each subject to a single item:</p>

<p><img src="http://matthom.com/images/m1/1860.png" width="649" height="32" alt="Screenshot of Gmail inbox" title="Threading in Gmail" /></p>

<p>This saves space, <em>and sanity</em>.</p>

<p>I also love being able to <strong>hard-link to specific emails</strong> using the Gmail web interface:</p>

<p><img src="http://matthom.com/images/m1/1861.png" width="480" height="67" alt="Screenshot of Gmail URL" title="Permanent URLs available in Gmail" /></p>

<p>Every email thread has a unique URL, so it's easy to reference an email from another program, like my To-Do list. With Thunderbird this is not possible.</p>

<p>Also, <strong>auto-complete for recipient</strong> doesn't seem to be working for me yet:</p>

<p><img src="http://matthom.com/images/m1/1862.png" width="327" height="178" alt="Screenshot of Thunderbird" title="Composing a new message without autocomplete" /></p>

<p>I've sent many emails to certain people, yet their names don't show up when typing the first few characters. Perhaps there is a setting I need to adjust. Having to recall exact email addresses, or finding old emails to copy the email address is a waste of time, to say the least.</p>

<p>The <strong>lack of a Gmail-equivalent "Archive" button</strong> is annoying too. Instead I have to drag the message to the "All Mail" IMAP folder - which achieves the same result, but is more time-consuming:</p>

<p><img src="http://matthom.com/images/m1/1863.png" width="369" height="195" alt="Screenshot of Thunderbird" title="Dragging a message to an IMAP folder" /></p>

<p>There <em>is</em> a native "Archive" button in Thunderbird, but I don't know what it does. I'm afraid to hit it, for fear it might move my message somewhere undesirable.</p>

<p><img src="http://matthom.com/images/m1/1864.png" width="517" height="104" alt="Screenshot of Thunderbird" title="Native archive button in Thunderbird" /></p>

<h2>Synopsis</h2>

<p>After only a few solid days using a desktop email client, I am strongly considering switching back to Gmail's web interface. I'm simply not as efficient using a desktop client. Perhaps it's the learning curve (accomplishing the same tasks <em>might</em> be possible with a desktop client), or just the drastic change of scenery, but regardless - it's severely slowing me down.</p>

<p>The final verdict is not yet out, but it seems Google has a better product on their hands than I thought.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Various iPhone issues with iPod application]]></title>
			<link>http://matthom.com/archive/2010/08/25/various-iphone-issues-with-ipod-application</link>
			<category>Software</category>
			<pubDate>Wed, 25 Aug 2010 11:34:09 -0700</pubDate>

			<description>

				<![CDATA[

					<p>I've been having trouble with my iPhone 3GS lately, in particular the iPod application:</p>

<ol>
<li><p>Music only comes out of one headphone speaker.</p></li>
<li><p>Some songs are silent for a portion of the track - typically the second half of the song.</p></li>
<li><p>No longer communicates with the system inside my Honda automobile.</p></li>
</ol>

<p><strong>#1</strong> could be attributed to the headphones themselves. I've had many problems with the <a href="http://store.apple.com/us/product/MA814LL/A">default Apple headphones</a> that ship with the iPhone. I believe this is my second or third pair over a few years.</p>

<p><strong>#2</strong> could be the iPod application, or the music files themselves being corrupted somehow. I am pretty sure I've listened to the corrupted songs before (in their entirety, with no silence gaps), but perhaps I just never noticed. (Who's tested every song in their digital library lately? I don't think many have.)</p>

<p>I am also considering the possibility that my storage method (Amazon S3 via JungleDisk) could be damaging the files somehow, but I have no proof or theory on that - it's just a wild speculation.</p>

<p><strong>#3</strong> could be attributed to a recent software update, as I used to be able to control my iPod library through my car's in-dash system, but now it only says, "Unsupported device." The connectors used have not changed.</p>

<p>I hope these issues resolve themselves soon.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Picnik: How image-editor applications should be]]></title>
			<link>http://matthom.com/archive/2010/08/24/picnik-how-image-editor-applications-should-be</link>
			<category>Software</category>
			<pubDate>Tue, 24 Aug 2010 16:56:08 -0700</pubDate>

			<description>

				<![CDATA[

					<p><a href="http://matthom.com/archive/2008/12/09/online-image-editors-reviewed-picnik-and-sumopaint">I reviewed</a> two online image editors a while back, both of which are still actively developed and useful.</p>

<p>I tend to lean more towards Picnik for quick image-editing tasks. The interface seems more intuitive and well-crafted:</p>

<p><img src="http://matthom.com/images/m1/1848.png" width="759" height="479" alt="Screenshot of Picnik application" title="The interface of Picnik is intuitive and well-crafted " /></p>

<p>Notice the five simple tabs along the top, which organize various aspects of image-editing. It's intuitive to jump from one tab to the next, as it represents the natural progression when editing images.</p>

<p>Compare that to Sumopaint (or Photoshop, for example):</p>

<p><img src="http://matthom.com/images/m1/1849.png" width="670" height="399" alt="Screenshot of Sumopaint application" title="The interface of Sumopaint is old-school and unfriendly" /></p>

<p>Notice the traditional ("File," "Edit," etc) menu options, and technical-looking palette interface. This is how computer software has been designed since the early days. Isn't it about time we take another approach?</p>

<p>Picnik is moving away from the "old school" interface approach, and it's a breath of fresh air.</p>

<h2>In your face</h2>

<p>Picnik excels because it puts the main tasks right in front of you. You don't have to sift through long menu lists of technical-sounding options.</p>

<p>Picnik's approach is beautiful, clean, and connects instantly with users:</p>

<p><img src="http://matthom.com/images/m1/1850.png" width="765" height="657" alt="Screenshot of Picnik application" title="The main tasks right in front of you" /></p>

<p>With traditional image-editing applications, it's difficult to figure out how to do common tasks, like crop, resize, rotate, etc. Picnik makes this more than obvious:</p>

<p><img src="http://matthom.com/images/m1/1851.png" width="699" height="389" alt="Screenshot of Picnik application" title="The main tasks right in front of you" /></p>

<h2>Performance</h2>

<p>Since Picnik is a browser-only application, it opens very fast, as long as you are on a decent internet connection (Flash can sometimes take a while to load). Regardless of any delays, it beats opening/closing Photoshop any day.</p>

<p>I've never <em>breezed through</em> an image-editing application quite like I do with Picnik. I get in, get my task done, and get out.</p>

<h2>Extending Picnik</h2>

<p>I've love to see a Picnik iPhone/iPad application - this would quickly become the easiest way to edit images across all web-enabled devices, in today's post-Photoshop/desktop world.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Optimizing sites for mobile devices using PHP]]></title>
			<link>http://matthom.com/archive/2010/08/19/optimizing-sites-for-mobile-devices-using-php</link>
			<category>Tutorials, Programming, Development</category>
			<pubDate>Thu, 19 Aug 2010 15:30:51 -0700</pubDate>

			<description>

				<![CDATA[

					<p>I recently had to create a mobile-optimized website, so I thought I'd jot my steps down here, for anyone else jumping into mobile web development, and looking for a quick "get off the ground" tutorial. I won't go into specific formatting and styles used to design the mobile site - only the basic setup using PHP.</p>

<p>The goals were this:</p>

<ol>
<li>Create iOS/Android/Blackberry friendly mobile interface.</li>
<li>Redirect mobile users accessing the desktop/full version of the site.</li>
</ol>

<h2>Step 1: Check if user is already in mobile web directory</h2>

<p>It's often useful to establish a distinct mobile URL, so users can opt to visit it while on a mobile device.</p>

<p>Often this just means appending <code>/m</code> to the <strong>end of the URL</strong>.</p>

<p>Have your system capture anyone accessing the mobile URL, and define a variable:</p>

<p><code>define('MOBILE', true);</code></p>

<p>Call it whatever you want - this is just an indicator so we know the user is already in the mobile section.</p>

<h2>Step 2: Redirect to mobile section if not already</h2>

<p>Next, we need to check if the user agent (the browser and operating system) accessing the site is a mobile one. There's a handy <a href="http://detectmobilebrowsers.mobi/">PHP function</a> that performs all the work. You just need to capture the return value:</p>

<p><code>$is_mobile_device = mobile_device_detect();</code></p>

<p><code>$is_mobile_device</code> will then look something like this:</p>

<pre>
Array (
  [0] => 1
  [1] => Apple
)
</pre>

<p>or:</p>

<pre>
Array (
  [0] => 1
  [1] => Android
)
</pre>

<p>If the user is <strong>not</strong> already in the mobile web directory, and it's a mobile device, redirect to the mobile web directory:</p>

<pre>
if ( !defined('MOBILE') && is_array($is_mobile_device) && $is_mobile_device[0] ) {
  header('Location: m/index.php');
  exit;
}
</pre>

<p>This simply checks if the user is mobile, but <strong>not</strong> in the mobile web directory, and then redirects them if so.</p>

<p><strong>Note:</strong> It's useful to allow the desktop/full version of the site to load on a mobile device, if the user chooses to. So your site scripts will have to conduct the redirect only at the "index" level, for example - then if the user chooses to view the desktop version while mobile, they can load the actual page, which could be something like <code>main.php</code>.</p>

<p>So, the above redirect code would occur in <code>index.php</code>, and the actual desktop version of the site would load from <code>main.php</code>. This way it's not going in an infinite loop.</p>

<h2>Step 3: Set variable for use in HTML</h2>

<p>Your HTML templates may need to hide or show content depending on what version is being viewed (mobile or desktop).</p>

<p>Here we declare a smarty variable which can be used in the HTML:</p>

<pre>
$is_mobile_device = mobile_device_detect();

if ( !defined('MOBILE') && is_array($is_mobile_device) && $is_mobile_device[0] ) {
  $smarty->assign("is_mobile_device", true);
}
else {
  $smarty->assign("is_mobile_device", false);
}
</pre>

<p>This is the exact same test as we did for the redirect, but here we define a variable depending on the outcome.</p>

<p>In our HTML, we simply run tests as such:</p>

<pre>
{if $is_mobile_device}
  <em>some HTML content</em>
{else}
  <em>some other HTML content</em>
{/if}
</pre>

<h2>Step 4: Set viewport width and scale</h2>

<p>This step automatically resizes your content when viewed on a mobile device. For example, on the iPhone and iPad, a standard site will load as it would appear on a very tiny monitor:</p>

<p><img src="http://matthom.com/images/m1/1846.png" width="320" height="480" alt="Screenshot of website on iPhone" title="iPhone standard website" /></p>

<p>By setting the viewport, you zoom everything in to a more <em>snug</em> level, so the user doesn't have to zoom just to interact with your site.</p>

<p>Place this in the <code>&lt;head&gt;</code> of your HTML document:</p>

<p><code>&lt;meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;" /&gt;</code></p>

<p>This will automatically zoom-in to the width of the device:</p>

<p><img src="http://matthom.com/images/m1/1847.png" width="320" height="480" alt="Screenshot of website on iPhone" title="iPhone optimized website after adjusting viewport" /></p>

<p>Feel free to adjust the <code>maximum-scale</code> if you want to allow users to zoom-in even further. </p>

<h2>Step 5: Toggle styles for iPhone/iPad</h2>

<p>It's probably best to keep a global mobile stylesheet that affects <em>all</em> mobile devices, but often it's useful to target specific devices.</p>

<p>If you're using a single external (or embedded) stylesheet:</p>

<pre>
/* iPhone-only styles */
@media only screen and (max-device-width: 480px) {

  #example {
    width: 200px;
  }

}

/* iPad-only styles */
@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {

  #example {
    width: 500px;
  }

}
</pre>

<p>For linked stylesheets:</p>

<pre>
&lt;link media="only screen and (max-device-width: 480px)" rel="stylesheet" type="text/css" href="iphone.css" /&gt;
</pre>

<pre>
&lt;link media="only screen and (min-device-width: 768px) and (max-device-width: 1024px)" rel="stylesheet" type="text/css" href="ipad.css" /&gt;
</pre>

<h2>Wrap-up</h2>

<p>Again, this is just to get you off the ground. There are loads of new possibilities when you design for the iPhone and iPad, namely <a href="http://css-infos.net/properties/webkit.php">webkit CSS properties</a>.</p>

<p>If you have suggestions or improvements on making this migration even easier, please let me know.</p>

					
				]]>

			</description>

		</item>

		
				</channel>

			</rss>

			