<?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 2012, 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[Write anywhere: synchronous notepad ideas]]></title>
			<link>http://matthom.com/archive/2012/02/04/write-anywhere-synchronous-notepad-ideas</link>
			<category>Software</category>
			<pubDate>Sat, 04 Feb 2012 13:20:13 -0800</pubDate>

			<description>

				<![CDATA[

					<p>I am looking for a way to compose blog posts (or any kind of written thoughts) with changes instantly carried across to any internet-enabled device.</p>

<p>That includes:</p>

<ul>
<li>Desktop computers</li>
<li>Tablets</li>
<li>Smartphones and smartpods (iPod Touch, specifically)</li>
</ul>

<p>I never know where the urge to write will strike me, so I need immediate access to all of my writings, and the ability to continue writing on whatever device or screen I am currently looking at.</p>

<p>In my experience I have found this to be not as easy as it sounds.</p>

<p>I have tried the following approaches:</p>

<ol>
<li>Google Docs</li>
<li>iOS Notepad</li>
</ol>

<h2>Google Docs</h2>

<p>This is arguably the most popular approach, as Google has made their Docs interface work on almost every possible operating system. They even allow editing your docs from any device, which is a tremendously easy way to keep your documents in-sync across multiple computers/devices.</p>

<p>I have used this approach for years, and in fact Google Docs is still where I compose all of my blog posts before they get published to this site.</p>

<p>The drawbacks (and the reason I am looking for a better solution) is Google Docs a less than ideal experience on iOS. You can edit your documents directly through Safari, but it becomes difficult to type and it feels very unpolished. I often get frustrated with the little intricate bugs here and there, and give up and switch to Notepad on iOS.</p>

<h2>iOS Notepad</h2>

<p>What makes Notepad better than Google Docs on iOS is that Notepad is a native application, and it feels more responsive and less buggy. I find I can type much easier in Notepad, and still scroll around, copy/paste text, etc - without anything crashing or acting weird.</p>

<p>Notepad also offers a nice feature: the notes you write can be immediately backed-up to your Gmail account and appear under the "Notes" label in Gmail. But the main drawback is you can't <em>edit</em> those "emails" through any interface other than Notepad on iOS. They appear only as some sort of draft in a read-only state.</p>

<h2>The core problem</h2>

<p>The core problem seems to be that most desktop browser or native apps don't port well to smartphone apps, and vice-versa. The companies are usually more focused on one or two platforms, as opposed to every possible operating system out there.</p>

<p>So although the experience is nice on one or two platforms, the rest of the time you need access to your data (through other operating systems), it doesn't exist or it's a less-polished experience.</p>

<h2>Other solutions/ideas</h2>

<p>Since the above two approaches have their drawbacks, I'd like to try another approach but I am not sure if these ideas will be any better:</p>

<ul>
<li>Dropbox</li>
<li>GitHub</li>
<li>Simplenote</li>
</ul>

<h2>Dropbox</h2>

<p>I thought of maybe creating a simple text file in Dropbox, then editing it from any device, but at the moment I can't seem to edit documents via Dropbox on iOS, only view them.</p>

<h2>GitHub</h2>

<p>Since I already have Git set up on just about every computer I use, I could push and pull a text document every time I sat down to write. Trouble is with iOS - there are SSH apps I can use but I am not sure how the experience of typing a long article via Nano (or some other command-line text editor) would be.</p>

<h2>Simplenote</h2>

<p><a href="http://www.simplenoteapp.com/">Simplenote</a> seems like the exact concept I am looking for, except for one thing - who are these guys, and can I trust all of my public and private notes to reside on their servers?</p>

<p>I almost feel like I want a more homegrown solution with easier access to my data, and a sense of security/privacy.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[RSS unread counts]]></title>
			<link>http://matthom.com/archive/2012/01/31/rss-unread-counts</link>
			<category>RSS</category>
			<pubDate>Tue, 31 Jan 2012 07:47:52 -0800</pubDate>

			<description>

				<![CDATA[

					<p><img src="http://matthom.com/images/m1/2545.jpg" width="251" height="238" alt="Screenshot of RSS reader" title="RSS unread counts are pointless" /></p>

<p>I find RSS unread counts to be utterly pointless. The problem is I don't think of RSS feeds and their individual items as something that I need to be alerted to (by showing me how many I have yet to read/open).</p>

<p>For some, it's an unnecessary source of stress. Telling people they have 216 unread items only makes them feel like they are not being productive enough, and can't keep up with it. Like they are somehow missing something important.</p>

<p>So for me, I try to consider RSS feeds like any other news or social network stream. That is, whatever I happen to catch when I devote time to it, then that's what I catch. Everything else can just disappear into the void of "old news." I really don't need a giant backlog of RSS feed items to catch up on, just like I don't need to read yesterday's newspaper, just because I wasn't able to (yesterday).</p>

<p>So if RSS readers just showed me "all items" without any indication if I opened/read it (usually it's bold and a white background, if unread), that would be preferred.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Using version control even as lone developer ]]></title>
			<link>http://matthom.com/archive/2012/01/25/using-version-control-even-as-lone-developer</link>
			<category>Programming</category>
			<pubDate>Wed, 25 Jan 2012 10:22:08 -0800</pubDate>

			<description>

				<![CDATA[

					<p><a href="http://matthom.com/archive/2011/12/30/connecting-to-multiple-github-accounts-from-the-same-server">I recently mentioned</a> how to set up your server for multiple Github.com accounts, allowing you to work on development projects for various facets of your life (work, personal, etc) all on the same server with Github as your master source repository.</p>

<p>Whereas it makes perfect sense to use Github for projects that have <em>multiple</em> developers contributing to the code, you may wonder what benefit it has for personal projects with only a single developer (you).</p>

<p>It dawned on me that despite the fact that I am the only developer for my personal projects, using Github is still a tremendous time saver, and it provides a sense of clarity that the old approach could not.</p>

<p>The old approach for me was developing directly on my external server by connecting via FTP and saving changes directly on the server over the old version of the file.</p>

<p>This has numerous drawbacks:</p>

<ol>
<li>Changes are saved over the old version of the file, which can be disastrous if you save a file by mistake. You better hope you have the file open in a text editor where you can "undo" the changes. Otherwise it's gone. </li>
<li>Similar to #1, there is no history of changes made to a particular file - there is just <em>one</em> version - the latest. If you want to see/restore old versions of the file, you had better be used to making routine backups of your files, which can be a laborious process if you manage dozens of sites/applications.</li>
<li>Modifying files from an external server can cause constant lags when saving, as every time you save it has to re-upload the file to the server. It may only be a few seconds, give or take, but multiply that by the hundreds of saves you'll likely perform during any given timeframe of dedicated work, and your lost productivity will start to add up.</li>
<li>You need an internet/network connection just to develop.</li>
<li>Your site folders must be copied to every server you want to mirror/clone your application. Changes made to any instance are not synced to other instances, causing a mixture of files that have different changes made. Which version is correct?</li>
</ol>

<p>These are just a <em>few</em> of the drawbacks of developing directly on the server. (If these are not enough to re-consider your development approach, you have some serious organizational issues, and clearly do not care how you spend your time.)</p>

<p>Github, on the other hand, solves <em>all</em> of these problems, and even includes other time-saving features as well.</p>

<p>With Github I can keep my true master copies in a single repository, and simply clone a copy to each server I am developing on. I never have to establish a single server as having the central copies of my files. Instead, each server of mine becomes a <em>client of Github</em>.</p>

<p>Being new to Github, this was the first concept I had to wrap my head around. Once it made perfect sense, my life became so much easier.</p>

<p>Most importantly, you gain a sense of clarity by being able to officially "commit" file changes which provides you with the sense that your work is being tracked and backed-up properly.</p>

<p>So, even as the lone developer for a project, you should consider using collaborative source control.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Spamming your best customers]]></title>
			<link>http://matthom.com/archive/2012/01/19/spamming-your-best-customers</link>
			<category>Spam</category>
			<pubDate>Thu, 19 Jan 2012 14:19:06 -0800</pubDate>

			<description>

				<![CDATA[

					<p><a href="http://shawnblanc.net/2012/01/spaghetti-spam/">True to this point</a>, I get an email like this about twice a week, and always choose "Unsubscribe and report spam," yet it seems to have no effect.</p>

<p><img src="http://matthom.com/images/m1/2543.png" width="781" height="432" alt="Screenshot of Gmail message" title="Capital One spam" /></p>

<p>I have been a loyal Capital One credit card user (always pay my bill on time) for at least a decade now, and yet I receive constant email and postal mail spam from them.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Generic social networking API]]></title>
			<link>http://matthom.com/archive/2012/01/18/generic-social-networking-api</link>
			<category>Programming, Social Networks</category>
			<pubDate>Wed, 18 Jan 2012 10:44:33 -0800</pubDate>

			<description>

				<![CDATA[

					<p>I thought <a href="http://blog.programmableweb.com/2012/01/17/do-we-need-a-generic-social-networking-api/">this post</a> was interesting, and kind of along the lines of <a href="http://matthom.com/archive/2012/01/07/more-about-social-network-fragmentation">social network fragmentation</a>. In this case, it's social network <em>API</em> fragmentation, causing developers to learn a new set of syntax and logic for every social network they want to push to or pull data from.</p>

<p>I've written connections to various social network services to either pull or push data, and I agree that it's like re-creating the wheel for each network. Worse yet, if you use an external library that encapsulates all functionality, you have to learn the syntax for that as well, and then you never truly know what's going on behind the scenes (problems always come up, despite the original developer's best efforts to minimize them).</p>

<p>A generic/global social network API could be nice, but I still feel it would require learning the syntax and logic of the mashed-together object, further distancing you from the actual API implementation that is provided by each social network.</p>

<p>In the end, I don't know a better solution, unless the companies behind each social network come up with some sort of standard that provides more data than RSS, and allows you to also post data.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[JavaScript event propagation and jQuery]]></title>
			<link>http://matthom.com/archive/2012/01/11/javascript-event-propagation-and-jquery</link>
			<category>Programming</category>
			<pubDate>Wed, 11 Jan 2012 11:11:06 -0800</pubDate>

			<description>

				<![CDATA[

					<p>Let's say you have an HTML element like this:</p>

<pre>
&lt;div id="div1" onmouseover="myfunction(event, this.id);" onmouseout="myfunction(event, this.id);"&gt;
  &lt;div id="div2"&gt;
    &lt;div id="div3"&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
</pre>

<p>Notice the JavaScript events being captured on the outermost <code>div</code>: <code>onmouseover</code> and <code>onmouseout</code>, which both call <code>myfunction()</code>.</p>

<p>Assuming all of the divs are of equal width and height, essentially they are "stacked" when displayed. There is no way to decipher the top element from the middle or bottom ones, since they are all flush with each other.</p>

<p>So when you hover over the top element, you are also hovering over the middle and bottom elements at the same time. Except, JavaScript event order dictates specifically when each element considers a mouse over as occurring (along with other events like mouse out, click, etc).</p>

<p>To be more precise, certain browsers consider the <strong>outermost</strong> element as the first one to react to the mouse being over it. Then it immediately cascades down into each sub-element and  triggers the mouse over event. Other browsers consider the <strong>innermost</strong> element as the first to react to the mouse over event, and then proceeds upward to the outermost element.</p>

<p>The important thing to note (which was the root of a recent problem of mine) is that once the next element (in the stack) reacts to the event, the previous one also reacts to another event  (mouse out) <strong>even though you didn't physically move the mouse away from the elements</strong>.</p>

<p>So the effect was multiple/repeat mouse over/out actions running, causing a seriously buggy-looking interface, and a maddening development experience.</p>

<h2>The solution</h2>

<p>The solution to this problem is one of two things:</p>

<ol>
<li>Learn how to properly trap and stop event propagation.</li>
<li>Use jQuery (which does #1 for you).</li>
</ol>

<p>Option #1 can get pretty messy and time-consuming, so I've chosen option #2 as it saves me a lot of time.</p>

<p>With jQuery it's as simple as <strong>binding</strong> the desired events to the element, and propagation is handled the way you'd like.</p>

<pre>
$("#div1").bind(
  "mouseenter mouseleave",
  function (event) {
    myfunction(event, $(this).id);
  }
);
</pre>

<p>Instead of <code>mouseover</code> and <code>mouseout</code>, we use the jQuery-specific <code>mouseenter</code> and <code>mouseleave</code> which handle propagation correctly.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[More about social network fragmentation]]></title>
			<link>http://matthom.com/archive/2012/01/07/more-about-social-network-fragmentation</link>
			<category>Social Networks, Internet</category>
			<pubDate>Sat, 07 Jan 2012 09:55:56 -0800</pubDate>

			<description>

				<![CDATA[

					<p>I've been thinking more about <a href="http://matthom.com/archive/2011/12/06/social-network-fragmentation">social network fragmentation</a>.</p>

<p>The problem/question is - how does one effectively manage their social presence online without having to decide which vendor to be locked-in to, and still be able to discover new networks without completely alienating their core group of contacts?</p>

<p>Personally, I hate that I can't leave certain social networks simply because my core group of contacts are there. Why is our social web presence dependent on which vendor we choose to maintain our profiles? Shouldn't there be a more open format/protocol to publish a social feed, where anyone can easily connect to you outside of a specific vendor's idea of what the social web should be?</p>

<p>Social networks don't speak to each other (at least, not in a way that solves the fragmentation problem), so they are essentially little islands of functionality conjured up by the creator(s). We are limited to what the creators believe a social network should look like, and how it should behave.</p>

<p>What if there was a way to remain social but not be a part of any particular social network? To have a public profile but not require an account, or web server? To allow others to easily connect with you, without looking up your old email address, or hunting you down some other way?</p>

<p>Let's face it - the larger Google, Facebook, and even Twitter become, the more it's evident they are companies concerned with their bottom line, not with the growth and expansion of human relations through what is essentially still an open medium, the internet. They are simply trying to monetize their social network implementation (aka business).</p>

<p>What's the answer? Is there a better way?</p>

<p><a href="http://matthom.com/archive/2009/06/16/opera-unite-the-open-web-redefined">Opera Unite</a> is kind of thinking along these lines, but it hasn't really taken off since it's release almost three years ago. The concept is to be social on the web, but not be a part of any social network. The problem is it requires using the Opera web browser, and it communicates with an Opera-controlled web server, meaning there is still vendor lock-in involved. What if Opera goes out of business? What happens to my social data?</p>

<p>Unfortunately, pretty much any channel that requires information passed around needs a centralized web server to handle this, and how do you achieve that without being locked-in to a certain company? Someone has to provide the infrastructure and resources.</p>

<p>The web may be open, but it's still run by corporations, you still need an internet connection and a device, which all cost money.</p>

<p>I guess I am getting too abstract here.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Connecting to multiple GitHub accounts on Windows]]></title>
			<link>http://matthom.com/archive/2012/01/04/connecting-to-multiple-github-accounts-on-windows</link>
			<category>Technical</category>
			<pubDate>Wed, 04 Jan 2012 09:34:07 -0800</pubDate>

			<description>

				<![CDATA[

					<p><a href="http://matthom.com/archive/2011/12/30/connecting-to-multiple-github-accounts-from-the-same-server">I recently mentioned</a> how to use multiple SSH keys with GitHub, but that was for Linux servers only. I also use Git on Windows, and need to work with my repositories (from multiple GitHub accounts) there.</p>

<p>After my initial trial-and-error, I have yet to find a seamless solution, but I'll post what I've done so far.</p>

<p>I currently use <a href="http://code.google.com/p/tortoisegit/downloads/list">TortoiseGit</a>, and Pageant to store my SSH keys. I chose "TortoisePLink" during the SSH setup when installing TortoiseGit.</p>

<p>Pageant seems pretty straight-forward. You add SSH keys to it, and somehow it communicates with TortoiseGit when accessing GitHub.com.</p>

<p>The problem is when you need to access multiple GitHub.com accounts. You can add multiple SSH keys to Pageant, but it only seems to use the first one listed (the one at the very top):</p>

<p><img src="http://matthom.com/images/m1/2538.jpg" width="530" height="379" alt="Screenshot of Pageant window" title="Pageant SSH keys" /></p>

<p>I can't figure out a way to have it use a different key from Pageant depending on the TortoiseGit settings (for each local working directory).</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Connecting to multiple GitHub accounts from the same server]]></title>
			<link>http://matthom.com/archive/2011/12/30/connecting-to-multiple-github-accounts-from-the-same-server</link>
			<category>Technical</category>
			<pubDate>Fri, 30 Dec 2011 08:49:25 -0800</pubDate>

			<description>

				<![CDATA[

					<p>Here's my dilemma:</p>

<p>I have two GitHub.com accounts - one for work projects, and another for personal projects.</p>

<p>I use the same servers to develop/deploy these projects, albeit in separate directories.</p>

<p>I need to be able to authorize myself (via SSH keys) to either GitHub.com account (and repositories within) on a per-directory basis, all on the same server.</p>

<p>It seems that the local git client wants to use the same SSH key every time it authorizes access to GitHub.com, rather than alternating it depending on the directory I am working in.</p>

<p>For example, here is an illustration of the setup on my server:</p>

<pre>
root/
  work-project/
  personal-project/
</pre>

<p>I want <code>work-project</code> to authorize to GitHub.com account A. I want <code>personal-project</code> to authorize to GitHub.com account B.</p>

<h2>Multiple SSH keys</h2>

<p>I've already set up multiple SSH keys - one for each GitHub.com account. Example:</p>

<pre>
.ssh/
  work_rsa
  personal_rsa
</pre>

<p>Both keys have been added to their appropriate GitHub.com accounts.</p>

<p>I've also already created a <code>config</code> file inside the <code>.ssh/</code> directory with the following contents:</p>

<pre>
Host github.com
    Hostname github.com
    User git
    IdentityFile ~/.ssh/work_rsa
    
Host github-matthom
    Hostname github.com
    User git
    IdentityFile ~/.ssh/personal_rsa
</pre>

<p>I've also ran these commands:</p>

<pre>
ssh-add ~/.ssh/work_rsa
ssh-add ~/.ssh/personal_rsa
</pre>

<p>This should allow both SSH keys to be used, which it does, but only partially.</p>

<p>It seems like it only honors the most recent <code>ssh-add</code> command. In other words, as long as I run one of the above commands, I am then able to authorize to that GitHub.com account <em>from that point forward</em>. But as soon as I run the command again (for a different account), it then always uses that account to authorize. Therefore repo access attempts fail because it can't authorize the other user.</p>

<p><img src="http://matthom.com/images/m1/2537.jpg" width="524" height="89" alt="Screenshot of command prompt" title="GitHub.com authorization fails" /></p>

<p>I can't figure out how to have it automatically know which SSH key to use based on the directory I am working in (since each directory is associated with a different GitHub.com account/repository).</p>

<h2>UPDATE (12/31/2011)</h2>

<p>I seem to have figured it out, thanks to <a href="http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/">this site</a>.</p>

<p>I re-configured the names of my SSH <code>id_rsa</code> files:</p>

<pre>
.ssh/
  id_rsa_work
  id_rsa_personal
</pre>

<p>Next, I updated the <code>.ssh/config</code> file to reference the new file names:</p>

<pre>
Host github.com
    Hostname github.com
    User git
    IdentityFile ~/.ssh/id_rsa_work
    
Host github-personal
    Hostname github.com
    User git
    IdentityFile ~/.ssh/id_rsa_personal
</pre>

<p>Notice, in particular, the second <code>Host</code> listed:</p>

<p><code>Host github-personal</code></p>

<p>This matches the file name <code>id_rsa_personal</code>. This also matches the actual GitHub.com account name (Note: "personal" is just used as an example, and is not my actual GitHub.com account name). So you would include your alternate GitHub.com account name here, as such:</p>

<pre>
Host github-ACCOUNT
    Hostname github.com
    User git
    IdentityFile ~/.ssh/id_rsa_ACCOUNT
</pre>

<p>Next, make sure the directory you create on your server is pointing to the appropriate GitHub.com account:</p>

<p><code>git remote add origin git@github-ACCOUNT:ACCOUNT/test.git</code></p>

<p>Again, replace "ACCOUNT" above with your actual GitHub.com account name, which should match the same name you referenced in the <code>config</code> file.</p>

<p>Now you can <code>pull</code> or <code>push</code> to that GitHub.com repository, and it will always use the correct SSH key.</p>

<p>I don't think you need to run <code>ssh-add ...</code> anymore, but it doesn't hurt to do this as you can save time from having to re-enter your SSH key password repeatedly.</p>

<p>Let me know if anyone notices any errors in my explanation, or easier ways to handle all this.</p>

<h2>UPDATE (01/03/2012)</h2>

<p>I forgot to mention I also had to add a <code>.bash_profile</code> file at the root of my server, containing these contents:</p>

<pre>
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
    eval `$SSHAGENT $SSHAGENTARGS`
    trap "kill $SSH_AGENT_PID" 0
fi
</pre>

<p>Otherwise I could never run <code>ssh-add</code>.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[TwitWipe - wipe out past tweets and start fresh]]></title>
			<link>http://matthom.com/archive/2011/12/23/twitwipe-wipe-out-past-tweets-and-start-fresh</link>
			<category>Social Networks</category>
			<pubDate>Fri, 23 Dec 2011 16:17:29 -0800</pubDate>

			<description>

				<![CDATA[

					<p>I like the idea of wiping the past clean and starting fresh (of course, as long as I have everything backed-up somewhere else). Who wouldn't want to clear out embarrassing or obnoxious drunk tweets from years ago sitting in Twitter's database, and possibly Google's search index?</p>

<p>So the concept of <a href="http://twitwipe.com">TwitWipe</a> (which is horribly named by the way - sounds like something you do in the bathroom) sounds interesting.</p>

<p>From the service:</p>

<blockquote>
  <p>"Why the fuck would I want to do that? -- TwitWipe is a tool to wipe or delete all your tweets in one go. You may need to do this to start over, to clean it out before handing the account over to someone else, or maybe you've just realised how shitty your tweets are."</p>
</blockquote>

<p>Also:</p>

<blockquote>
  <p>"How long does it take? -- A FUCKING LONG TIME. It is NOT instant. It will take a while. Don't tell me it's stuck at 0, because that happens and all you gotta do is WAIT."</p>
</blockquote>

<p>Definitely charming answers, and possibly a very useful service.</p>

<p>– Via <a href="http://mashable.com/2011/12/23/twitwipe-gives-you-a-fresh-start-by-deleting-all-your-tweets-video">Mashable</a>.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Automatic sharing]]></title>
			<link>http://matthom.com/archive/2011/12/23/automatic-sharing</link>
			<category>Social Networks</category>
			<pubDate>Fri, 23 Dec 2011 07:00:05 -0800</pubDate>

			<description>

				<![CDATA[

					<p>It seems we're moving towards a world of seamless, transparent social sharing, where updates happen in the background as a result of our actions, as opposed to us manually triggering updates to occur.</p>

<p><a href="http://matthom.com/archive/2011/05/24/the-next-web-passive-social">I talked a little about</a> the web becoming more passive, in that the more devices and applications that connect to the web become available, the less effort it requires of us to interact with the web. Eventually the web will be omnipresent - instantly available for us to interact without retreating to a specific device or portal to initiate that interaction. As the air is all around us, so will be the web.</p>

<p>We're already seeing some of this happening with automatic sharing, such as how <a href="http://www.spotify.com/us/about/social/">Spotify shares songs</a> you are hearing to your Facebook stream without you manually initiating the update. It just happens in the background.</p>

<p><a href="http://mashable.com/2011/12/21/digg-facebook/">Digg is also starting</a> to share links to Facebook automatically.</p>

<p>This type of fluid sharing removes the barrier of always having to initiate sharing manually, and allows us to interact with our web and social world at the same time.</p>

<p>It also requires a little more awareness on our part to which services are automatically sharing, and making sure everything we do online is something we don't mind our social networks seeing right away. If we're careless, we could end up sharing some embarrassing or sensitive information.</p>

<p>Some may think automatic sharing is too intrusive, and long for the days of private online activity, but I think we'll get used to this new approach as it allows us to merge our web and social worlds without additional effort and minimal compromise.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Thoughts on Dexter season 6 finale]]></title>
			<link>http://matthom.com/archive/2011/12/20/thoughts-on-dexter-season-6-finale</link>
			<category>Reviews, Television</category>
			<pubDate>Tue, 20 Dec 2011 10:50:33 -0800</pubDate>

			<description>

				<![CDATA[

					<p>I felt like the religion/faith aspect of season 6 was interesting, as it's something we haven't seen Dexter consider much before. However, the entire season lacked the intense drama and moments that I've been accustomed to from previous seasons.</p>

<p>I felt a lot of it was just too predictable or impossible (plot-wise). For example, somehow Dexter never gets tired and is always in the right place at the right time. Everything (information, clues, etc) just came to him, instead of him working hard to get it. Also, the human side of Dexter seemed less-so this season.</p>

<p>I find it funny how Harrison's babysitter works practically around the clock. Dexter goes to work all day, then stays out most of the night. The babysitter is never tired or irritated with Dexter. That is some level of patience she has. Dexter must be paying her well. The babysitter is practically Harrison's mother at this point. Dexter seems to only be a father when it's convenient for him.</p>

<h2>--</h2>

<p>And then the finale. Here are my scattered thoughts:</p>

<p>Only one cop staged on the roof of the building? He doesn't respond right away during the first roll-call, but no one seems to bat an eye. You would think if the first roll-call receives a delayed response, there could be a problem? Maybe send someone up to make sure everything is okay?</p>

<p>Lots of gaps. How does Dexter know Travis is on the roof? How on Earth does he get around town so fast? How does Dexter get Travis from the roof to the church without being noticed (when there were police staged all around that building)?</p>

<p>The "sleeper" character could have been the therapist for Deb, as she convinced Deb she could be in love romantically with Dexter. I know Deb has seen a lot, but I don't (for Fuck's sake, as Deb would say) believe she thinks she loves Dexter romantically. But maybe the pressure of being lieutenant had something to do with that.</p>

<p>Since Deb's guard is down by being in love with Dexter, the final blow is not as bad as Dexter being caught by authorities, even though Deb is very high authority. Since Deb has emotional ties to Dexter, this is not a cop catching Dexter, but a family member. I would have rather Doaks, Lundy, Quinn, or Jimmy Smits help catch (and prosecute) Dexter, but now that Debra has, you gotta wonder what angle the writers will take with this.</p>

<p>Deb is either going to blame herself for constantly falling in love with serial killers and fuck-ups, and possibly become suicidal... or perhaps side with Dexter and understand what he does (as Lumen did).</p>

<p>Perhaps Dexter's "dark passenger" is just what Dex and Deb need to become closer, on a level no viewer could foresee happening.</p>

<p>I guess I have no choice but to anticipate season 7, but here's hoping it's vastly different from the usual Dexter routine.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Avoiding top search results]]></title>
			<link>http://matthom.com/archive/2011/12/16/avoiding-top-search-results</link>
			<category>Search</category>
			<pubDate>Fri, 16 Dec 2011 09:38:07 -0800</pubDate>

			<description>

				<![CDATA[

					<p>I understand SEO, as a practice, is a good idea for any business, but a lot times I avoid the top sites because I know they'll be the most spammy and ad-infested.</p>

<p>A good example is when I am searching for lyrics to a song. At least the first two pages of results are filled with noisy, ad-infested sites that make it extremely difficult to view the actual content I want to see. But if I navigate to page three and beyond, I find some very minimalistic sites that quickly display the content without bombarding me with pop-ups and other such nonsense.</p>

<p>In this manner I am purposely looking for <em>less</em>-optimized sites because I know they'll be more reader-friendly.</p>

<p>It's gotten to the point where I almost never trust the top sites anymore.</p>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Humorous programming comments]]></title>
			<link>http://matthom.com/archive/2011/12/15/humorous-programming-comments</link>
			<category>Programming, Humor</category>
			<pubDate>Thu, 15 Dec 2011 09:55:50 -0800</pubDate>

			<description>

				<![CDATA[

					<p>Over the years I've seen lots of humorous programming comments, often left by past or current co-workers. As all programmers know, leaving comments is critical for others (and even yourself) to understand what a certain script or line of code is doing.</p>

<p>Sometimes even the most organized and humorless programmer (I'm thinking dry, nerd personality) feels like being sarcastic or witty at times.</p>

<p>I've seen anything from a few words to paragraphs of off-beat ramblings or humor. One guy I worked with wrote a few paragraphs to explain the exact moment he thought of the following code/logic. It started along the lines of, <em>"I am eating a pot-pie and sipping a Pepsi a few days before Christmas..."</em></p>

<p>Some comments are not even intended to be funny, but read out of context or by someone else trying to figure things out, can be very funny.</p>

<p>I started pooling some of the shorter comments together for a comprehensive list. If you have others, please share.</p>

<pre>
// gather important data

// 2do

// it should never get here!

// not sure what is going on here

// Well, this is weird.

// Shouldn't happen, but...

// do something else here?

// oops

// nothing happening here, just let it pass (symbolic, eh?)
</pre>

					
				]]>

			</description>

		</item>

		
		<item>

			<title><![CDATA[Spotify playlist mania]]></title>
			<link>http://matthom.com/archive/2011/12/14/spotify-playlist-mania</link>
			<category>Software, Music</category>
			<pubDate>Wed, 14 Dec 2011 10:22:53 -0800</pubDate>

			<description>

				<![CDATA[

					<p><img src="http://matthom.com/images/m1/2533.png" width="231" height="430" alt="Screenshot of Spotify playlists" title="My current Spotify playlists" /></p>

<p>Much like my <a href="http://matthom.com/archive/2011/11/22/blog-categories">indecision over blog categories</a>, I have the same issue when organizing my music into playlists.</p>

<p>My problem is that I have trouble sorting (in my head) how I prefer to listen to current favorites, and past favorites, while maintaining a genre separation for different moods.</p>

<p>For example, I like classical music when programming, but not when working out. I also don't need to hear a favorite song from months ago all the time, but I still want to revisit it occasionally to recall the time and place (in my life).</p>

<p>So I've established playlists that capture <strong>when</strong> I first heard (or started liking) a song. I organize them into month/year playlist names. Anything I like that month goes into that playlist.</p>

<p>Yet some of those songs could also fit into my "workout" playlist, or my (yet to be created) "programming" playlist.</p>

<p>So there's some cross-over that I don't know how to handle.</p>

<p>Then there's some days that I create completely customized playlists out of the blue.</p>

<p>Maybe when Spotify includes "smart playlists" (like iTunes does) will this issue be more manageable.</p>

					
				]]>

			</description>

		</item>

		
				</channel>

			</rss>

			
