<?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>Red Sweater Blog &#187; Rant</title>
	<atom:link href="http://www.red-sweater.com/blog/category/rant/feed" rel="self" type="application/rss+xml" />
	<link>http://www.red-sweater.com/blog</link>
	<description>Mac &#38; Technology Writings by Daniel Jalkut</description>
	<lastBuildDate>Tue, 17 Jan 2012 22:03:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>You Sense It Or You Don&#8217;t</title>
		<link>http://www.red-sweater.com/blog/2280/you-sense-it-or-you-dont</link>
		<comments>http://www.red-sweater.com/blog/2280/you-sense-it-or-you-dont#comments</comments>
		<pubDate>Thu, 15 Dec 2011 19:42:23 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=2280</guid>
		<description><![CDATA[I enjoyed Joshua Topolsky&#8217;s rebuttal to the high-fives exchanged between John Gruber and MG Siegler about the Galaxy Nexus allegedly being less polished than iPhones are. I didn&#8217;t pick up on some of the cringe that Joshua pointed out, in particular the implication that rich people who have &#8220;nicer&#8221; stuff will always enjoy some impossible [...]]]></description>
			<content:encoded><![CDATA[<p>I enjoyed <a href="http://www.theverge.com/2011/12/15/2638611/horseshit">Joshua Topolsky&#8217;s rebuttal</a> to the high-fives exchanged between <a href="http://daringfireball.net/linked/2011/12/14/siegler">John Gruber</a> and <a href="http://techcrunch.com/2011/12/14/iphone-galaxy-nexus-review/">MG Siegler</a> about the Galaxy Nexus allegedly being less polished than iPhones are. I didn&#8217;t pick up on some of the cringe that Joshua pointed out, in particular the implication that rich people who have &#8220;nicer&#8221; stuff will always enjoy some impossible to crack understanding of the finer things in life.</p>
<p>And yet John and MG are totally right. You either see it or you don&#8217;t. This is egalitarian, relating to all facets of life, in every nuanced area of preference or priority. For whatever details a given person appreciates and values, far more people will be disinterested and be unlikely to even distinguish differences. How about those Android aficionados? They&#8217;ll point to the flexibility afforded by true multitasking, freedom to install unapproved apps, etc. They shake their heads at silly iPhone lovers, hold their phones up high and take pride in these qualities. To them, these <em>are</em> the finer points. This is the &#8220;polish.&#8221; The rest of us just don&#8217;t see it.</p>
<p>For many of us who make, use, or write about software for a living, polish is all about removing from the software as many jarring behaviors as possible. Sweating the small stuff. It&#8217;s exactly the details like the persistently stuttering scrolling that MG points out that continue to make Android products appear less polished to us. It&#8217;s seriously unnerving. <strong>It&#8217;s a big freaking deal to us, while other people just don&#8217;t see it.</strong></p>
<p>It doesn&#8217;t have to relate to expense, and isn&#8217;t restricted to a <em>premium class</em> of product. It&#8217;s also, of course, not restricted to vision. I can imagine some of my wine-loving friends holding up a $15 bottle of something precious they&#8217;d discovered, while expressing disdain for a $200 bottle of swill that somebody else just adores. Nor does it need to be something &#8220;high class.&#8221; I&#8217;m sure a number of hard-working farmworkers could explain to me in agonizing detail why I picked the absolute worst rake and shovel for my garden.</p>
<p>If you&#8217;ve got a taste for something, a nose for something, an eye for something, an ear for something, a <em>feel</em> for something, and you find a product that soothes that sense, then you have a special gift: the ability to cast judgement on inferior efforts. Other folks? They&#8217;ll either sense it too, or they won&#8217;t.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/2280/you-sense-it-or-you-dont/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>How To Talk Dirty</title>
		<link>http://www.red-sweater.com/blog/2266/how-to-talk-dirty</link>
		<comments>http://www.red-sweater.com/blog/2266/how-to-talk-dirty#comments</comments>
		<pubDate>Wed, 09 Nov 2011 20:18:29 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Rant]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=2266</guid>
		<description><![CDATA[Today there is much chatter on Twitter about Brittany Tarvin&#8217;s A Letter to the Developer Community. In a nutshell: Brittany attended MacTech last week, and was offended by the unprofessional vibe in a few instances, but in particular, with regard to sexual jokes that comprised the content of one. It reads to me less like [...]]]></description>
			<content:encoded><![CDATA[<p>Today there is much chatter on Twitter about Brittany Tarvin&#8217;s <a href="http://wildchocolate.tumblr.com/">A Letter to the Developer Community</a>. In a nutshell: Brittany attended <a href="http://www.mactech.com/conference/about">MacTech</a> last week, and was offended by the unprofessional vibe in a few instances, but in particular, with regard to sexual jokes that comprised the content of one. It reads to me less like she was less personally offended than surprised and disappointed by the behavior of her peers. My takeaway after reading her piece is that she feels juvenile humor simply does not have a place at a professional conference.</p>
<p>Judging by the massive response on Twitter in support of her opinion, I think that most people tend to agree. However, I think that the vagueness of her description of the incident leaves much to the imagination, and is causing people to leap to condemnation of the talk, the conference, and the industry. I am not saying the condemnation is unwarranted, but my feelings about this particular event are complicated, and I think yours might be too, if you knew more of the details.</p>
<p>The talk in question was titled <a href="http://www.mactech.com/conference/sessions">The Ten Dirty Words and How To Use Them</a>. The talk was given by my friend <a href="http://www.notesfromandy.com/">Andy Lee</a>, and his synopsis from the conference session descriptions reads:</p>
<blockquote>
<p>In 2003, I came up with &#8220;The Top Ten Cocoa Words That Sound Dirty But Aren&#8217;t.&#8221; By finding APIs via this arbitrary way, we talk a random stroll through Cocoa, which can stimulate curiosity and lead to new discoveries and new questions. What would you guess NSInsertionPosition is for? (I incorrectly guessed text editing.) It can also be worthwhile reviewing familiar ground. We all autorelease &#8212; some of us every day &#8212; but it may still be possible to learn a thing or two about it. I will talk about the proper use of each word in the list.</p>
</blockquote>
<p>To give you a more specific idea of the offensiveness of the API method names that Andy discussed, take a look at his blog post <a href="http://www.notesfromandy.com/2011/05/14/ten-cocoa-words-plus-two/">listing the API methods</a> under discussion. [<strong>Update: </strong>MacTech has just posted <a href="http://www.mactech.com/sites/default/files/Lee-Ten_Dirty_Words_and_How_to_Use_Them.pdf">slides from the talk</a>.]</p>
<p>The genius of this talk is it takes a running gag in the Cocoa community, that occasional API names here and there were unfortunately named, and runs with that gag as a scaffolding for exploring the specific APIs in more detail. As for the sexual jokes, I think they basically write themselves in the individual minds of the audience. As anybody who has sat through an all-too-dry conference talk about the specific technical blah, blah, blah of any subject can attest, it is generally a good idea to <em>inject some humor</em> into a talk&#8217;s structure.</p>
<p>So was the humor in this case too much, or too vulgar? I&#8217;m sure that Brittany was not the only person in the room who was offended by the talk. On the other hand, as the one &#8220;comic relief&#8221; talk in a 3 day schedule that contained more than its fair share of professionalism, I think it&#8217;s probably fair to say that some members of the audience were relieved to have a chance to laugh about something.</p>
<p>Injecting humor into any talk is dangerous. Especially with a diverse crowd, you are liable to offend somebody. Jokes of a sexual nature are even more dangerous. Even if the joke is not sexist, per se, there is a strong possibility that members of the audience will take offense because of sexual taboos in society. I also imagine the discussion of sex in a strongly gender-imbalanced setting will make members of the minority gender more uncomfortable than the rest of the room.</p>
<p>But neglecting to inject humor is also dangerous. The Mac and iOS communities have a strong tradition of humor in our conferences. Many of us feel annoyed and cheated by a conference if there isn&#8217;t a bit of liveliness. So, it goes both ways. It&#8217;s important to process this incident carefully to understand how it went wrong. Was the problem that there was a session with a noticeably lower level of &#8220;seriousness&#8221; than the other sessions? Was it that the session&#8217;s jokes were of a sexual nature? Or was it that the sexual nature of the talk&#8217;s jokes were not made clear enough to the audience before it took place?</p>
<p>I think what is happening on the web now is many people are seizing onto the angle of Brittany&#8217;s complaint that most resonates with their own frustrations about the conduct of our community. This is a valuable reaction and a good opening for further exploration. But what isn&#8217;t useful is the large number of people who are condemning the conference and the speaker without significant information about the context of what happened. I hope that I have at least helped to clarify that to some extent. If you still feel that blanket condemnation is the appropriate response, then I&#8217;m happier with your opinion now that you&#8217;ve read mine.</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/2266/how-to-talk-dirty/feed</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>When Ads Feel Wrong</title>
		<link>http://www.red-sweater.com/blog/2215/when-ads-feel-wrong</link>
		<comments>http://www.red-sweater.com/blog/2215/when-ads-feel-wrong#comments</comments>
		<pubDate>Fri, 28 Oct 2011 19:12:00 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=2215</guid>
		<description><![CDATA[Marco Arment wrote about the negative impression he had when, after paying $4.99 for a single digital issue of The New Yorker, he was nonetheless subjected to advertisements. He calls the combination of up-front purchase combined with an advertising subsidy &#8220;double-dipping,&#8221; implying that the content providers are somehow charging you twice for the same product. [...]]]></description>
			<content:encoded><![CDATA[<p>Marco Arment <a href="http://www.marco.org/2011/10/27/double-dipping-ads-in-ipad-magazines">wrote about</a> the negative impression he had when, after paying $4.99 for a single digital issue of <a href="http://www.newyorker.com/">The New Yorker</a>, he was nonetheless subjected to advertisements. He calls the combination of up-front purchase combined with an advertising subsidy &#8220;double-dipping,&#8221; implying that the content providers are somehow charging you twice for the same product.</p>
<blockquote>
<p>I just don’t feel comfortable paying for an iPad or web publication, no matter how good it is, and then having ads shoved down my throat. It makes me feel ripped off: what did I pay for?</p>
</blockquote>
<p>His article touched a nerve with some of my friends and colleagues who are tied into the publishing industry, and who are aware of how important ads are to the revenue models of many magazines.</p>
<p>I think that I get, and agree with, the gist of Marco&#8217;s complaint. For better or worse, paying $4.99 for a digital copy of a magazine <em>feels like a premium price.</em> When you pay a premium price for content, <em>it just feels wrong</em> to many of us to have ads heaped on top.</p>
<p>Jason Snell, the Editorial Directory of <a href="http://www.macworld.com/">Macworld</a>, <a href="https://twitter.com/jsnell/status/129645026870435840">reacted to Marco&#8217;s post</a> by suggesting that a magazine&#8217;s delivery medium shouldn&#8217;t affect whether or not ads are justified:</p>
<blockquote>
<p>@marcoarment Wait, so an iPad version of a magazine shouldn&#8217;t have ads, but it&#8217;s okay in a printed magazine?</p>
</blockquote>
<p>Jason goes on to suggest that publications have many costs, and typically the purchase price only pays for a fraction of those. Jason also links to a <a href="http://reverttosaved.com/2011/10/28/digital-magazines-still-have-adverts-non-shock/">blog post from Craig Grannell</a>, who also hammers the idea that publications <em>need ads to cover costs</em>, and closes with a quippish reply to Marco&#8217;s &#8220;what did I pay for?&#8221; question:</p>
<blockquote>
<p>How about the content, and the wages of the people who write the content, and who design the app?</p>
</blockquote>
<p>This epitomizes what I think is an overreaction by many folks to Marco&#8217;s post. People are zeroing in on the objection to ads, and inferring that Marco doesn&#8217;t believe magazines should be reasonably compensated for the content they provide. Marco never suggests this. In fact, he&#8217;s the one who ponied up $5 for a copy of content that he values. The exact price, and whether it supports the specific business model of the company he is patronizing, is almost beside the point. To him, <em>it just feels wrong.</em></p>
<p>In response to the criticism, Marco seems <a href="https://twitter.com/marcoarment/status/129967202957930496">willing to acknowledge</a> that his feelings about the ads are trumped by the realities of the industry:</p>
<blockquote>
<p>Tons of feedback from magazine/news people telling me that my feelings are wrong and that I simply need to accept that ads are necessary.</p>
</blockquote>
<p>Peter Cohen, a journalist with years of experience writing for publications such as <a href="http://www.loopinsight.com/">The Loop</a> and Macworld, minces no words in his response:</p>
<blockquote>
<p><a href="https://twitter.com/flargh/status/129979069713489920"></a>@marcoarment It&#8217;s not your feelings, Marco. It&#8217;s your understanding of the economics of content production.</p>
</blockquote>
<p>This is all well and good, informing Marco how wrong he is for feeling that $4.99/issue is a price that should justify an ad-free reading experience, but nobody seems to be willing to go deeper than vaguely condescending dismissal. All the accusations of contempt and ignorance are a little unsatisfying without specific analysis of Marco&#8217;s allegedly mistaken assumptions.</p>
<p>Obviously a magazine costs more than $0/issue to put out, and obviously it costs less than, say, $500/issue to put. Marco&#8217;s expectation to read a digital copy of a magazine without ads seems well-warranted if the cost of the purchase compensates the magazine with enough money to pay all of their staff, all their service providers, and some money left over for, if they&#8217;re lucky, pure profit.</p>
<p>If Marco had paid $500 for that issue of the New Yorker, I think few would challenge his expectation that such a price warrants an ad-free experience. But he paid $4.99, which happens to be the same price as a newsstand copy of the magazine. When you compare $4.99 to the $1.49/issue that The New Yorker charges its loyal subscribers for paper copies, printed on glossy paper and mailed to their homes, it already feels like a huge premium. Presumably the publishers <em>are not losing money</em> at $1.49/issue (with ads), or they&#8217;d cease selling subscriptions. [Update: it's been pointed out that they may well lose money on subscriptions if they know they can capitalize on secondary sales of books, etc., to their customer base]</p>
<p>We don&#8217;t know how much The New Yorker pays for bandwidth, or what percentage of their overall expenses the cover price accounts for. We don&#8217;t know if there are partnership fees for the digital version, or whether it needs to pay back a major infrastructure investment. We don&#8217;t know the specifics. We just know that Marco paid $3.50 more than a subscriber pays for the same issue, that it didn&#8217;t have to be printed, that it didn&#8217;t have to be mailed, and that it&#8217;s offered for sale in a venue where practically no other editorial content is sold at a premium price.</p>
<p>Is there something wrong with paying $5 for a digital copy of a magazine only to be subjected to ads? I don&#8217;t know. It may be necessary. It may be fair. But it <em>felt wrong</em> to Marco, and it <em>feels wrong</em> to me. That&#8217;s the publishing industry&#8217;s problem to figure out, and ours to complain about until convinced, by reasoning and without blanket condescension, to think otherwise.</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/2215/when-ads-feel-wrong/feed</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Picking Off iCal&#8217;s Paper Bits</title>
		<link>http://www.red-sweater.com/blog/1970/picking-off-icals-paper-bits</link>
		<comments>http://www.red-sweater.com/blog/1970/picking-off-icals-paper-bits#comments</comments>
		<pubDate>Sat, 23 Jul 2011 20:07:38 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Lion]]></category>
		<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=1970</guid>
		<description><![CDATA[OS X Lion brings dramatically redesigned versions of the classic iCal and Address Book applications. Many people, or at least some important decision makers inside Apple, are very happy with these changes. Other folks, such as myself, believe they look and behave like crap. When I first saw the Lion version of iCal, my eyes [...]]]></description>
			<content:encoded><![CDATA[<p>OS X Lion brings dramatically redesigned versions of the classic iCal and Address Book applications. Many people, or at least some important decision makers inside Apple, are very happy with these changes. Other folks, such as myself, believe they look and behave like crap.</p>
<p>When I first saw the Lion version of iCal, my eyes were drawn to the obnoxious bits of paper that cling to the top of the window, artificially and pointlessly leaving the debris that you might find on a real-life calendar with removable paper sheets:</p>
<p><img title="iCal-Messy.png" src="http://www.red-sweater.com/blog/wp-content/downloads/2011/07/iCal-Messy.png" border="0" alt="ICal Messy" width="450" height="192" /></p>
<p>As <a href="https://twitter.com/catshive">Cathy Shive</a> pointed out in her <a href="http://nsconference.com/">NSConference</a> talk on user interface metaphors, the presence of junk like this in an application is at best useless, at worst distracting and detrimental to the usability of the application. I remember her saying in her talk, before Lion&#8217;s iCal had even been presented in a private developer beta, that little things like paper scraps in an application are particularly annoying because she always wants to try to pick them off just as she would with a physical object.</p>
<p>Lion has given me the opportunity to empathize deeply with that concern. I hate those cruddy paper bits, and I can&#8217;t pick them off! Or can&#8217;t I?</p>
<p>To clean up your copy of iCal on Lion:</p>
<ol>
<li>Select the iCal application in the Finder and press cmd-D to duplicate (make a backup, for safe keeping).</li>
<li>Control click the application icon and select &#8220;Show Package Contents.&#8221;</li>
<li>Navigate to Contents/Resources/</li>
<li>Select &#8220;CanvasTopTile.png&#8221; and open it up in <a href="http://flyingmeat.com/acorn/">Acorn</a> or another, less attractive image editor. Or download <a href="http://www.red-sweater.com/blog/wp-content/downloads/2011/07/CanvasTopTile.png">my edited version</a> and replace the original file.</li>
<li>Select the paper bits and &#8220;clean them up&#8221; by deleting them.</li>
<li>Reopen iCal, and bask in the glow of your clean white calendar:</li>
</ol>
<p><img title="iCal-Clean.png" src="http://www.red-sweater.com/blog/wp-content/downloads/2011/07/iCal-Clean.png" border="0" alt="ICal Clean" width="450" height="197" /></p>
<p>Granted, this <em>only fixes the paper bits</em>. You&#8217;re still stuck with that horrendous tan leather toolbar. But at least that doesn&#8217;t beg to be picked at. It&#8217;s worth noting that the tan leather can also be tweaked by editing a variety of other image resources in the bundle. It&#8217;s trickier because many of the graphical components of the toolbar are designed to blend with the leather background, so you&#8217;ll end up having to change quite a few of the images.</p>
<p>I&#8217;m reminded of <em>another great observation</em> Cathy made in her talk: when you make very stylistic choices like this for a user interface, you dramatically increase the variety of reasons that the customer can be repulsed by the design. What if I don&#8217;t like leather? What if I don&#8217;t like <em>tan leather</em>? What if I prefer a <em>running stitch</em> to an <em>outline stitch</em>? You can argue that matte grays and subdued color gradients may invite the same controversy, but there&#8217;s a reason they are so common in user interfaces: because they&#8217;re far less likely to distract from the form and function of the application itself.</p>
<p><strong>Addendum: </strong><strong>Updating the iCal code signature</strong>. Thanks to <a href="https://twitter.com/rentzsch/status/94862617918717952">rentzsch</a> and <a href="https://twitter.com/daagaak/status/94867316520648704">daagaak</a> on Twitter for pointing out that editing the resource will break the &#8220;code signature&#8221; on the application, put there by Apple to assure users that the application 1. Was developed by Apple, and 2. Has not been modified by anybody but Apple. You can re-sign the application after tweaking it, to put it back into a  &#8221;signed&#8221; state, albeit not by Apple. Hopefully this will prevent it from prompting you all the time about approving connections to services like MobileMe. From the Terminal:</p>
<pre> codesign -f -s - /Applications/iCal.app</pre>
<p>This reveals how little things like tweaking an application&#8217;s resources have wider-reaching consequences than they used to. I&#8217;m pretty sure you won&#8217;t miss any functionality in iCal by using a self-signed copy of the app vs. an Apple-signed version. But I could be wrong!</p>
<ol> </ol>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/1970/picking-off-icals-paper-bits/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Twitter Security Smackdown</title>
		<link>http://www.red-sweater.com/blog/1864/twitter-security-smackdown</link>
		<comments>http://www.red-sweater.com/blog/1864/twitter-security-smackdown#comments</comments>
		<pubDate>Thu, 19 May 2011 04:08:23 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Rant]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=1864</guid>
		<description><![CDATA[Today Twitter announced a few distinct policy changes for clients of their API, all wrapped up under the banner of improved security permissions for end-users. The best response I&#8217;ve seen yet is from John Gruber, who smells something funny in the deli. I tend to agree. The announcements today comprise some useful security enhancements, but [...]]]></description>
			<content:encoded><![CDATA[<p>Today Twitter <a href="http://groups.google.com/group/twitter-api-announce/browse_thread/thread/e954fc0f8b5aa6ec">announced</a> a few distinct policy changes for clients of their API, all wrapped up under the banner of improved security permissions for end-users. The best response I&#8217;ve seen yet is from John Gruber, who <a href="http://daringfireball.net/2011/05/twitter_shit_sandwich">smells something funny</a> in the deli. I tend to agree. The announcements today comprise some useful security enhancements, but the security gains from some of the decisions that were announced are not so great that they offset the serious disadvantage they impose on 3rd party developers, particular developers of native mobile and desktop apps.</p>
<p>Let me break the announcements today into three policy change assertions, and how I react to them.</p>
<ol>
<li>
<p><strong>Access to Twitter direct messages will require a new level of user-granted permission.</strong> This is a great thing! I recently tweeted that exactly something like this was necessary, because I&#8217;ve grown tired of giving <em>every damn service </em>that I wish to connect to Twitter, access to all my confidential direct messages. The new permission allows developers of client apps to state their desired permissions, and those permissions will be listed prominently on <a href="http://twitter.com/settings/applications">your list of approved applications</a>.</p>
<p><strong>Verdict: Kudos, Twitter</strong>.</p>
</li>
<li>
<p><strong>Developers of Twitter clients will be <em>required</em> to use OAuth in order to gain this new permission. </strong>In laymen terms, this means client apps can&#8217;t log you in with just your username and password. You will need to be redirected to the web. This requirement is ostensibly because Twitter wants to increase the likelihood that end-users will be made aware of exactly which permissions a client application is requesting. Without this requirement, a native application could <em>claim to seek read-only access</em>, but behind the scenes be using your username and password, by way of Twitter&#8217;s xAuth solution, to request a higher level of permission than you intended to allow.</p>
<p>I concede that this requirement is, on the face of it, an added protection for customers who are wary of providing Twitter credentials to an untrusted app. But here&#8217;s the catch with native software: you better trust it, because there is no shortage of ways in which it could screw you. It&#8217;s running with <strong>some degree of elevated permission on your own device</strong>. Twitter putting shackles on native app developers in the name of security is laughable. For example, it would be easy for an untrustworthy native app to provide a custom, compromised browser view that purports to drive a user through the Twitter OAuth permission flow with a given permission, but is actually requesting a different level of permission in a second, undisplayed web flow.</p>
<p>This is not to say that we shouldn&#8217;t bother reining in native software that may be flawed or whose permission we may want to revoke. This is what is so clever about the xAuth workflow, the compromise that allows native apps to authenticate as if by way of an OAuth flow, but using a user&#8217;s username and password to facilitate the process. If an end-user or Twitter itself loses confidence in an xAuth based application, they can <em>still</em> revoke access to the application in the same way they would for any other OAuth managed client.</p>
<p><strong>Verdict: Nice try, but if you don&#8217;t trust your native software, Twitter can&#8217;t do much to keep you from getting screwed.</strong></p>
<p><em></em></li>
<li>
<p><strong>These requirements apply unilaterally to all native clients. Except Twitter&#8217;s.</strong> I grant you, <em>it makes sense</em> for a company to exempt itself from security restrictions that are imposed to prevent &#8220;bad guys&#8221; from taking control of a user&#8217;s credentials and doing damage to the user or to Twitter itself. But this story is complicated by the fact that Twitter entered a competitive market of native clients of its own system, where for years it was not a player, and then proceeded to adopt increasingly developer-hostile attitudes. In particular towards developers of software that aims to fill that coveted role of a &#8220;general purpose read/write Twitter client.&#8221;</p>
<p>Is it illegal to do what Twitter has done? Absolutely not, nor should it be. But in my opinion these 3rd party developers were a valuable asset that was pivotal in building passion for Twitter in the earliest years of its existence. Many of the features that we take for granted in Twitter itself were prototyped in 3rd party native applications. Hell, even Twitter&#8217;s own native Mac app was <em>itself a 3rd party application</em> (Tweetie) until not too long ago.</p>
<p>Twitter&#8217;s attitude towards these developers seems to be: thanks for all the help, but we&#8217;re done with you. The fact that Twitter is willing to &#8220;whitelist&#8221; their own apps further suggests that this may not be a pure security play. Only legitimate developers of trustworthy apps would be interested in seeking an API key to connect to Twitter. If your aim is to write malevolent software that abuses Twitter or its users, you should be content to take an app like Twitter&#8217;s own Mac client, extract the portions that communicate &#8220;securely&#8221; with Twitter, and build your own app that only the savviest user will notice is actually posting to Twitter as &#8220;Twitter for Mac.&#8221;</p>
<p>Twitter&#8217;s willingness to exempt any apps from the OAuth procedure is a concession that they don&#8217;t view xAuth authentication as <em>inherently</em> insecure. But they want to limit which API keys get the privilege of continuing to use it. So, expand that list of API keys. At the <em>very least</em>, add long-time supporters such as Iconfactory&#8217;s <a href="http://iconfactory.com/software/twitterrific">Twitterrific</a>. Better? Provide some kind of approval process through which any qualified developer can seek first-class status. Best of all? Stick to what OAuth and xAuth are best for: providing the power to revoke access for bad actors after bad intentions are discovered. Forcing applications through OAuth is not going to prevent offensive, buggy, or intentionally malevolent code from being authorized by users, but it is going to degrade the user experience for all native clients except, oh, how about that? Twitter&#8217;s own.</p>
<p><strong>Verdict: Dick move, Twitter.</strong></p>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/1864/twitter-security-smackdown/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Venture Capital&#8217;s Biggest Fear</title>
		<link>http://www.red-sweater.com/blog/1745/venture-capitals-biggest-fear</link>
		<comments>http://www.red-sweater.com/blog/1745/venture-capitals-biggest-fear#comments</comments>
		<pubDate>Tue, 01 Mar 2011 22:20:27 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=1745</guid>
		<description><![CDATA[I enjoy running my own business. One of the things I find most interesting is learning about business mechanics from a completely hands-on perspective. While I would not classify my education as nearly complete, in the several years I&#8217;ve run Red Sweater I have a learned a few objective truths about all businesses, and many [...]]]></description>
			<content:encoded><![CDATA[<p>I enjoy running my own business. One of the things I find most interesting is learning about business mechanics from a completely hands-on perspective. While I would not classify my education as nearly complete, in the several years I&#8217;ve run Red Sweater I have a learned a few objective truths about all businesses, and many subjective preferences about how my business should be run.</p>
<p>One of the most important questions any business deals with is how it will be funded. If you&#8217;re thinking of starting a business, you should probably decide how you want to be funded early on, so you can orient your business towards being successful in the context of that funding.</p>
<p>Broadly speaking, a business will either be &#8220;bootstrapped&#8221; or funded by outside investors.</p>
<p>The goal for a bootstrapped business is to come up with your initial funding, be it in the form of cash, free time, raw materials, or some combination, and parlay these resources into a service or product that generates revenue from customers. Once the revenue from customers pays for the founders&#8217; initial investments and sustains the recurring expenses of the business, theoretically including your salary as a founder, the company is profitable and poised to grow. The huge benefit to bootstrapping your own business is that, once the company is profitable, you retain 100% control of the business&#8217;s strategy and resources.</p>
<p>Another method of starting a business is to seek outside investment in the form of angel funding or venture capital. You give up some clearly specified percentage of the company&#8217;s ownership in return for cash, guidance, and social connections. From here, the goals are basically the same: to become profitable, but at the end of the day you end up with a smaller stake in your own company than you would have if you bootstrapped it yourself.</p>
<p>I think there are good arguments for both approaches, but I am strongly disinclined to seek venture funding for my business. When friends ask for my opinion, I almost always strongly discourage them from seeking it as well. Why? Because venture capital doesn&#8217;t speak to our priorities, and is unlikely to build the kinds of companies we want to run.</p>
<p>I was listening to the always-inspiring <a href="http://thisweekin.com/thisweekin-startups/">This Week in Startups</a> podcast when an <a href="http://thisweekin.com/thisweekin-startups/this-week-in-startups-120-with-tony-conrad-founder-of-about-me-and-vc-at-trueventure/">interview with Tony Conrad</a> led to a perfect synopsis of why venture capital is not right for me. Jason Calacanis and Tony Conrad were discussing the state of venture capital in the technology world, and observed that consumers are spending a ton of money online, but there is a &#8220;risk&#8221; that the money is being distributed among too many companies. In a nutshell, they said, the online business world was becoming more like &#8220;Main Street,&#8221; with too many small businesses, and not enough &#8220;Walmarts&#8221; to pay back the massive returns.</p>
<p>This, Tony Conrad said bluntly, was his &#8220;biggest fear.&#8221;</p>
<p>Venture capitalists would rather fund a single billion-dollar company than a thousand mom-and-pop million-dollar shops. I can&#8217;t say that I fault them for this, but it cuts to the core of where their priorities lie: they gamble on high stakes, massive returns, while shunning the concerns of any business that wants to maintain a mom-and-pop Main Street business ideology. Personally, I prefer the Main Street shopping aesthetic to Walmart, and I know which part of town I want my business in.</p>
<p>If you want to be Walmart, by all means seek venture funding: you&#8217;ll need lots of it to stand a chance at succeeding. If, on the other hand, you want to build a company guaranteed to preserve your values, fund it yourself and maintain control. You&#8217;ll own something to be truly proud of while helping to scare the crap out of venture capitalists.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/1745/venture-capitals-biggest-fear/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Must Be Nice</title>
		<link>http://www.red-sweater.com/blog/1725/must-be-nice</link>
		<comments>http://www.red-sweater.com/blog/1725/must-be-nice#comments</comments>
		<pubDate>Fri, 25 Feb 2011 04:18:59 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Folklore]]></category>
		<category><![CDATA[Nostalgia]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=1725</guid>
		<description><![CDATA[I just read a piece by Mike Monteiro of Mule Design, mostly about choosing clients who you can stand behind, but hinging on an anecdote about interviewing a prospective employee: I asked him if he agreed with how they made their money. He replied in the negative — he’d just done the design. I told [...]]]></description>
			<content:encoded><![CDATA[<p>I just read a <a href="http://weblog.muledesign.com/2011/02/how_to_pick_the_right_clients.php">piece by Mike Monteiro</a> of Mule Design, mostly about choosing clients who you can stand behind, but hinging on an anecdote about interviewing a prospective employee:</p>
<blockquote><p>I asked him if he agreed with how they made their money. He replied in the negative — he’d just done the design. I told him we didn’t take on any projects that we couldn’t ethically stand behind.</p>
<p>And here I’ll quote him: “Must be nice.”</p>
<p>And that’s when I decided not to hire him.</p>
</blockquote>
<p>Almost 15 years ago I was working my ass off at Apple as a junior engineer in the System 7 software updates team. I was trying to make a reputation in my new career, but also doing my part to make sure we shipped on time. In a historical sense, most what we built is hard to get excited about these days, but we were doing the exact same thing that Apple does today: iterating to give our faithful customers a reason to stay faithful.</p>
<p>In a group that was primarily oriented around fixing bugs, my colleagues and I were especially susceptible to a problem that plagues many developers: once you&#8217;re on the tail of a bug it can be hard to stop hunting until the issue is resolved. Some days we worked short hours. A hard-won victory at 4PM might be grounds for calling it an early day. But other times, stumbling onto a glimmer of hope with an impossible bug that &#8220;had to be fixed by next week&#8221; was cause for camping out until the wee hours of the morning.</p>
<p>One of these marathon bug-hunting sessions had a coworker and myself working until 2 in the morning, bleary eyed, but desperate for a solution. Usually I would recommend rest and resumption when it comes to this point, but we felt sure we were on the verge, and this was an important, difficult bug. We had a breakthrough, and spent another couple hours verifying a fix, testing it, and checking in the code. We went home exhausted but jubilant.</p>
<p>I collapsed at 5AM and slept until 11, conscious that the bug-busting marathon was not over. My boss, my boss&#8217;s boss, and for all I know, his boss&#8217;s boss were all aware of what we had done. It was a significant win for the team, but there was plenty more to do.</p>
<p>When I got into work after noon, my colleague was already there. He was talking, in the common area of our floor, with a humorless, long-time employee who worked in an administrative role with our team.</p>
<p>&#8220;Where have you been?&#8221; she asked contemptuously. &#8220;We need to ask you about the blah blah blah.&#8221; I&#8217;ve forgotten the specifics.</p>
<p>&#8220;Sorry, I was here late last night and only got in a few minutes ago,&#8221; I said.</p>
<p>&#8220;Must be nice,&#8221; she answered tersely. Her words stung. I was young, trying to prove myself, and had just returned to the fray after helping with an important victory. She had left at 5PM the previous night and had a long, restful night&#8217;s sleep. Or at least, that&#8217;s what I assumed she did.</p>
<p>What irked me most about her &#8220;must be nice&#8221; comment was how profoundly void of empathy it seemed to me. I hated her for years because of this. In part because of her, I have since been extremely sensitive to these pithy, jealous expressions: they jump out like smarmy little diamonds. But when words like these occasionally get lobbed at me, I am not nearly as hurt as I once was. I tap into my own empathy reserves, imagine what a crappy life they me struggling with, and try to wish the best for them.</p>
<p>It&#8217;s not so nice to be a person who says must be nice.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/1725/must-be-nice/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Staying In Touch</title>
		<link>http://www.red-sweater.com/blog/1470/staying-in-touch</link>
		<comments>http://www.red-sweater.com/blog/1470/staying-in-touch#comments</comments>
		<pubDate>Sat, 30 Oct 2010 17:08:30 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Indie]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=1470</guid>
		<description><![CDATA[Update: I originally cited the content of a customer&#8217;s email in this post, and although I didn&#8217;t reveal her identity, I don&#8217;t think this was appropriate or particularly constructive. Mea culpa. In the future I will never cite the contents of a customer&#8217;s private email, no matter how anonymously, unless they have expressly permitted me [...]]]></description>
			<content:encoded><![CDATA[<div style="border:1px dotted; padding:1em; border:0 0 1em 0; margin-bottom:1em;">
<p style="margin-top:0;">
<strong>Update:</strong> I originally cited the content of a customer&#8217;s email in this post, and although I didn&#8217;t reveal her identity, I don&#8217;t think this was appropriate or particularly constructive.
</p>
<p>Mea culpa.</p>
<p>In the future I will never cite the contents of a customer&#8217;s private email, no matter how anonymously, unless they have expressly permitted me to do so.</p>
<p style="margin-bottom:0;">I have edited the post to remove the contents of our correspondence with each other. I am leaving the post because I still think it expresses some interesting ideas.
</p>
</div>
<p>Continuing the <a href="http://www.red-sweater.com/blog/1459/blog-the-first-draft">recent trend</a> of <a href="http://www.red-sweater.com/blog/1445/suck-it-up-and-ship">posts</a> about, essentially, &#8220;just doing it,&#8221; the purpose of this post is to underscore the wisdom of staying in touch with customers, while acknowledging that doing so brings its own challenges.</p>
<p>Since I established my own <a href="https://www.red-sweater.com/store/">web store</a> a few years ago, I have collected the emails of customers who buy my software and, for those who leave the pre-checked option selected, subscribe them to a company newsletter for infrequent announcements:</p>
<p><img src="http://www.red-sweater.com/blog/wp-content/downloads/2010/10/MailingListCheckbox.png" alt="MailingListCheckbox.png" title="MailingListCheckbox.png" border="0" width="302" height="47" /></p>
<p>Infrequently is the operative word here. In more than three years I&#8217;ve neglected to send even one email to these folks. This is a problem, because permitting me to contact them set up the expectation that I would. When major releases such as MarsEdit 3 have come out, some people don&#8217;t find out until months later, and tend to be annoyed that they haven&#8217;t heard about it directly from me.</p>
<p>Yesterday, I finally got around to setting up a mailing list with <a href="http://www.campaignmonitor.com/">Campaign Monitor</a>, drafting a simple plain-text letter, and pressing the send button. I finally broke the ice.</p>
<p>For those of you who are not on the mailing list, here&#8217;s what I said:</p>
<blockquote>
<h4>News From Red Sweater Software</h4>
<p>Hello from Red Sweater! This is Daniel Jalkut, its founder and, for now, its only employee.</p>
<p>When you purchased one of my products, you agreed to receive infrequent email updates that keep you up to do date with my latest products.  Since that time you have received approximately zero emails! I sort of dropped the ball on direct communication, but I&#8217;m working to rectify that now.</p>
<p>Messages will still be infrequent and hopefully pertinent, but if you are no longer interested in receiving updates about Red Sweater, just visit this link to unsubscribe:</p>
<p>(unsubscribe link)</p>
<p>On to the news: what&#8217;s happening at Red Sweater?</p>
<p>1. MarsEdit 3 Released</p>
<p>Earlier this year I released a major update to MarsEdit, our desktop blog editing application. MarsEdit now sports a rich text &#8220;WYSIWYG&#8221; editor, support for WordPress pages, and a media browser that integrates with iPhoto, Aperture, and Lightroom. Read more about MarsEdit 3 on the web:</p>
<p><a href="http://www.red-sweater.com/marsedit/new3.html">http://www.red-sweater.com/marsedit/new3.html</a></p>
<p>If you don&#8217;t already own MarsEdit 3 you can purchase it for $39.95, or update from a previous version for $14.95:</p>
<p><a href="https://www.red-sweater.com/store/">https://www.red-sweater.com/store/</a></p>
<p>2. iPhone and iPad Releases?</p>
<p>People often ask about my plans to release applications for the iPhone, iPad and iPod touch. It&#8217;s easy enough to convey my intentions, but a bit harder to make specific promises. I am very excited about building iPhone and iPad versions of my apps, especially MarsEdit and Black Ink. I have made significant progress on these apps but there is still fine-tuning that needs to be done before I&#8217;ll be prepared to release them publicly. </p>
<p>3. The Mac App Store</p>
<p>You may have heard the news that Apple is planning to launch a Mac version of the App Store, which will give Mac users the ability to easily browse, purchase, and install applications in a similar manner to the way it works for iPhones and iPads. I&#8217;m hoping to get most or all of my apps into the catalog so I can reach an even wider audience of users. The good news for you, my existing customers? More customers will hopefully lead to more revenue, which means more resources and impetus to continue adding great features to the applications you already love.</p>
<p>4. Keeping In Touch</p>
<p>As I said earlier, I am resolving to do a better job keeping in touch. Next time a major update like MarsEdit 3 is released, you&#8217;ll hear about it before 6 months have passed! But if you want to proactively stay tuned in on an even finer level, there are some resources available to help you monitor our progress:</p>
<p>Email support. You can contact Red Sweater with whatever&#8217;s on your mind, be it a bug report, feature request, or just to say hi.<br />
Address: <a href="mailto:support@red-sweater.com">support@red-sweater.com</a></p>
<p>Red Sweater Blog. The official company blog is my platform for providing a combination of company news and business-related thoughts and analysis.<br />
Link: <a href="http://www.red-sweater.com/blog">http://www.red-sweater.com/blog</a></p>
<p>Twitter accounts. For short, conversational style updates I maintain a personal account, a company account, and a special account just for MarsEdit:<br />
Link: <a href="http://twitter.com/danielpunkass">http://twitter.com/danielpunkass</a><br />
Link: <a href="http://twitter.com/redsweater">http://twitter.com/redsweater</a><br />
Link: <a href="http://twitter.com/marsedit">http://twitter.com/marsedit</a></p>
<p>5. Thank You</p>
<p>I want to close by thanking you for your business. I have been working on Red Sweater for over 10 years now, and in the past few years it has reached a level of success that supports myself, my wife, and my son. This is so unfathomable to me that I can only assume the sky is the limit! Let&#8217;s keep working together: your feedback and support combined with my desire to build great products should lead to many more years of successful results.</p>
<p>Daniel Jalkut<br />
Founder, Red Sweater Software</p>
<p>To unsubscribe from this email list, just visit this link:</p>
<p>(unsubscribe link)
</p></blockquote>
<h3>Delivery Confirmation</h3>
<p>Campaign Monitor made the mass delivery painless for me. Thanks to their sophisticated tools, I know a day later that the vast majority of recipients received the letter, and only a small percentage have unsubscribed. Out of the thousands (wow!) of messages that were sent:</p>
<p>
97.1% appear to be delivered<br />
2.9% bounced<br />
1.48% unsubscribed after receiving<br />
1 reported it as spam (1 <strong><em>person</em></strong>, not percent &#8211; can&#8217;t win them all!)
</p>
<p>This kind of feedback is great, but nothing compared to the direct responses I got from customers. The semi-personal tone of my letter inspired customers to respond in kind with heartfelt support and encouragement.</p>
<p>I received dozens of responses, ranging from the brief, enthusiastic &#8220;Word!&#8221; to longer, philosophical letters about small business, following one&#8217;s dreams, and the meaning of work in life.</p>
<p>Then, early this morning, I received this:</p>
<blockquote><p>
[EDITED: In retrospect, I do not believe it was appropriate for me to share the content of a customer's email here, even if information about her identity was removed.]
</p></blockquote>
<p>An upset or merely irritated customer always calls for a cautious response. The last thing I want is to escalate the situation. But this response is particular challenging, due to the number of provocative facets:</p>
<ol>
<li>The customer is not pleased by the email I sent.</li>
<li>The customer is using a sarcastic, admonishing tone.</li>
<li>The customer projects a lack of respect by omitting proper punctuation and sentence structure.</li>
<li>The customer&#8217;s core criticisms are vague and subjective, making it hard for me to evaluate whether an apology or correction is called for.</li>
</ol>
<p>These facets sort of multiply with each other and make it difficult not to respond defensively. My first reaction is to shout something into my email client like &#8220;What the hell?! Most people like a little humanity in a company, and furthermore, I <strong><em>did</em></strong> enumerate benefits where appropriate, and the content of this letter addresses the most common questions I have received over the past few months. And &#8230; and &#8230; <em><strong>who pissed in your Wheaties, anyway?</strong></em>&#8221;</p>
<p>Instead I take a deep breath, vent a little to my friends on IRC, and respond:</p>
<blockquote><p>
[EDITED: As with the content of the email from the customer, I don't believe it is appropriate for me to include the content of my response.]
</p></blockquote>
<p>I then proceeded to vent on Twitter about the response. I wasn&#8217;t particularly looking for comfort, but was glad to receive supportive responses from people who agreed there was cause to feel irritated by the customer&#8217;s tone. A sample of the dozens of reactions:</p>
<blockquote><p>
&#8220;That&#8217;s the kind of thing, when said in person, earns someone a kick in the teeth.&#8221; &#8212; <a href="http://twitter.com/dssstrkl/status/29204258921">@dssstrkl</a></p>
<p>&#8220;That guy is a jerk. Keep your personality in your work. if he doesn&#8217;t like it, let him use products from huge faceless corps&#8221; &#8212; <a href="http://twitter.com/#!/scottaw/status/29197941316">@scottaw</a></p>
<p>&#8220;Personally, I couldn&#8217;t live with myself without adding a note about their tone. Why encourage an asshole.&#8221; &#8212; <a href="http://twitter.com/#!/mrgan/status/29194429038">@mrgan</a></p>
<p>&#8220;Screw that guy. He&#8217;s just jealous that your Indie endeavors are successful enough to support you and your family. Good on ya!&#8221; &#8212; <a href="http://twitter.com/#!/fonix/status/29193656399">@fonix</a></p>
<p>&#8220;He presumes to speak for all your customers, co-opting &#8220;us.&#8221; He does not. Bravo on your measured and thoughtful response.&#8221; &#8212; <a href="http://twitter.com/#!/artgillespie/status/29189139834">@artgillespie</a></p>
<p>&#8220;That guy replied as if you were trying to sell him something. Your letter was more like a &#8216;state of the union&#8217; communication.&#8221; &#8212; <a href="http://twitter.com/#!/morrick/status/29175626702">@morrick</a>
</p></blockquote>
<p>Many of the responses refer to the customer as &#8220;him,&#8221; while none of them refer to &#8220;her.&#8221; In fact, this customer is either a woman, or a man with a very feminine name. Apropos of not much, but it&#8217;s interesting that we tend to assume somebody who is &#8220;being a jerk&#8221; is a man. I would have made the same assumption.</p>
<p>Do I feel a little disingenuous about responding to the customer politely and without indication of my annoyance, while essentially glorifying her message behind her back on Twitter and now here? Yes. This is not really my style, and I don&#8217;t think it&#8217;s very classy of me to share the private message of a customer, even if I am preserving her anonymity.</p>
<p>But, I think this experience is instructive both to customers and other small-business owners. And since I already vented on Twitter and essentially let the cat out of the bag, I thought I might as well go all the way.</p>
<h3>Staying In Touch</h3>
<p>What does it mean to stay in touch? It means building and preserving a relationship with customers. The stronger the relationship, the greater the empathy for the other&#8217;s circumstance. But as with other relationships, the increase in communication and contact leads to an increased risk of misunderstanding and offense.</p>
<p>My letter served a valuable purpose. It let my customers know that I&#8217;m thinking about them, that the checkbox they vaguely remember leaving selected wasn&#8217;t pointless. That I do have plans for the company and for the products they purchased, and that I am interested in turning a new leaf with regard to communicating directly with them.</p>
<p>The challenging customer and my reaction to her has also been helpful. It reminds me of the related importance of &#8220;staying in touch&#8221; with my own values and priorities. Over the course of Red Sweater&#8217;s growth, I have used a very rules-based approach to how I handle just about everything. Running my own business means biting my tongue and doing &#8220;the right thing&#8221; even when the instinct in my animal brain wants to do the opposite. This is true for coding habits, fiscal responsibility, and yes, customer support habits. A variety of informal rules help to keep me in line.</p>
<p>As I have gained confidence in my own decisions, I find myself more prepared to break these rules. I suppose that pragmatism slowly takes over. When I first started out, I informed my decisions by asking &#8220;what would a good business do?&#8221; Then I learned to admire other Mac software companies such as <a href="http://barebones.com/">Bare Bones</a>, <a href="http://www.rogueamoeba.com/">Rogue Amoeba</a>, <a href="http://panic.com/">Panic</a>, and <a href="http://www.omnigroup.com/">Omni</a>, and asked myself &#8220;what would they do?&#8221; I still defer often to the wisdom of others, but sometimes I have the distinct pleasure of asking myself &#8220;What would I do?&#8221; and acting on it. Staying in touch with myself is as important as staying in touch with my customers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/1470/staying-in-touch/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Blog The First Draft</title>
		<link>http://www.red-sweater.com/blog/1459/blog-the-first-draft</link>
		<comments>http://www.red-sweater.com/blog/1459/blog-the-first-draft#comments</comments>
		<pubDate>Wed, 27 Oct 2010 01:08:28 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Motivation]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=1459</guid>
		<description><![CDATA[MarsEdit users sometimes sheepishly admit that they aren&#8217;t blogging as much as they &#8220;should&#8221; be. Excuses vary, but it usually boils down to the classic issue afflicting all of us who try to stick to a productive routine: we simply fall out of the habit. Long time readers of this blog will note that I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.red-sweater.com/marsedit/">MarsEdit</a> users sometimes sheepishly admit that they aren&#8217;t blogging as much as they &#8220;should&#8221; be. Excuses vary, but it usually boils down to the classic issue afflicting all of us who try to stick to a productive routine: we simply fall out of the habit.</p>
<p>Long time readers of this blog will note that I&#8217;ve had my dry periods as well. But watch closely: I&#8217;m blogging now about a thought I had just earlier this evening, while reading <a href="https://twitter.com/">Twitter</a> updates and responding to them. Colin Barrett complained that his <a href="http://twitter.com/cbarrett/status/28829478255">perfectionism is limiting his blogging</a>:</p>
<blockquote><p>
I plan to write more; I think my @<a href="http://twitter.com/secondconf">secondconf</a> talk on freelancing would work well as a series of posts. Just gotta get past my perfectionism.
</p></blockquote>
<p>I&#8217;m incredibly familiar with this line of thinking. In fact, it&#8217;s a variant of the indefinitely postponed software releases that I <a href="http://www.red-sweater.com/blog/1445/suck-it-up-and-ship">just wrote about</a>. I read Colin&#8217;s tweet and, before I had even noticed that the neurons in my brain were firing, I had responded with a <a href="http://twitter.com/danielpunkass/status/28829974451">bit of encouragement</a>:</p>
<blockquote><p>
@<a href="http://twitter.com/cbarrett">cbarrett</a> The modern business model for solo writing is to blog your first draft and sell your final.
</p></blockquote>
<p>I&#8217;m referring to the fact that very few blogs are edited to the level of professionalism you might find in literary or scientific journals. On the contrary, some of the web&#8217;s most celebrated bloggers have let their essays loose in a semi-rambling form, only to piece them together later into a more refined, salable volume. <a href="http://randsinrepose.com/">Rands in Repose</a> and <a href="http://www.joelonsoftware.com/">Joel on Software</a> spring to mind in the techie world, while writers such as <a href="http://www.dooce.com/">Heather Armstrong</a> and <a href="http://blogs.salon.com/0001399/">Julie Powell</a> turned their respective parenting and cooking blogs into million-dollar enterprises.</p>
<p>The ever-so-thinly veiled message? Don&#8217;t worry so much. Just blog it. If you are among the lucky few who achieves perfection effortlessly, then by all means carry forth. The rest of us are lucky if we coerce a unit of coherent thinking out our brains and onto the web. Perfectionism? Your editor will help you achieve it after you&#8217;re famous.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/1459/blog-the-first-draft/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Coddle Your Code</title>
		<link>http://www.red-sweater.com/blog/1423/dont-coddle-your-code</link>
		<comments>http://www.red-sweater.com/blog/1423/dont-coddle-your-code#comments</comments>
		<pubDate>Fri, 24 Sep 2010 03:09:19 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=1423</guid>
		<description><![CDATA[Jeff LaMarche presents a rundown on whether Objective-C dealloc implementations should bother nil&#8217;ing out an instance variable after releasing it. LaMarche offers a fairly balanced presentation of the two sides, but in my opinion he gives too much credibility to the argument that nil&#8217;ing is a good idea. He essentially embraces the argument that nil&#8217;ing [...]]]></description>
			<content:encoded><![CDATA[<p>Jeff LaMarche <a href="http://iphonedevelopment.blogspot.com/2010/09/dealloc.html">presents a rundown</a> on whether Objective-C dealloc implementations should bother nil&#8217;ing out an instance variable after releasing it.</p>
<p>LaMarche offers a fairly balanced presentation of the two sides, but in my opinion he gives too much credibility to the argument that nil&#8217;ing is a good idea. He essentially embraces the argument that nil&#8217;ing the variables in production code is wise, because it might mask crashing bugs that would obviously vex the user:</p>
<blockquote><p>Generally speaking, this is only going to happen if you&#8217;ve got a bug elsewhere in your code, but let&#8217;s face it, you may very well. Anyone who codes on the assumption that all of their code is perfect is begging for a smackdown.</p></blockquote>
<p>And speaking specifically about the approach I prefer, leaving the instance variable alone and not bothering to nil it out:</p>
<blockquote><p>On the other hand, that approach is really, really bad in a shipping application because you really don&#8217;t want to crash on your users if you can avoid it.</p></blockquote>
<p>I disagree with the assertion that avoiding crashes at all costs in shipping code is the right priority. The biggest disservice you can do to your users is to allow them to run code that has unpredictable behavior. The whole point of programming is to make computers accomplish tasks in predictable ways. Sure, we all make mistakes as programmers, but giving in to the chaos and putting up safety nets &#8220;just in case&#8221; is not the right approach, especially considering it has unwanted consequences.</p>
<p>Consider that by masking the crash from occurring in the wild, you may be putting off detection of and resolution of the underlying bug indefinitely. But if your application has a crash reporter, or if you take advantage of Apple&#8217;s iOS crash reports, you will learn quickly that there are issues needing to be resolved.</p>
<p>It is reasonable to take steps that mask mysterious crashes, but this should only be done after you know there are actually crashes to prevent. Masking the symptoms in a blanket manner is akin to cutting half the phone lines in the neighborhood and celebrating the reduced number of 911 calls.</p>
<p>It&#8217;s also worth noting that LaMarche&#8217;s defense of nil&#8217;ing out instance variables hinges on the presumption that messaging nil is safe. True, messaging nil will not cause a crash. But is that safe? Not if it changes the behavior of your code in unpredictable ways. Consider this incredibly contrived Cocoa-based nuclear arms controller:</p>
<p><pre>
if ([mDiplomat didReturnGestureOfPeace] == NO)
{
 	[[NuclearWarehouse nuclearMissile] launch];
}
</pre>
</p>
<p>By LaMarche&#8217;s reasoning, it&#8217;s a good idea to nil out the mDiplomat variable on release, so that it won&#8217;t crash when you message it. But in this case, messaging nil for a BOOL result causes a logical flaw in the program, with obviously dire consequences. If the instance variable were not set to nil, it would probably crash before the launch message could ever be sent.</p>
<p>We should aim to comprehend what our software actually does. Deliberately decreasing the symptoms of problematic code won&#8217;t lead us any closer to that understanding. Ship the best code you have to your customers, and if it crashes, try to fix the root cause of the crash as quickly as possible. Don&#8217;t get in the habit of writing &#8220;hope this fixes it&#8221; code, and by all means don&#8217;t adopt that philosophy as a boilerplate coding habit.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/1423/dont-coddle-your-code/feed</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
	</channel>
</rss>

