<?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; Ideas</title>
	<atom:link href="http://www.red-sweater.com/blog/category/articles/ideas/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>Authentic Comments</title>
		<link>http://www.red-sweater.com/blog/1704/authentic-comments</link>
		<comments>http://www.red-sweater.com/blog/1704/authentic-comments#comments</comments>
		<pubDate>Tue, 22 Feb 2011 21:32:35 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=1704</guid>
		<description><![CDATA[I was inspired to think about the problem of impersonation on the web, when I read Caterina Fake&#8217;s comment on Twitter, bemoaning the fact that somebody was able to impersonate her in a comment on GigaOm. Because they used an email associated with her by Gravatar, the comment gained an element of authenticity because her avatar [...]]]></description>
			<content:encoded><![CDATA[<p>I was inspired to think about the problem of impersonation on the web, when I read Caterina Fake&#8217;s <a href="https://twitter.com/caterina/status/39935668142473216">comment on Twitter</a>, bemoaning the fact that somebody was able to impersonate her in a comment on <a href="http://gigaom.com/">GigaOm</a>. Because they used an email associated with her by <a href="http://en.gravatar.com/">Gravatar</a>, the comment gained an element of authenticity because her avatar picture appeared by it.</p>
<p>My initial reaction, like Caterina&#8217;s, was to assume there is something wrong in the Gravatar model. Why should somebody be able to masquerade as me simply by guessing the email address I associated with Gravatar? But Matt Mullenweg of <a href="http://www.automattic.com/">Automattic</a>, which owns Gravatar, <a href="http://twitter.com/#!/photomatt/status/40082360506515456">explained concisely</a> that the fundamental problem of impersonation cannot be prevented by their service. An impersonator could just as easily have associated a new email, &#8220;fakecaterina@example.com&#8221; with Gravatar, and uploaded a copy of her avatar.</p>
<h3>A Hopeless Situation?</h3>
<p>I am convinced by Matt&#8217;s claim that Gravatar is not in a position to <em>prevent impersonation</em>. However, it&#8217;s possible to imagine ways in which Gravatar could <em>promote authenticity</em>. Gravatar already allows me to create an account through which I claim email addresses and can control which avatars should appear for these addresses. In addition, it allows me to confirm that account&#8217;s association with certain services such as Blogger.com, Facebook, Twitter, etc. This, combined with the fact that use of Gravatar is already widespread on the web, makes it a great candidate for serving as an arbiter of trust in arbitrary contexts on the web.</p>
<p>Web sites that make use of Gravatar&#8217;s services are currently able to fetch an image associated with a particular email address, by <a href="http://en.gravatar.com/site/implement/hash/">manipulating</a> (hashing) the user&#8217;s email address in such a way that the email address is no longer discernable, but Gravatar can easily look up the associated avatar image.</p>
<p>There are steps that Gravatar could take to make possible the &#8220;authentication&#8221; of specific Gravatar appearances on the web. It would be exhausting to elaborate on the variety of ways this might be done, and many of the options that spring to mind also bring to mind many pitfalls and annoyances, not to mention significant service demands on Gravatar. Maybe the authentication would require hosting sites to present authentication keys, or maybe users would just whitelist particular comment URLs. Let&#8217;s not get bogged down in details: the details are for companies like Gravatar to take on if they choose to meet the challenge.</p>
<p>In a world where Gravatar offered some form of per-use authentication, a site like GigaOm could show a trust icon next to commenters&#8217; avatars, or maybe it would be integrated into the avatar as a form check-mark badge or something. Click on the trust icon and it might take you to a Gravatar page where a curious reader could gauge authenticity with Gravatar&#8217;s help:</p>
<blockquote><p>The Gravatar being shown at <em>&lt;link to e.g. a comment url&gt;</em> was verified by Daniel Jalkut, a registered Gravatar user. Daniel is known to be associated with Twitter ID &#8220;danielpunkass&#8221;, and controls the web site domain http://www.red-sweater.com. For more information, view his profile here.</p></blockquote>
<p>The current Gravatar <a href="http://en.gravatar.com/site/implement/profiles/">user profiles</a> already lean strongly towards identity confirmation. Some clever techniques for authenticating comments would not eliminate impersonation, but would allow identity-concerned users such as Caterina a means of participating in web conversations while proactively confirming their own identities.</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/1704/authentic-comments/feed</wfw:commentRss>
		<slash:comments>8</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>When I Joined Apple</title>
		<link>http://www.red-sweater.com/blog/1146/when-i-joined-apple</link>
		<comments>http://www.red-sweater.com/blog/1146/when-i-joined-apple#comments</comments>
		<pubDate>Sat, 03 Apr 2010 03:50:14 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Nostalgia]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=1146</guid>
		<description><![CDATA[When I joined Apple in May, 1996, the company was filled with geniuses who were trying to invent the future. Despite that brilliance, Apple was failing. I came on board because I was young, had just started using a Macintosh, and I knew something great was happening. I was eager to find out what it [...]]]></description>
			<content:encoded><![CDATA[<p>When I joined Apple in May, 1996, the company was filled with geniuses who were trying to invent the future. Despite that brilliance, Apple was failing. I came on board because I was young, had just started using a Macintosh, and I knew something great was happening. I was eager to find out what it was and, if possible, to help it grow.</p>
<p>I was lucky to join one of the most cavalier and competent teams in the company: the Mac OS system integration team. In a nutshell, we were in charge of the Mac OS System File, &#8220;System Enabler,&#8221; and other crucial bits that made your Mac a Mac. Whoo-hoo! Power! We made or broke your Mac experience, hopefully making more than breaking. I took my new job seriously and stepped carefully with every change. It felt great, and I cherished every contribution I made.</p>
<p>Later, I moved to the Mac OS X team and did similar work on the infrastructure of Mac OS X. In particular, with how it deals with older applications that rely on the &#8220;Carbon&#8221; framework. After years of using a custom Mac-only environment called MPW, I was using standard UNIX tools and building UNIX libraries. This felt awesome! I had grown up using an Amiga, then switched to Sun OS, where I spent a lot of time getting familiar with UNIX. There I was, and Apple decides to put the best UI in the world on top of Unix. I was in heaven.</p>
<p>While I was at Apple I saw a lot of failure. I saw the Newton fail. I saw Pippin fail. I saw PowerTalk fail. I saw Cyberdog fail. I saw Apple desperate to sell even a few hundred thousand Macs in a quarter. I saw the press lambast us and declare us dead. &#8220;Beleaguered&#8221; became an unfortunately common word in our office life.</p>
<p>But I kept looking around me, and I saw nothing but signs of success. I marveled at QuickTime, speech recognition, networking technologies like ZeroConf (Bonjour), and other things that have never seen the light of day. This company is awesome! I want to work here! They&#8217;re going to change the world!</p>
<p>Of course, they already had changed the world with the Apple II and the Macintosh, but as a young 20 year old, I was anticipating future growth. It was a bad time for Apple: competitors and the press were declaring our obsolescence. Michael Dell said we should give the money back to the shareholders and close the company. We persisted on a wing and a prayer, driven by Steve Jobs&#8217;s admonition that we could beat Dell. I believed in that mission, and I believe in it still.</p>
<p>In 2005, I wrote boldly about <a href="http://www.red-sweater.com/blog/69/adis-a-las-computadoras-dell">the end of Dell</a>, and I have to confess I was a little over-ambitious. I could see a path where Apple would take Dell down faster than they have. I was wrong. Dell is still a strong  company. But that will change soon.﻿</p>
<p>I joined Apple because they were threatening to change the world. I stayed on at Apple because they were changing the world. And I remain loyal to that company because, in spite of my absence, they have changed the world. In more ways than I can imagine, they&#8217;re inventing the future. And I&#8217;m along for the ride.</p>
<p>Dell is not changing the world, Microsoft is not changing the world. Hewlett-Packard is not changing the world.</p>
<p>Apple is changing the world, and damn it feels good to be part-Apple today.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/1146/when-i-joined-apple/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>And The Awarding Goes To</title>
		<link>http://www.red-sweater.com/blog/967/and-the-awarding-goes-to</link>
		<comments>http://www.red-sweater.com/blog/967/and-the-awarding-goes-to#comments</comments>
		<pubDate>Mon, 26 Oct 2009 19:15:45 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rant]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=967</guid>
		<description><![CDATA[What distinguishes developers on the Mac from those who design for other platforms such as Windows and Linux? We often answer the question with a flip response that makes us feel good about ourselves: Mac developers are perfectionists. Mac developers are community-oriented. Mac developers are not obsessed with the bottom line. Mac developers are passionate. [...]]]></description>
			<content:encoded><![CDATA[<p>What distinguishes developers on the Mac from those who design for other platforms such as Windows and Linux? We often answer the question with a flip response that makes us feel good about ourselves:</p>
<ul>
<li>Mac developers are perfectionists.</li>
<li>Mac developers are community-oriented.</li>
<li>Mac developers are not obsessed with the bottom line.</li>
<li>Mac developers are passionate.</li>
</ul>
<p>
But admit it: these characteristics are common to developers on all platforms. So why do Mac developers consistently produce the most refined, friendly, user-empowering, beautiful software on the planet? (My opinion only! You&#8217;re welcome to yours). I believe that excellence is achieved by these <strong>passionate, community-oriented perfectionists who are not obsessed with the bottom line</strong>, and that the <strong>Mac ecosystem supports these four characteristics</strong> in a more balanced manner than any other platform.
</p>
<p><h3>The Four Characteristics</h3>
</p>
<p>
How do these characteristics help to propel a developer towards success? What does it mean to exude these qualities, and how do they concretely impact one&#8217;s ability to produce excellent software?
</p>
<p>
<strong>Perfectionism</strong> is commonly considered to be a fault, and in excess it can certainly be one. For the purposes of this discussion I consider perfectionism to describe the quality in a developer that drives her to always go &#8220;one step further&#8221; with the elegance of a solution. One step further than what? Than an average peer would expect of her. By consistently exceeding expectations, even by a small amount, a software perfectionist goes a long way towards producing those &#8220;this is freaking amazing!&#8221; reactions among users, and helps to raise the expectations bar among peers ever higher.
</p>
<p>
<strong>Community-orientation</strong> describes the extent to which developers choose not to work inside a vacuum. A platform <a href="http://www.red-sweater.com/blog/384/were-in-this-together">whose developers share ideas</a>, code, criticism, and praise over social networking technologies, mailing lists, and blogs like this, is a stronger community. Each participant gains access to a percentage of the other members&#8217; experience and equipment, producing a multiplier effect on productivity and the consensus standard of excellence.
</p>
<p>
A developer who is <strong>not obsessed with the bottom line</strong> clings to a non-monetary motivation as the primary reason for his work. Whether that motivation is to create software that is beautiful in appearance, smaller in code size, or more shareable among community members, the lack of financial obsession will permit him to travel further down that path than he otherwise would. Developers who are obsessed with the bottom line understand that in identifying and filling a specific need among users, they reap the maximum return on their development investment, without <em>wasting resources</em> on frivolous refinements.
</p>
<p>
Given the obsession with financial return by society at large, a developer who chooses perfectionism, community, and the pursuit of excellence for its own sake would be judged a fool by many. Prioritization of these values over cold hard hash is such an uphill battle in society, that only a person who is <strong>incredibly passionate</strong> about what they do is likely to overcome the forces that fight against it. Passion drives individual developers to continue bucking the trend, and to carry on relentlessly towards the idealistic goals of the community as a whole.
</p>
<p><h3>Bringing It All Together</h3>
</p>
<p>
To reiterate my point: I believe that the Mac platform rewards for these characteristics in a more balanced manner than any other platform. Which is not to say that Mac developers have the &#8220;best&#8221; of these characteristics. On the contrary, we have lucked into a scenario where we have the most pragmatic proportions of each, which sometimes means more, and sometimes means less.
</p>
<p>
Now we come to the part of the article <strong>where I offend everybody</strong>, by offering my painfully stereotypical views of the three major platforms: Linux, Windows, and Mac OS X. Look, I realize I&#8217;m generalizing, but try to find the kernel of truth in what I&#8217;m offering. Sure, I&#8217;m talking out of my ass, but maybe it has something interesting to say.
</p>
<p>
Take Linux, for example. Developers on this platform are undeniably passionate, community-oriented, and intensely unobsessed with the bottom line. But this is not enough to produce excellent software. Possibly because perfectionism (at least in user-facing interfaces) has never become a priority among Linux developers, their solutions are inevitably disappointing to those of us who have grown to appreciate the usability of the Mac. But their passionate rebuke of the bottom line has nonetheless allowed them to advance their priority for intensely shareable and well-optimized low-level code.
</p>
<p>
Windows developers are most likely to recognize a market opportunity and to run towards that goal, producing software that is imperfect but which meets the letter of user requirements. It&#8217;s uncommon for Windows users to celebrate a perfectionist nuance of some application, because applying those refinements takes valuable development time and doesn&#8217;t obviously advance towards the goal of a marketable product. Because this standard of excellence has been maintained at a relatively low level over the years, Windows users on the whole are not even aware that there exists a higher standard to be met.
</p>
<p>
So what makes the Mac so freaking special? We&#8217;re a small enough group that community cohesion is practically fulfilled by default. If you spend a few years in the Mac developer community, there&#8217;s a good chance you&#8217;ll meet everybody else who cares to meet everybody else. Because of this strong community bond, we have a situation where this mythical expectations bar is not only being constantly raised, but everybody in the community can see that it&#8217;s so, and encourages one another to push it still higher.
</p>
<p>
Because we are not obsessed with the bottom line, we can pursue our <em>quaint</em> preference for usability and beautiful design, without the constant fear of &#8220;missing an easy sell.&#8221; We restrict features for the good of the product, even when adding them might prove financially rewarding in the short term. But we are not <em>unconscious</em> of the financial implications of our products. We understand that in order to continue propelling ourselves down this path towards software Shangri-La, we need to earn enough money to keep our enterprises going. We embrace the techniques of earning money as a means to further the primary goal of producing excellent software.
</p>
<p>
Because the allure of the market has us constantly <em>considering</em> the financial rewards, it would be easy to lose track of our sights and become obsessed with the cash. But passion in the community has remained so strong, that we tend to remain fixated on excellence and pragmatically curious about the cash. Because the user base that has evolved over time on the Mac does acknowledge this excellence, we&#8217;re more likely to continue making a reasonable income even as we deprioritize that as the main goal.
</p>
<p><h3>Patting Ourselves On The Back</h3>
</p>
<p>
We feel so good about our lofty development ideals, that we spend a lot of time kicking back and reflecting on what a great job we&#8217;re doing. Some of us even write lengthy blog posts sycophantically congratulating ourselves on a collective &#8220;job well done.&#8221; Jerks.
</p>
<p>
In spite of our skillful self-adulation, we also appreciate and seek the opportunity to be rewarded with admiration from presumably unbiased groups. That is to say, we&#8217;re interested in awards.
</p>
<p>
In the Mac developer world the most prestigious awards are the <a href="http://developer.apple.com/wwdc/ada/index.html">Apple Design Award</a> and the Macworld &#8220;Editor&#8217;s Choice Awards&#8221;, or <a href="http://www.macworld.com/article/137245/eddyawards_main.html">Eddys</a>. Outside of these two major commendations, there is little structured limelight for developers who are pursuing excellence. Understandably, it is a great honor to receive one of these awards, but given the relatively small number of developers who are recognized each year, most developers are unlikely to ever receive one.
</p>
<p>
Sensing the thirst for additional developer recognition, Michael McCracken proposes a <a href="http://michael-mccracken.net/2009/10/id-like-to-see-a-community-run-version/">community run version of the Apple Design Awards</a>, where developers would themselves determine and dole out rewards for what we respect most among our peers. A major rationale is to remove Apple&#8217;s bias for applications that make most use of the technologies that Apple is pushing, and this seems like a laudable goal. Of course, Macworld&#8217;s Eddys are already fulfilling this to some extent, and the &#8220;Reader&#8217;s Choice Awards&#8221; that they also hand out do a good job of capturing the priorities of the customer base.
</p>
<p>
But what Michael is proposing would be something akin to what the Academy Awards provide to professionals in the film industry: the opportunity to judge and be judged for excellence by your peers. The people who <strong>really get</strong> what you&#8217;re trying to go for, and whether you&#8217;ve achieved it.
</p>
<p>
I think it&#8217;s an interesting idea, and I have to admit I take some comfort in the idea of receiving awards. I was lucky enough to win an Eddy award for MarsEdit a few years ago, and it was a major motivator and all-around good feeling. I respect people like Jason Fried of 37signals, who <a href="http://twitter.com/jasonfried/status/1256592605">rejects the value of awards</a> in the software and web industry. From the 37signals <a href="http://37signals.com/design">web site</a>:
</p>
<blockquote><p>37signals does not enter award competitions. We believe that the self-congratulating awards &#8220;scene&#8221; encourages agencies to misplace their priorities on the opinions of their peers, rather than the needs of clients and their customers.</p></blockquote>
<p>
I can relate to this sentiment, and I have seen some developers have their priorities apparently hijacked by efforts to meet the criteria, for instance, of an Apple Design Award. I recall chatting with Manton Reece on Core Intuition (probably Episode 18: <a href="http://www.coreint.org/2009/05/episode-18-who-will-be-the-lead-singer/">Who Will Be The Lead Singer</a>) about the design awards, where I consoled myself about failing to win the coveted Apple award. I spoke of how gratifying it is simply to get positive feedback from customers in the form of friendly email notes, or yes, the welcome act of purchasing. These small but recurring motivational rewards, I dubbed the &#8220;Customer Design Awards.&#8221; It&#8217;s probably worth reminding ourselves that these are in fact the most important awards of all, but anything new that comes with a cute statue or plaque would still be welcomed!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/967/and-the-awarding-goes-to/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Easy Features</title>
		<link>http://www.red-sweater.com/blog/870/easy-features</link>
		<comments>http://www.red-sweater.com/blog/870/easy-features#comments</comments>
		<pubDate>Thu, 30 Jul 2009 17:22:24 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=870</guid>
		<description><![CDATA[Brent Simmons writes on the Anatomy Of A Feature, using his recent work in NetNewsWire to add support for the popular Instapaper service: It’s tempting to think that adding a feature like this is just about adding the functionality — but there’s a bunch more to it than that. Here you see the gory, deliberate [...]]]></description>
			<content:encoded><![CDATA[<p>Brent Simmons writes on the <a href="http://inessential.com/2009/07/30/anatomy_of_a_feature">Anatomy Of A Feature</a>, using his recent work in <a href="http://www.newsgator.com/INDIVIDUALS/NETNEWSWIRE/">NetNewsWire</a> to add support for the popular <a href="http://www.instapaper.com/">Instapaper</a> service:<br />
<blockquote>It’s tempting to think that adding a feature like this is just about adding the functionality — but there’s a bunch more to it than that.</p></blockquote>
<p>
Here you see the gory, deliberate details that a responsible developer must consider when adding even what seems like an incredibly &#8220;easy feature.&#8221;
</p>
<p>
Without a doubt, the part of my job that slows me down the most is exactly this kind of consideration. I <em>want</em> to add a new feature, but not until I have evaluated how the feature best fits in the structure of the application as it exists today.
</p>
<p>
Sometimes even an &#8220;easy feature&#8221; requires massive overhaul of the application, so that it doesn&#8217;t feel tacked-on or cheaply done. If the feature is important enough, it&#8217;s worth practically rewriting your application, just to add something that looks like it must have taken all of 10 minutes to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/870/easy-features/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Invest In Yourself</title>
		<link>http://www.red-sweater.com/blog/642/invest-in-yourself</link>
		<comments>http://www.red-sweater.com/blog/642/invest-in-yourself#comments</comments>
		<pubDate>Fri, 28 Nov 2008 21:26:55 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Motivation]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=642</guid>
		<description><![CDATA[I made an offhand quip on the latest Core Intuition podcast, that in light of the recent stock market plunge, I should have invested money into my own company instead of the likes of Yahoo and Apple. I was (mostly) joking, but there&#8217;s a philosophical truth in there. All of us have lately learned, or [...]]]></description>
			<content:encoded><![CDATA[<p>I made an offhand quip on the latest <a href="http://coreint.org/">Core Intuition</a> podcast, that in light of the recent stock market plunge, I should have invested money into my own company instead of the likes of Yahoo and Apple.</p>
<p>
I was (mostly) joking, but there&#8217;s a philosophical truth in there. All of us have lately learned, or been reminded, that there are no guarantees when it comes to investing money. At the core of most investments is the expectation that one day down the road, we&#8217;ll take back more dollars than we put in today. We&#8217;re disappointed at best and devastated at worst if we are forced to cash out with less money than we started with.
</p>
<p>
But many of life&#8217;s investments are risk free precisely because we don&#8217;t expect anything tangible in return. So be sure to spend at least some of your dollars and time on something more valuable and permanent than money. Education, artistic expression, good health, time with family &#038; friends, travel, or pursuing your own particular favorite pastime.
</p>
<p>
All of these investments yield immediate, intangible returns that can&#8217;t be diminished at the whim of bankers, stockholders, or public policy makers. People who invest <em>only for financial return</em> wind up going mad with money lust. Losing their investments spells catastrophe. A pity they never took the time to write a novel or learn to play guitar.
</p>
<p>
In short, invest in yourself and you&#8217;ll always have plenty of you to value.
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/642/invest-in-yourself/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Building A Bigger Nerd Ranch</title>
		<link>http://www.red-sweater.com/blog/598/building-a-bigger-nerd-ranch</link>
		<comments>http://www.red-sweater.com/blog/598/building-a-bigger-nerd-ranch#comments</comments>
		<pubDate>Fri, 26 Sep 2008 04:52:31 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Indie]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Macintosh]]></category>
		<category><![CDATA[Motivation]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/?p=598</guid>
		<description><![CDATA[When newcomers to programming on the Mac ask me for advice about getting started with Cocoa, I usually boil it down to three steps, depending on the amount of time and money they are prepared to put into the task: If you&#8217;re the slightest bit curious, buy Mark Dalrymple and Scott Knaster&#8217;s affordable book, Learn [...]]]></description>
			<content:encoded><![CDATA[<p>When newcomers to programming on the Mac ask me for advice about getting started with Cocoa, I usually boil it down to three steps, depending on the amount of time and money they are prepared to put into the task:</p>
<ol>
<li>If you&#8217;re the slightest bit curious, buy <a href="http://borkwarellc.wordpress.com/">Mark Dalrymple</a> and <a href="http://www.knaster.com/">Scott Knaster&#8217;s</a> affordable book, <a href="http://www.spiderworks.com/books/learnobjc.php">Learn Objective-C on the Macintosh</a>. It&#8217;s great that this book not only starts from the very beginning, but is available as an easy electronic download, for instant gratification.</li>
<li>If you&#8217;re convinced you&#8217;re in for the long haul, but prefer to learn at your own pace and in your spare time, pick up Aaron Hillegass&#8217;s <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FCocoa-Programming-Mac-OS-3rd%2Fdp%2F0321503619%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1222398930%26sr%3D1-1&#038;tag=redsweaterblo-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Cocoa Programming for Mac OS X</a><img src="http://www.assoc-amazon.com/e/ir?t=redsweaterblo-20&amp;l=ur2&amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.</li>
<li>If it&#8217;s time to put the pedal to the metal, and you want to minimize the chances of failing as you learn the basics of this art, drop everything and enroll in the <a href="http://bignerdranch.com/classes/objective-c_cocoa.shtml">Objective-C and Cocoa Bootcamp</a> class at <a href="http://bignerdranch.com/">Big Nerd Ranch</a>.</li>
</ol>
<p>
Big Nerd Ranch is run by the very Aaron Hillegass who authored the book you picked up in step 2, and he teaches the Cocoa bootcamp class himself. The class is not cheap, but neither is it exploitatively expensive. You will learn to program for the Macintosh with a group of classmates, living and programming on a bucolic country retreat, where your meals and lodging are taken care of.
</p>
<p>
The Big Nerd Ranch concept is exciting, and I have often fantasized about attending a class there myself. I&#8217;m probably overqualified for the boot camp, though as with most life experiences, you learn something when you review the basics. The ranch offers a variety of classes in addition to the boot camp, including courses on more advanced Cocoa programming, iPhone development, and even on Django and Ruby on Rails web programming.
</p>
<p>
Right now, Aaron is busy building a bigger, better, greener, serener (funner? funnest?) Big Nerd Ranch. He&#8217;s actually bought a large plot of land and is drafting plans for several new buildings. He&#8217;s treating all of us to many glorious details on his personal blog: <a href="http://www.possibleprobable.com/">possible/probable</a>. The blog frames itself as the chronicle of a man in his mid-youth, aiming to improve an already successful life by taking chances and aiming for the stars. It so happens that his stars form a constellation that idealizes and glorifies learning to program on the Mac.
</p>
<p>
When you check out the blog, be sure to read through the archives. You&#8217;ll be riveted by his stories of searching for suitable property, securing bank loans, winning and losing architects, and grappling with the underlying question of just how crazy pursing this dream might be.
</p>
<p>
Fortunately for us, Aaron seems to be guiding his own life with the words of his blog title, &#8220;possible&#8221; and &#8220;probable.&#8221; I interpret these slash/stroke separated terms optimistically, as I expect he does. If you can imagine something, if it seems vaguely possible, then with a little work it is made probable.
</p>
<p>
I find Aaron&#8217;s optimism inspiring, and his stories remind me of my own possible/probable dreams still waiting to be fulfilled. His zeal for the pursuit of happiness rests safely between recklessness and painful deliberation. He recognizes that while frightening risks need to be taken, putting in hours of hard and tedious work will greatly improve the odds of success.
</p>
<p>
We should all get to work turning our own possibilities into probabilities, because nobody else is going to do it for us. With the help of Aaron&#8217;s blog, we might find ourselves inching just a little bit closer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/598/building-a-bigger-nerd-ranch/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Add Meaning To Key Value Strings</title>
		<link>http://www.red-sweater.com/blog/337/add-meaning-to-key-value-strings</link>
		<comments>http://www.red-sweater.com/blog/337/add-meaning-to-key-value-strings#comments</comments>
		<pubDate>Tue, 22 May 2007 12:30:32 +0000</pubDate>
		<dc:creator>Daniel Jalkut</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.red-sweater.com/blog/337/add-meaning-to-key-value-strings</guid>
		<description><![CDATA[Fraser Speirs recently tweeted some comments about strings in code: &#8220;I think that I particularly hate strings in code that have programmatic meaning. I&#8217;m looking at you, KVC. And you, KVO.&#8221; Reading this was one of those &#8220;yeah, that sucks!&#8221; moments, and it got me thinking about how the situation might be improved. The problem [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://connectedflow.com/blog/">Fraser Speirs</a> recently <a href="http://twitter.com/fraserspeirs/statuses/68372242">tweeted</a> some comments about strings in code:</p>
<blockquote><p>
&#8220;I think that I particularly hate strings in code that have programmatic meaning. I&#8217;m looking at you, KVC. And you, KVO.&#8221;
</p></blockquote>
<p>
Reading this was one of those &#8220;yeah, that sucks!&#8221; moments, and it got me thinking about how the situation might be improved. The problem isn&#8217;t that strings are used to drive the logical flow of an application &#8211; this is nothing new. Since long before KVC (<a href="http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/Concepts/Overview.html">Key Value Coding</a>) and KVO (<a href="http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueObserving/index.html">Key Value Observing</a>) came along, Cocoa has employed data-driven techniques for dictating logical flow in an application.
</p>
<p>
Consider Objective-C selectors. These are essentially &#8220;key value coded methods.&#8221; A selector is conceptually a string, so much so that Objective C offers a shorthand for creating selectors directly from text in your code:
</p>
<p>
<code></p>
<pre>
SEL mySelector = @selector(doSomething:);
</pre>
<p></code>
</p>
<p>
Apple even recognizes the desire to create selectors dynamically at runtime, and offers the <a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/func/NSSelectorFromString">NSSelectorFromString</a>.
</p>
<p>
A great thing about selectors is that they&#8217;re only <em>conceptually</em> strings. The &#8220;SEL&#8221; data type is defined as an opaque data structure pointer. If you examine the memory of the structure (as of 10.4) you&#8217;ll see that it looks quite a lot like a string, which is handy for debugging, but it&#8217;s not <em>guaranteed</em> to be a string.
</p>
<p>
The opaque &#8220;obstruction&#8221; Apple has inserted between the conceptual and implementation levels mean two things:
</p>
<p><ol>
<li>Apple can change the implementation at any time to something that suits the system better.</li>
<li>Compilers can do first-class type checking on methods and functions that expect selector arguments.</li>
</ol>
<p>
Compare the selector situation with its much younger sibling, who seems to have been born in a hurry and without as much planning:
</p>
<p>
<code></p>
<pre>
id myValue = [myObject valueForKey:@"hello"];
</pre>
<p></code>
</p>
<p>
In contrast to selectors, where semantic meaning is locked into the explicit SEL data type, here we must derive meaning from the context of the constant string data. We only know that &#8220;hello&#8221; is a key (or we hope it is) because it is preceded by a &#8220;valueForKey:&#8221; method signature. It would have been a bit more cumbersome for Apple and developers if they&#8217;d defined a &#8220;KeyCode&#8221; type and required it in all key value coding and observing method parameters:
</p>
<p>
<code></p>
<pre>
id myValue = [myObject valueForKey:@keycode(hello)];
</pre>
<p></code>
</p>
<p>
But suddenly the string itself has a lot more meaning. You might argue that in this example, the problem is the same, but there&#8217;s just more context to surround the literal string. That&#8217;s kind of true, but with a true compiler type the meaning sticks with the variable long after it&#8217;s typed or viewed in the code. Methods could dynamically distinguish plain strings from coding strings, a compiler could produce warnings based on semantic knowledge of keys (&#8220;that string doesn&#8217;t conform to key coding syntax&#8221;), and runtime statistics could be gathered about the number of keys that are used by your application (whatever that is worth).
</p>
<p>
I haven&#8217;t really thought this through too far, but I&#8217;m curious why Apple chose not to mimic their own treatment of selectors when it came time to base another critical technology on conceptual strings. I wonder if a &#8220;strongly typed&#8221; set of key value coding methods as a wrapper on Foundation&#8217;s methods would prove useful in my projects, or be a misguided waste of time. What do you think?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.red-sweater.com/blog/337/add-meaning-to-key-value-strings/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

