<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Kartik Subbarao</title>
	
	<link>http://kartiksubbarao.com</link>
	<description>Intuitions, Ideas, Implementations, Insights</description>
	<lastBuildDate>Fri, 20 Aug 2010 20:42:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/kartiksubbarao" /><feedburner:info uri="kartiksubbarao" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>kartiksubbarao</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Organizational Dimensions, Personality Types and Development</title>
		<link>http://feedproxy.google.com/~r/kartiksubbarao/~3/2V5__l_hyHc/organizational-dimensions-personality-types-and-development</link>
		<comments>http://kartiksubbarao.com/organizational-dimensions-personality-types-and-development#comments</comments>
		<pubDate>Fri, 20 Aug 2010 20:42:37 +0000</pubDate>
		<dc:creator>Kartik Subbarao</dc:creator>
				<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Personal Development]]></category>
		<category><![CDATA[interdependence]]></category>
		<category><![CDATA[jung]]></category>
		<category><![CDATA[models]]></category>
		<category><![CDATA[personality]]></category>

		<guid isPermaLink="false">http://kartiksubbarao.com/?p=75</guid>
		<description><![CDATA[In Transforming Your Company with Open Source (slide 9), I list some of the distinctive characteristics of four fundamental dimensions of companies:



PEOPLE
&#160;
Talent and Skills
Organizational Knowledge and Wisdom
Social Networks
Communities of Practice
Values and Ethics

TECHNOLOGY
&#160;
Enabling Possibilities
Creating/Designing Products and Services
Invention and Innovation
Productivity Tools
Platforms



Managing Realities
Operations
Quality
Governance
Organizational Structure
&#160;
PROCESS


Assets, Liabilities and Equity
Investments and Profitability
Sales and Marketing
Customer Value
Strategy and Objectives
&#160;
BUSINESS



In slide 15, I relate [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://kartiksubbarao.com/transforming-your-company-with-open-source-linuxcon-2009">Transforming Your Company with Open Source</a> (slide 9), I list some of the distinctive characteristics of four fundamental dimensions of companies:</p>
<table style="margin-left: auto; margin-right: auto">
<tr>
<td style="color: white; background-color: #33cc66; border-bottom-width: 0">
<span style="font-size: 150%">PEOPLE</span><br />
&nbsp;<br />
Talent and Skills<br />
Organizational Knowledge and Wisdom<br />
Social Networks<br />
Communities of Practice<br />
Values and Ethics</td>
<td style="color: white; background-color: #00b8dc; border-bottom-width: 0">
<span style="font-size: 150%">TECHNOLOGY</span><br />
&nbsp;<br />
Enabling Possibilities<br />
Creating/Designing Products and Services<br />
Invention and Innovation<br />
Productivity Tools<br />
Platforms</td>
</tr>
<tr>
<td style="color: white; background-color: #663300">
Managing Realities<br />
Operations<br />
Quality<br />
Governance<br />
Organizational Structure<br />
&nbsp;<br />
<span style="font-size: 150%">PROCESS</span>
</td>
<td style="color: white; background-color: #c82300">
Assets, Liabilities and Equity<br />
Investments and Profitability<br />
Sales and Marketing<br />
Customer Value<br />
Strategy and Objectives<br />
&nbsp;<br />
<span style="font-size: 150%">BUSINESS</span>
</td>
</tr>
</table>
<p>In slide 15, I relate the nature of these dimensions to the nature of the psychological functions in Jungian personality theory (see the first few paragraphs of <a href="http://kartiksubbarao.com/personality-type-and-the-open-source-community">Personality Type and the Open Source Community</a> for some more background information). Although the organizational dimensions aren&#8217;t as clearly orthogonal or as polar as the psychological functions, there&#8217;s enough there to generate the same kind of dynamics. I think we can go so far as to map these dimensions to their most closely affiliated function:</p>
<table style="margin-left: auto; margin-right: auto">
<tr>
<th>Organizational Dimension</th>
<th>Psychological Function</th>
</tr>
<tr>
<td>Technology</td>
<td>Intuition (N)</td>
</tr>
<tr>
<td>Business</td>
<td>Thinking (T)</td>
</tr>
<tr>
<td>People</td>
<td>Feeling (F)</td>
</tr>
<tr>
<td>Process</td>
<td>Sensing (S)</td>
</tr>
</table>
<p>I&#8217;d like to clarify that I&#8217;m not trying to reduce each organizational dimension into its corresponding psychological function. We can use all of our functions when working on any of the organizational dimensions. What I am pointing out is the tendency for a function to have a characteristic association with its corresponding dimension. For example, when we talk about making Business decisions, we&#8217;re almost always talking about T decisions that need to be made impersonally and objectively. When we&#8217;re exploring Technology, it&#8217;s N that is able to make the biggest leaps with invention and innovation. The People dimension is full of complex F considerations &#8212; values and relationships. The S attention to detail is instrumental in defining and precisely executing processes that are grounded in reality.</p>
<p>This becomes even more evident in the simultaneously complementary and contentious interactions between the polar-opposite pairs T-F and N-S. T wants to make objective decisions and F wants to make personal decisions. S wants to look at specific experiences and N wants to look at general observations.</p>
<p>According to Jungian personality theory, when we develop our personalities, we develop, or <em>differentiate</em>, a preferred function for taking in information (either N or S) and a preferred function for making decisions (either T or F). As we gain competence with our preferred functions, we tend to identify with their ways of seeing and dealing with the world, and to disidentify with their opposites. For example, a T type might pride himself on making the &#8220;right&#8221; decisions based on objective criteria, irrespective of his personal feelings. Whereas an F type might pride himself on making the &#8220;right&#8221; decisions based on his personal values, irrespective of the circumstances. As we grow, we discover the limits of our preferred functions, and realize that they&#8217;re only giving us half the story. We then proceed to <em>integrate</em> the perspectives of the other two functions. We still retain our preferences, but we relax our grip on them. We recognize the value of others who are strong in areas that we are not. We can see the world more clearly, and can make wiser decisions.</p>
<p>Now let&#8217;s tie this back to the organizational dimensions, particularly as they are embodied in large organizations. Take a &#8220;business type&#8221; who prides himself on results like increasing market share, expanding the size of his company and maximizing financial return on investment. He may see the technology, people and process dimensions as necessary costs of doing business. He may even recognize that, when developed, they can give his business a competitive advantage. But apart from that, he doesn&#8217;t dwell on them. He&#8217;s not interested in &#8220;technology for technology&#8217;s sake&#8221;, he isn&#8217;t a &#8220;people person&#8221;, and he doesn&#8217;t &#8220;tolerate bureaucracy&#8221;.</p>
<p>The same kind of picture can be painted for others who identify strongly with the people, process or technology dimensions. They may see the business dimension as necessary for providing their job and paycheck. They may even recognize that, when developed, business can yield new opportunities and enriching experiences to learn and contribute, and evolve in their areas of expertise. But they&#8217;re not &#8220;business people&#8221; &#8212; they&#8217;re motivated more by other things.</p>
<p>It&#8217;s valuable to develop a basic level of competence with each of the dimensions. This helps us gauge where our energy, skills and interests are most aligned, and where they aren&#8217;t. We can ascertain where others can be most helpful to us and where we can help them. We can then proceed to develop mastery-level expertise in our most closely aligned dimension(s), with a minimum of distraction or second-guessing.</p>
<p>Just as with the psychological functions, as our awareness increases, we can integrate the perspectives of the other organizational dimensions into our thinking. Our attitude goes from seeing the other dimensions as unavoidable nuisances, or accepting them in a utilitarian, transactional kind of way, to actively recognizing their value on their own merits. We are then able to place solid trust in those with strengths in other dimensions, and work with them interdependently to achieve broader goals.</p>
<p>In building this awareness, I think it&#8217;s important to keep in mind this insight from personality theory: We realize our highest potential when we honor our natural preferences, not when we shortchange them. That doesn&#8217;t mean that we cling to them, but it does mean that we don&#8217;t fool ourselves into expecting great results when we adopt someone else&#8217;s preferences instead. Trying to turn a process-wonk into a technology wizard (or vice versa) is ultimately a recipe for mediocrity, not excellence.</p>
<p>When organizations coach people with these principles in mind, they can optimize the talents of their people and accelerate their professional and personal growth.</p>
<img src="http://feeds.feedburner.com/~r/kartiksubbarao/~4/2V5__l_hyHc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kartiksubbarao.com/organizational-dimensions-personality-types-and-development/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kartiksubbarao.com/organizational-dimensions-personality-types-and-development</feedburner:origLink></item>
		<item>
		<title>Transforming Your Company with Open Source — LinuxCon 2009</title>
		<link>http://feedproxy.google.com/~r/kartiksubbarao/~3/cH7VRi3SREY/transforming-your-company-with-open-source-linuxcon-2009</link>
		<comments>http://kartiksubbarao.com/transforming-your-company-with-open-source-linuxcon-2009#comments</comments>
		<pubDate>Tue, 08 Sep 2009 18:56:59 +0000</pubDate>
		<dc:creator>Kartik Subbarao</dc:creator>
				<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Personal Development]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://kartiksubbarao.com/?p=59</guid>
		<description><![CDATA[Update: 9/28/2009: Added slides
Here are the slides from my LinuxCon 2009 presentation on ways to transform your organization with open source. It builds on insights from Open Source and Interdependent IT and many other areas.
Transforming Your Company with Open Source
Make sure to browse through the notes for the slides as well. You can download the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update: 9/28/2009: Added slides</strong></p>
<p>Here are the slides from my <a href="http://linuxcon.linuxfoundation.org/meetings/1534">LinuxCon 2009 presentation</a> on ways to transform your organization with open source. It builds on insights from <a href="http://kartiksubbarao.com/open-source-and-interdependent-it">Open Source and Interdependent IT</a> and many other areas.</p>
<div style="width:425px;text-align:left" id="__ss_2082304"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/kartiksubbarao/transforming-your-company-with-open-source" title="Transforming Your Company with Open Source">Transforming Your Company with Open Source</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ostransform-090928103746-phpapp01&#038;stripped_title=transforming-your-company-with-open-source" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ostransform-090928103746-phpapp01&#038;stripped_title=transforming-your-company-with-open-source" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p>Make sure to browse through the notes for the slides as well. You can download the document from the slideshare.net page.</p>
<p>Here is the abstract below.</p>
<blockquote><p>
How do you get past incremental change to real transformation with open source? Most conventional advice focuses on just one dimension at a time: people, process, business or technology. To get breakthrough results, you need to view these dimensions as part of an integrated whole, and consciously address two or more of them simultaneously. Using examples from Enterprise IT experience, we&#8217;ll explore how you can tap your organization&#8217;s strengths in a variety of ways to achieve these goals. The audience for this session includes technical leaders as well as managers who want to drive change through open technologies, processes, communities, and business models. The session will discuss approaches that can be used by people in a variety of roles.
</p></blockquote>
<img src="http://feeds.feedburner.com/~r/kartiksubbarao/~4/cH7VRi3SREY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kartiksubbarao.com/transforming-your-company-with-open-source-linuxcon-2009/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kartiksubbarao.com/transforming-your-company-with-open-source-linuxcon-2009</feedburner:origLink></item>
		<item>
		<title>Open Source and Interdependent IT</title>
		<link>http://feedproxy.google.com/~r/kartiksubbarao/~3/28XEScOYHzw/open-source-and-interdependent-it</link>
		<comments>http://kartiksubbarao.com/open-source-and-interdependent-it#comments</comments>
		<pubDate>Mon, 31 Aug 2009 15:30:37 +0000</pubDate>
		<dc:creator>Kartik Subbarao</dc:creator>
				<category><![CDATA[Leadership]]></category>
		<category><![CDATA[Personal Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[interdependence]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://kartiksubbarao.com/?p=51</guid>
		<description><![CDATA[In The Seven Habits of Highly Effective People, Stephen Covey presents a maturity continuum that progresses from dependence, to independence, and then to interdependence.
Covey concisely observes: &#8220;Dependent people need others to get what they want. Independent people can get what they want through their own effort. Interdependent people combine their own efforts with the efforts [...]]]></description>
			<content:encoded><![CDATA[<p>In <em><a href="http://www.amazon.com/dp/0743269519/?tag=ksub-20">The Seven Habits of Highly Effective People</a></em>, Stephen Covey presents a <em>maturity continuum</em> that progresses from dependence, to independence, and then to interdependence.</p>
<div id="attachment_52" class="wp-caption aligncenter" style="width: 510px"><a href="http://kartiksubbarao.com/wp-content/uploads/2009/08/maturity-continuum.jpg"><img src="http://kartiksubbarao.com/wp-content/uploads/2009/08/maturity-continuum.jpg" alt="Dependence, Independence and Interdependence" title="maturity-continuum" width="500" height="464" class="size-full wp-image-52" /></a><p class="wp-caption-text">Dependence, Independence and Interdependence</p></div>
<p>Covey concisely observes: &#8220;Dependent people need others to get what they want. Independent people can get what they want through their own effort. Interdependent people combine their own efforts with the efforts of others to achieve their greater success.&#8221;</p>
<p>As we develop along this continuum, it&#8217;s obvious that our level of capability expands tremendously. In the workplace, dependent employees need guidance for major work tasks; independent employees can figure out what they need to know, but they might not share that knowledge; interdependent employees, in addition to their self-sufficiency, are constantly learning from and teaching their network of peers. Interdependence is highly regarded by employers, and shows up on many statements of corporate principles and values.</p>
<p>So how can IT organizations actually develop interdependent thinking and behavior? Here&#8217;s where open source comes in. People need <a href="http://en.wikipedia.org/wiki/Experiential_learning">experiential learning</a> opportunities that present themselves in day to day work. In my experience with IT organizations, open source (and more broadly, <a href="http://sethgodin.typepad.com/seths_blog/2009/05/what-kind-of-open-are-you-looking-for.html">open ways of working</a>) has the power to fundamentally improve the way that people work. In the course of doing their jobs, they can readily adopt behaviors and mental models that move them higher on the maturity continuum.</p>
<div class="kscallout">If money is the only thing that <b>can</b> talk, the conversation becomes significantly constrained</div>
<p>Consider the staff of a dependent IT organization whose relationship with a proprietary vendor centers around licensing and support fees. If they want a new feature added to the product and the vendor has other priorities, there&#8217;s not much they can do. They may be able to get some attention by offering to pay even more money. But even if money talks, if it&#8217;s the only thing that <em>can</em> talk, the conversation becomes significantly constrained. Worse, if they carry that same mindset into internal interactions, thinking that &#8220;this is the only way that business works&#8221;, they risk reducing their own position to a zero-sum game where they can win only by competing for scarce funding. They then remain largely unaware of and unable to tap into the broader resources that they already possess, both individually and collectively.</p>
<p>Open source can liberate IT organizations from that dependence. For starters, they no longer have to pay a licensing fee and can run as many software instances anywhere they want, anytime they want. This is especially relevant in virtualized, cloud computing environments where most traditional licensing metrics (like the number of processors) effectively stifle exploration. They&#8217;re welcome to customize products as much as they want to, since the source code is freely available. Even if they don&#8217;t have the skillset to fix bugs or make enhancements, they can choose to contract with any company that does. In all of these cases, they become more independent than they were before. As they continue to develop, their vocabulary grows to include a fuller range of their skills and capabilities. This enables them to make more granular, intelligent tradeoffs across the spectrum of buying, integrating and building. At the independent stage, IT organizations learn to control their own destiny.</p>
<div class="kscallout">At the interdependent stage, IT organizations can bring an entire ecosystem&#8217;s capabilities to bear to solve their employer&#8217;s problems</div>
<p>IT Organizations get a taste for interdependence when they contribute code changes to an open source project. For example, let&#8217;s say they submit a simple patch to make a particular parameter configurable instead of being hardcoded. Once this change is accepted, instead of having to re-port this patch each time they download a new release, they can rely on it being maintained by the project developers. Developing trust with the project team can encourage them to make further contributions, with the immediate payoff of support and the longer-term reward of getting their most important features added. What really expands their horizons is when they see their work being built upon and extended further by the community, in ways that they could never have previously envisioned. They realize how much more they can accomplish through collaboration than they can on their own. At the interdependent stage, IT organizations can have holistic conversations that represent the capabilities of an entire ecosystem, bringing it to bear to solve their employer&#8217;s specific problems. And as they solve those problems, they can contribute their learnings to advance the capabilities of the ecosystem, fueling a virtuous cycle.</p>
<p>Not all of this happens automatically, of course, or by some fixed timetable where after N months of implementing activities X, Y and Z, IT organizations graduate to interdependence and experience all of its benefits immediately. But it does happen <em>naturally</em>, when people with sufficient baseline capability are immersed in an open environment, are given ample coaching and support, and can see examples of highly skilled behavior in action. Let&#8217;s look at some on-the-job experiences that illustrate this point.</p>
<p>When IT organizations are customers of a proprietary product and something goes wrong, it&#8217;s easy for them to develop a kneejerk reaction to call the vendor and complain. For starters, they&#8217;re paying for support. But what intensifies this is when they feel like they&#8217;ve hit a brick wall and can&#8217;t go any further <em>because</em> the product is closed. If this happens frequently, they may give up even before trying, become even more frustrated with the vendor, or adopt some other less effective behavior. With open source, nothing stands in the way of their own problem-solving skills. IT developers can browse through the code and see if something catches their eye. They can invoke a debugger and see what might be happening in real-time. They can run third-party analysis software on it, or undertake a detailed review themselves if they have the time and inclination. The more familiar they become with a particular project&#8217;s code and with reading source code in general, the more competent they become at solving similar problems in the future. Even if they contract for support on an open source project, they can submit more informed requests that enable the support provider to zone in on their problem more readily. They can also gauge the competence of that support organization based on their grasp of the code, and switch to a better provider if necessary.</p>
<p>Working with high-quality open source projects instructively leads IT organizations to a deeper understanding of and appreciation for open architectures and open standards. Code that reflects a broad understanding of the problem that it&#8217;s solving, addresses it in a clean way, and is as simple as possible, tends to be accepted. Whereas code that defines a problem too narrowly, introduces unnecessary kludges, or increases complexity without substantially increasing usefulness, tends to be rejected. This is an effective counterweight against a tendency in many IT organizations to rush out incomplete solutions that end up causing more problems over time. When contributing code, IT developers learn to think more globally, putting themselves in the shoes of others who share similar challenges albeit in vastly different environments.</p>
<div class="kscallout">Succeeding with open source builds the brands of both employee and employer, and the affinity between those brands</div>
<p>As they succeed with contributing to open source projects with the support of their employer, they gain the respect of fellow users/developers, which directly translates into leadership and influence. Their personal brands and their employer&#8217;s brand increase both in value and in affinity with each other. Employees get public recognition for their efforts, and simultaneously are incented to continue to be affiliated with their employer&#8217;s brand. This type of synergy is a hallmark of interdependent organizations.</p>
<p>An important lesson learned by IT organizations on the road to interdependence is where and when they can optimally invest their resources with open source projects. Some projects are very open to input from the practical experiences of Corporate IT. Other projects are unwilling to adopt suggestions that don&#8217;t align with their strict tenets. The best projects balance purity with pragmatism, maintaining the essence of what makes them valuable as a whole. While experimenting with various approaches, IT organizations discover which problems they want to solve on their own, and which ones they don&#8217;t. They identify where they want to be treated as a customer, where they want to interact as a peer, and where they want to play a leadership role.</p>
<div class="kscallout">Open Source is the foundation of <b>outside innovation</b> and <b>exonovation</b></div>
<p>People who work in this kind of environment, day in and day out, can develop strong collaborative networks all over the world. These networks help to identify those relationships with customers, partners, and others that can be transformed from largely transactional relationships into ones of deeper mutual benefit. They develop instincts for and insights into what makes blogs, wikis, and other social software work best, and can be invaluable in shaping their employer&#8217;s social media strategy. On a broader level, interdependent IT professionals are powerful catalysts of <a href="http://outsideinnovation.blogs.com/">outside innovation</a> as described by Patricia Seybold, and <a href="http://chariottechcast.libsyn.com/index.php?post_id=458384">exonovation</a> [<a href="http://opensolutionsalliance.org/osa/osaalert%28apr09%29-tiemann.html">interview</a>] by Michael Tiemann. They can operate from a <a href="http://kartiksubbarao.com/mental-models-of-commerce-and-community#visionary">visionary mental model</a> of commerce and community.</p>
<p>Open Source is a complex, multidimensional subject that intersects and often integrates the fields of science, technology, business and psychology. By expressly choosing open source as a strategy for developing interdependent capability, IT organizations can provide a growth path for knowledge workers that engages them in a variety of ways and on many levels. Those who become adept at making the interdisciplinary connections can represent their organization to a number of audiences in ways that are directly compelling, and can create new streams of value. They help bring a unified sense of purpose, energy, and vision that inspires people to realize their potential.</p>
<img src="http://feeds.feedburner.com/~r/kartiksubbarao/~4/28XEScOYHzw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kartiksubbarao.com/open-source-and-interdependent-it/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		<feedburner:origLink>http://kartiksubbarao.com/open-source-and-interdependent-it</feedburner:origLink></item>
		<item>
		<title>Exporting del.icio.us blog links to OPML</title>
		<link>http://feedproxy.google.com/~r/kartiksubbarao/~3/CMIGCZ4rS6M/exporting-delicious-blog-links-to-opml</link>
		<comments>http://kartiksubbarao.com/exporting-delicious-blog-links-to-opml#comments</comments>
		<pubDate>Mon, 13 Jul 2009 20:30:34 +0000</pubDate>
		<dc:creator>Kartik Subbarao</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[del.icio.us]]></category>
		<category><![CDATA[feeds]]></category>
		<category><![CDATA[opml]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://kartiksubbarao.com/?p=44</guid>
		<description><![CDATA[I manage my bookmarks in del.icio.us, and tag the ones that are blogs with the blog tag (in addition to subject-related tags). When I want to try out a new blog reader, I can easily export my bookmarked blogs to OPML, using the additional tags as first-level subcategories. If the RSS feed for a given [...]]]></description>
			<content:encoded><![CDATA[<p>I manage my bookmarks in <a href="http://del.icio.us">del.icio.us</a>, and tag the ones that are blogs with the <strong>blog</strong> tag (in addition to subject-related tags). When I want to try out a new blog reader, I can easily export <a href="http://delicious.com/kartik_subbarao/blog">my bookmarked blogs</a> to OPML, using the additional tags as first-level subcategories. If the RSS feed for a given blog isn&#8217;t discoverable with a <tt>&lt;link&gt;</tt> tag on the blog URL, I add it as a line in the notes section: <tt>RSS=http://someblog.com/rssfeed</tt>.</p>
<p>Here&#8217;s the Perl script, <a href="http://kartiksubbarao.com/scripts/delicious_blogs_opml-pl.txt">delicious_blogs_opml.pl</a>, that exports blog links in del.icio.us to OPML format:</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#! /usr/bin/perl</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># delicious_blogs_opml.pl - Export OPML blogs feed from del.icio.us</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> Net<span style="color: #339933;">::</span><span style="color: #006600;">Delicious</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> XML<span style="color: #339933;">::</span><span style="color: #006600;">Feed</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;"># use XML::OPML;</span>
<span style="color: #666666; font-style: italic;"># XML::OPML doesn't work as expected</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$debug</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">'-d'</span> <span style="color: #b1b100;">and</span> <span style="color: #0000ff;">$debug</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">@ARGV</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;usage: $0 [-d] delicious_username:password<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">%tags</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$delusername</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$delpasswd</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/:/</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$del</span> <span style="color: #339933;">=</span> Net<span style="color: #339933;">::</span><span style="color: #006600;">Delicious</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span>
    <span style="color: #009900;">&#123;</span>user <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$delusername</span><span style="color: #339933;">,</span> pswd <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$delpasswd</span><span style="color: #339933;">,</span> debug <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$debug</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Workaround for Net::Delicious:all_posts() not supporting a tags argument:</span>
<span style="color: #666666; font-style: italic;"># $del-&gt;all_posts({tag =&gt; 'blog'}) </span>
<span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">config</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'delicious_posts_all.tag'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;"># Get all blog links from del.icio.us</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$res</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span>_execute_method<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;delicious.posts.all&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>tag <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'blog'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Error calling posts/all<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$posts</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span>_getresults<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$res</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'post'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$post</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span>_buildresults<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'Post'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$posts</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$title</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">description</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$tag</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">' '</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">tags</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
        <span style="color: #0000ff;">$tags</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$tag</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$title</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$post</span> <span style="color: #b1b100;">unless</span> <span style="color: #0000ff;">$tag</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">'blog'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066;">print</span> <span style="color: #cc0000; font-style: italic;">&lt;&lt;EOF;
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;opml version=&quot;1.0&quot;&gt;
&lt;head&gt;
    &lt;title&gt;blogs&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
EOF</span>
&nbsp;
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$tag</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">sort</span> <span style="color: #000066;">keys</span> <span style="color: #0000ff;">%tags</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">print</span> <span style="color: #000066;">qq</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">&lt;</span>outline title<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;$tag&quot;</span> text<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;$tag&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #0000ff;">\n</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$blogname</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">sort</span> <span style="color: #000066;">keys</span> <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$tags</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$tag</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$tags</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$tag</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$blogname</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>href<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$feedurl</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> XML<span style="color: #339933;">::</span><span style="color: #006600;">Feed</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">find_feeds</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #0000ff;">$feedurl</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$extended</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$tags</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$tag</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$blogname</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>extended<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$feedurl</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$extended</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">/^RSS\s*=\s*(\S+)/im</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #0000ff;">$feedurl</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Could not find RSS feed for $url<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #000066;">print</span> <span style="color: #000066;">qq</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">\t</span><span style="color: #339933;">&lt;</span>outline title<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;$blogname&quot;</span> text<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;$blogname&quot;</span> type<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;rss&quot;</span> xmlUrl<span style="color: #339933;">=</span><span style="color: #ff0000;">&quot;$feedurl&quot;</span><span style="color: #339933;">/&gt;</span><span style="color: #0000ff;">\n</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;&lt;/outline&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066;">print</span> <span style="color: #cc0000; font-style: italic;">&lt;&lt;EOF;
&lt;/body&gt;
&lt;/opml&gt;
EOF</span></pre></div></div>

<img src="http://feeds.feedburner.com/~r/kartiksubbarao/~4/CMIGCZ4rS6M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kartiksubbarao.com/exporting-delicious-blog-links-to-opml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kartiksubbarao.com/exporting-delicious-blog-links-to-opml</feedburner:origLink></item>
		<item>
		<title>Improving the Alltop Experience</title>
		<link>http://feedproxy.google.com/~r/kartiksubbarao/~3/MSQY3RruhIk/improving-the-alltop-experience</link>
		<comments>http://kartiksubbarao.com/improving-the-alltop-experience#comments</comments>
		<pubDate>Thu, 09 Jul 2009 20:58:35 +0000</pubDate>
		<dc:creator>Kartik Subbarao</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[alltop]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[del.icio.us]]></category>
		<category><![CDATA[feeds]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[stylish]]></category>

		<guid isPermaLink="false">http://kartiksubbarao.com/?p=35</guid>
		<description><![CDATA[I&#8217;ve been using Alltop for a while, and have found it to be pretty impressive. First, take a look at this creatively produced 90-second video overview:

Go to alltop.com, and then pick a topic at random. What you see, almost (I&#8217;ll come back to that later) as far as your eye can travel on your monitor, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://alltop.com">Alltop</a> for a while, and have found it to be pretty impressive. First, take a look at this creatively produced 90-second video overview:</p>
<p><object width="500" height="281" data="http://vimeo.com/moogaloop.swf?clip_id=2658238&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" type="application/x-shockwave-flash"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=2658238&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" /></object></p>
<p>Go to alltop.com, and then pick a topic at random. What you see, <em>almost</em> (I&#8217;ll come back to that later) as far as your eye can travel on your monitor, is a bunch of headlines from interesting and relevant sources for that topic. If any of those headlines catches your fancy, just move your mouse over it and an excerpt of that article pop ups up. If you like what you see, you can click on it and the full article opens up in a new browser window/tab.</p>
<p>The Alltop team has done a solid job at finding good sources of content, grouping them into relevant categories, and maintaining them over time. It&#8217;s great to be able to discover a pageful of quality writers on a given subject at a glance, without having to go hunting for them, one by one, in some blog directory or search engine.</p>
<p>Visually, Alltop is ideal for blog scanning. It packs a ton of content into a small amount of space without getting cramped. I can let my eyes roam free across the page as quickly (or as slowly) as I like, paying as much (or as little) attention as I want to the content by looking or skipping, hovering and finally clicking. This is important &#8212; it&#8217;s just as easy to <em>find</em> interesting stuff as it is to <em>disregard</em> uninteresting stuff (where <em>interesting</em> may of course mean different things at different times). You end up getting the most out of your time on the site.</p>
<p>Alltop has a customization feature, called MyAlltop, which you can use to add individual feeds from the site to a personalized Alltop page. I have one set up and will probably be expanding it over time. But there are other ways that I get more value out of Alltop, which brings me to the title of this blog post &#8212; improving the Alltop experience.</p>
<p>Here&#8217;s my favorite way to use Alltop. First, I bookmark all of the Alltop subject pages that I want to follow in Firefox with the subcategory <em>alltop</em> (I actually do this indirectly via <a href="http://delicious.com/kartik_subbarao/alltop">del.icio.us tags</a> and bookmark sync). I then click on the subcategory and select &#8220;Open All in Tabs&#8221;. I maximize my browser window, sit back, and scroll, hover, click and tab my way through the blogosphere <img src='http://kartiksubbarao.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>When I first tried this on my 1920&#215;1200 monitor, I discovered to my chagrin that Alltop limited the display to three columns of text, regardless of the window size. There was no way I could let <em>that</em> get in the way of an otherwise stellar user experience! So I looked through the HTML, found what was causing this limitation, and (largely) worked around it with the <a href="http://userstyles.org/">Firefox Stylish extension</a>. Stylish lets you customize the style of a web page. It does for CSS what <a href="http://www.greasespot.net/">Greasemonkey</a> lets you do on a larger scale with HTML and JavaScript. Here is a Stylish user script that maximizes the number of columns displayed by Alltop for a 1920 pixel-wide screen:</p>
<style type="text/css">div.wp_syntax { height: 9em }</style>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #a1a100;">@namespace url(http://www.w3.org/1999/xhtml);</span>
<span style="color: #a1a100;">@-moz-document domain(&quot;alltop.com&quot;)</span>
<span style="color: #00AA00;">&#123;</span>
    <span style="color: #cc00cc;">#headlines</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1700px</span> !important <span style="color: #00AA00;">&#125;</span>
    <span style="color: #6666ff;">.row-clear</span> <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">display</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>If the ad in the upper-right hand corner gets in the way, you can hide it with <tt>.ad-unit { display: none }</tt>. Here&#8217;s a screenshot of my Alltop setup with Firefox:</p>
<div id="attachment_36" class="wp-caption alignnone" style="width: 1930px"><a href="http://kartiksubbarao.com/wp-content/uploads/2009/07/alltop.png"><img src="http://kartiksubbarao.com/wp-content/uploads/2009/07/alltop.png" alt="My Alltop Setup (click for full size image)" title="alltop" width="1920" height="1151" class="size-full wp-image-36" /></a><p class="wp-caption-text">My Alltop Setup (click for full size image)</p></div>
<p>I picked a well-displayed area for the screenshot, but most category pages end up with some awkward blank spaces due to the browser rendering model. One way to properly fix this would be to query the window size, and recalculate where to insert row-clear tags indicating the end of each row. I think this would be a hugely valuable enhancement for Alltop to add.</p>
<p>Another helpful feature would be the ability to save multiple pages in MyAlltop using predefined category names, or to create your own category pages. Then they could be opened in multiple tabs (supported by either Alltop or the browser).</p>
<p>I find Alltop to be an excellent addition to my toolkit of managing information overload. Sometimes, when I read through a bunch of Alltop pages, I feel like I&#8217;ve actually &#8212; dare-I-say-it &#8212; <strong>caught up</strong> with the latest thinking on a particular subject. Maybe Alltop can help you get on top of things too.</p>
<img src="http://feeds.feedburner.com/~r/kartiksubbarao/~4/MSQY3RruhIk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kartiksubbarao.com/improving-the-alltop-experience/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kartiksubbarao.com/improving-the-alltop-experience</feedburner:origLink></item>
		<item>
		<title>Time Management</title>
		<link>http://feedproxy.google.com/~r/kartiksubbarao/~3/PeQj4zOkTjM/time-management</link>
		<comments>http://kartiksubbarao.com/time-management#comments</comments>
		<pubDate>Fri, 19 Jun 2009 20:03:08 +0000</pubDate>
		<dc:creator>Kartik Subbarao</dc:creator>
				<category><![CDATA[Personal Development]]></category>
		<category><![CDATA[david allen]]></category>
		<category><![CDATA[first things first]]></category>
		<category><![CDATA[getting things done]]></category>
		<category><![CDATA[gtd]]></category>
		<category><![CDATA[personality]]></category>
		<category><![CDATA[stephen covey]]></category>
		<category><![CDATA[time management]]></category>

		<guid isPermaLink="false">http://kartiksubbarao.com/?p=29</guid>
		<description><![CDATA[Here are a few books on time management that I have found to be particularly valuable:
First Things First

I first wrote about First Things First, by Stephen Covey, in the April 1998 issue of USENIX&#8217;s ;login: magazine. I consider it to be the best conceptual exploration of the subject. Three of its most powerful messages are [...]]]></description>
			<content:encoded><![CDATA[<p>Here are a few books on time management that I have found to be particularly valuable:</p>
<h3><a href="http://www.amazon.com/dp/0684802031/?tag=ksub-20">First Things First</a></h3>
<p><a href="http://www.amazon.com/dp/0684802031/?tag=ksub-20"><img class="alignright size-full wp-image-243" style="clear: right" src="http://ecx.images-amazon.com/images/I/51FPX0MAB5L.SY240_SH20.jpg" alt="First Things First" /></a></p>
<p>I first wrote about <a href="http://www.amazon.com/dp/0684802031/?tag=ksub-20"><em>First Things First</em></a>, by Stephen Covey, in the <a href="http://www.usenix.org/publications/login/1998-4/first.html">April 1998 issue of USENIX&#8217;s ;login: magazine</a>. I consider it to be the best conceptual exploration of the subject. Three of its most powerful messages are to:</p>
<ul>
<li>Distinguish between the important-but-not-urgent and the urgent-but-not-important</li>
<li>Exercise integrity in the moment of choice
<li>Reframe the idea of Time Management into one of Life Leadership</li>
</ul>
<p>Indeed, when you reframe time management as life leadership, you&#8217;re motivated to exercise integrity in the moment of choice, and you become able to distinguish between the important-but-not-urgent and the urgent-but-not-important. This lets you spend more time on the things that are truly the most important to you.</p>
<p>Here&#8217;s a great video from a Stephen Covey workshop that visually demonstrates the value of putting First Things First:</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/yagOv3VoXyQ&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/yagOv3VoXyQ&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<div style="padding: 1px">&nbsp;</div>
<h3><a href="http://www.amazon.com/dp/0142000280/?tag=ksub-20">Getting Things Done (GTD)</a></h3>
<p><a href="http://www.amazon.com/dp/0142000280/?tag=ksub-20"><img class="alignright size-full wp-image-243" style="clear: right" src="http://ecx.images-amazon.com/images/I/4104N6ME70L.SY240_SH20.jpg" alt="Getting Things Done" /></a></p>
<p>With GTD, David Allen provides a rich, practical toolset to help you &#8212; what else &#8212; get things done. Here are some of his key points:</p>
<ul>
<li>Get your &#8220;open loops&#8221; (essentially, those incomplete things that you have agreed to do or are planning to do) out of your head and into your system, so that you don&#8217;t have to expend inefficient mental energy on that stuff. Free your mind to do what it does best.</li>
<li>When you&#8217;re feeling stuck on a project, focus on the next action that needs to be done. This is an actual, concrete, physical task that you can do that will get you closer to your goal. Identifying the next action, even if it&#8217;s seemingly minor, can often help break up logjams.</li>
<li>Develop in-context lists for where and when you are, to make optimal use of your time. For example, if you accumulate a list of calls to make and have it with you when you get into your car, you can go through a bunch of them when you&#8217;re waiting in traffic. As another example, if you just found out about a product that&#8217;s currently in beta, and probably not ready for another couple of months, have your calendar alert you 60 days from now so that your future self can follow up.</li>
</ul>
<p>Here is a interview by Fast Company with David Allen on GTD:</p>
<p><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/VPSzAz_ZQIA&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x006699&#038;color2=0x54abd6"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/VPSzAz_ZQIA&#038;hl=en&#038;fs=1&#038;rel=0&#038;color1=0x006699&#038;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<div style="padding: 1px">&nbsp;</div>
<p>Generally speaking, <a href="http://www.amazon.com/dp/0684802031/?tag=ksub-20"><em>First Things First</em></a> takes a top-down approach, and <a href="http://www.amazon.com/dp/0142000280/?tag=ksub-20"><em>Getting Things Done</em></a> takes a bottom-up approach. I find them to be highly valuable, complementary in nature, and I&#8217;ve successfully applied strategies and tactics from both. I skip the aspects of both systems that I find to be burdensome, and keep what I like. The result is a continually evolving, personalized approach that works best for me.</p>
<div style="padding: 1px">&nbsp;</div>
<h3><a href="http://www.amazon.com/dp/0929022211/?tag=ksub-20">Type and Time Management</a></h3>
<p><a href="http://www.amazon.com/dp/0929022211/?tag=ksub-20"><img class="alignright size-full wp-image-243" style="clear: right" src="http://ecx.images-amazon.com/images/I/51FYBKM085L.SY240_SH20.jpg" alt="Type and Time Management" /></a></p>
<p>Speaking of personalized approaches, I think that <a href="http://www.amazon.com/dp/0929022211/?tag=ksub-20"><em>Type and Time Management</em></a> by Sharon Fitzsimmons is an excellent resource for people looking for time management tips that fit their personality. It&#8217;s also great for anyone who is coaching others. The book includes detailed interviews with several people from each of the 16 different <a href="http://www.myersbriggs.org/my-mbti-personality-type/mbti-basics/">Myers-Briggs types</a> (I&#8217;m interviewed in the ENTP chapter); discussions of the general interactions with each personality type; a well-organized summary page for each type with specific suggestions; and a final insightful chapter on Comparisons, Contrasts, Questions and Conclusions.</p>
<img src="http://feeds.feedburner.com/~r/kartiksubbarao/~4/PeQj4zOkTjM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kartiksubbarao.com/time-management/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://kartiksubbarao.com/time-management</feedburner:origLink></item>
		<item>
		<title>Mental Models of Commerce and Community</title>
		<link>http://feedproxy.google.com/~r/kartiksubbarao/~3/OGVFoTWq0Uo/mental-models-of-commerce-and-community</link>
		<comments>http://kartiksubbarao.com/mental-models-of-commerce-and-community#comments</comments>
		<pubDate>Fri, 27 Mar 2009 16:51:50 +0000</pubDate>
		<dc:creator>Kartik Subbarao</dc:creator>
				<category><![CDATA[Leadership]]></category>
		<category><![CDATA[commerce]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[models]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://kartiksubbarao.com/?p=19</guid>
		<description><![CDATA[Commerce and community play important roles in open source ecosystems. Companies are great at building capital and targeting it towards focused goals through products and services. Communities are great at bringing together like-minded people from all walks of life and advancing their common ideals. Together, commerce and community can be an unstoppable force for turning [...]]]></description>
			<content:encoded><![CDATA[<p>Commerce and community play important roles in open source ecosystems. Companies are great at building capital and targeting it towards focused goals through products and services. Communities are great at bringing together like-minded people from all walks of life and advancing their common ideals. Together, commerce and community can be an unstoppable force for turning a shared vision into reality.</p>
<p>That&#8217;s not to say that this dynamic duo of collaboration is always guaranteed to materialize. It takes a sufficient level of trust and mutual understanding, and a willingness to work through contentious situations with common goals in mind. I find that the mental models that people have about commerce and community substantially influence the potential value that they can realize through these interactions.</p>
<p><H3><a name="fud">FUD Model</a></H3></p>
<p>At the low end of trust and understanding is what I characterize as the FUD model &#8212; marked by Fear, Uncertainty, and Doubt. Here, cynicism and defensive thinking loom large. Companies are seen as soulless entities whose only reason for existence is to exploit anything and anyone to make money. Everything that a company does is viewed through this lens. For example, if a company makes an open source contribution and dares to say anything positive about it, they are subjected to an often tortured analysis that explains how their actions are really only about increasing sales with a particular demographic, blocking a competitor, casting out for free labor, or some other exclusively self-serving motive. Simpler explanations that involve corporate employees sharing a common vision with a broader community and wanting to accomplish goals beneficial both to their company and to the community are rejected outright.</p>
<p>Things are just as harsh in the other direction. Community members are seen mostly as naive hobbyists whose heads are in the clouds, and who couldn&#8217;t possibly be reliable because they&#8217;re not being paid to do anything. And the rest are a threat &#8212; potential or actual competitors just lying in wait to take away business or sue over any perceived infringements. The idea that a company could rely on leadership provided by the community to achieve breakthrough results is unimaginable.</p>
<p><H3><a name="utilitarian">Utilitarian Model</a></H3></p>
<p>In the middle of the spectrum is the Utilitarian model. It sees past the overt cynicism of the FUD model and adopts a pragmatic mindset. It understands the conventionally-defined roles of commerce and community, and works within the limits of these boundaries. For example, enterprises adopt open source if it saves them money. Open source needs to have a business model as close as possible to that of proprietary software in order to gain customer acceptance. Open Source developers need to be managed with similar kinds of incentives and metrics to those used with proprietary software developers. A company&#8217;s success is measured by its revenue, a project&#8217;s potency by the number of lines of code.</p>
<p>Along with conventional wisdom, this model is often a purveyor of political correctness. For example, corporations have a burden to &#8220;give back to the open source community&#8221; as compensation for having &#8220;taken&#8221; something, independent of the observation that downloading and using open source software actually increases its ambit. Another case is where communities are pushed to develop certification schemes to assess expertise, irrespective of whether those are germane to success.</p>
<p>The Utilitarian model is successful at mapping the terrain and carefully working within its boundaries. The downside is that it is not inclined to challenge and expand those boundaries. People are fairly ensconced within their roles, and aren&#8217;t primed to seize creative and unconventional opportunities. Assumptions of how &#8220;corporate people&#8221; or &#8220;community people&#8221; are expected to behave can limit the recognition of teaching moments and keep people within boxes. There is also a real risk of dampening genuine passion and energy with saccharine substitutes.</p>
<p><H3><a name="visionary">Visionary Model</a></H3></p>
<p>At the high end is the Visionary model. It sees that commerce and community each have important parts to play in realizing a shared vision. It views people holistically, as self-actualizing individuals whose journey may take them through various corporate and community roles &#8212; sometimes holding multiple roles simultaneously. These people are able to work fluidly in different contexts, tapping resources and insights from wherever is most helpful &#8212; like making use of blogs or wikis in a corporate environment, or applying project management principles with community activities. Neither calculation nor charity is an unbalancing influence on their consumption of and contribution to open source. It&#8217;s a far more natural, conversational rhythm like listening and speaking.</p>
<p>The Visionary model champions high levels of openness, transparency and candor as a matter of course, surpassing anything attainable by the FUD model or the Utilitarian model. There is an unshakable confidence in the power of openness to deliver innovation while developing trust. For example, a services company might share in-depth market intelligence on key customers whose adoption would put an open source project on the map in a big way. Knowing this, the community might rally to complete the development of key features, and through their contacts help the services company sign up the customers. The customers might then collaborate with each other, through the community, to make further improvements and continue the virtuous cycle.</p>
<p>With its broadminded perspective, the Visionary model is optimistic and resilient in the face of impediments. It&#8217;s able to protect its interests without getting trapped in the cynicism of the FUD model, and can make strategic withdrawals without surrendering to the limits of the Utilitarian model. It can make the most out of situations where an ideal solution isn&#8217;t possible.</p>
<p>The Visionary model holds the greatest promise for the partnership of commerce and community. It is able to navigate the shadows of conflict, and forge a strong framework for excellence.</p>
<img src="http://feeds.feedburner.com/~r/kartiksubbarao/~4/OGVFoTWq0Uo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kartiksubbarao.com/mental-models-of-commerce-and-community/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kartiksubbarao.com/mental-models-of-commerce-and-community</feedburner:origLink></item>
		<item>
		<title>Managing Twitter Groups with del.icio.us tags</title>
		<link>http://feedproxy.google.com/~r/kartiksubbarao/~3/BLyUXKTZ7Qc/managing-twitter-groups-with-delicious-tags</link>
		<comments>http://kartiksubbarao.com/managing-twitter-groups-with-delicious-tags#comments</comments>
		<pubDate>Fri, 06 Mar 2009 00:30:05 +0000</pubDate>
		<dc:creator>Kartik Subbarao</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[del.icio.us]]></category>
		<category><![CDATA[TweetDeck]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[Yahoo]]></category>

		<guid isPermaLink="false">http://kartiksubbarao.com/?p=5</guid>
		<description><![CDATA[Update: 6/22/2009: TweetDeck now supports group-synchronization as a built in feature.
I&#8217;ve recently started to use Twitter and have been impressed with the TweetDeck client. It has a great user interface and makes it very easy to follow different groups of people in multiple visual columns.
One of the first tweets I saw was from Jon Udell, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update: 6/22/2009: TweetDeck now supports group-synchronization as a built in feature.</strong></p>
<p><a href="http://twitter.com"><img src="http://kartiksubbarao.com/wp-content/uploads/2009/03/twitter_logo.png" alt="Twitter" title="Twitter" width="215" height="50" style="clear: right" class="alignright size-full wp-image-6" /></a><a href="http://del.icio.us"><img src="http://kartiksubbarao.com/wp-content/uploads/2009/03/delicious_logo.jpg" alt="del.icio.us" title="del.icio.us" width="200" height="59" style="clear: right" class="alignright size-full wp-image-7" /></a>I&#8217;ve recently started to use <a href="http://twitter.com">Twitter</a> and have been impressed with the <a href="http://tweetdeck.com">TweetDeck</a> client. It has a great user interface and makes it very easy to follow different groups of people in multiple visual columns.</p>
<p>One of the first tweets I saw was from Jon Udell, always a fountain of ideas. His recent blog post <a href="http://blog.jonudell.net/2009/02/26/collaborative-curation-as-a-service/">Collaborative curation as a service</a> reminded me of how flexible <a href="http://del.icio.us">del.icio.us</a> can be as a distributed store for tags. I like the curating meme that Jon is promoting, where a little bit of technical infrastructure can go a long way to enable virtually anyone to contribute.</p>
<p>As I started to use TweetDeck and define groups locally in the application, I pondered how it might be better if these group definitions were stored on the web. They could then be accessed from different systems where I might use TweetDeck or other twitter clients for that matter. (Of course this will all happen when Twitter implements groups natively, but in the meantime there is a gap that can be filled). Then it dawned on me &#8212; del.icio.us is an ideal place to both manage and share twitter groups!</p>
<p>I wrote two Perl scripts to try out this idea. The first script, <a href="http://kartiksubbarao.com/scripts/twitter_delicious_sync.txt">twitter_delicious_sync.pl</a>, uploads the Twitter URLs of everyone I&#8217;m following to del.icio.us and automatically tags them with &#8216;twitter&#8217;. (It acts as a sync process, adding/deleting links as necessary). Then I manually tag them further based on how I want to group them. So for example, I tag <a href="http://delicious.com/url/f80195f0e03096a3eedadd630a29146e">Tim O&#8217;Reilly with &#8216;technology&#8217;</a>, and <a href="http://delicious.com/url/5b61cd223840ffad2a60d7b204fbd08e">Jim Cramer with &#8216;finance&#8217;</a>. I can tag people with multiple tags if I want to read them as part of multiple groups.</p>
<p><a href="http://kartiksubbarao.com/scripts/twitter_delicious_sync.txt">twitter_delicious_sync.pl</a></p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#! /usr/bin/perl</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># twitter_delicious_sync.pl - Sync Twitter contacts to del.icio.us </span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> Net<span style="color: #339933;">::</span><span style="color: #006600;">Twitter</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Net<span style="color: #339933;">::</span><span style="color: #006600;">Delicious</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Log<span style="color: #339933;">::</span><span style="color: #006600;">Dispatch</span><span style="color: #339933;">::</span><span style="color: #006600;">Screen</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$debug</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">%following</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">'-d'</span> <span style="color: #b1b100;">and</span> <span style="color: #0000ff;">$debug</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">@ARGV</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;usage: $0 [-d] twitter_username:password delicious_username:password<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$twusername</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$twpasswd</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/:/</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$delusername</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$delpasswd</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/:/</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$tw</span> <span style="color: #339933;">=</span> Net<span style="color: #339933;">::</span><span style="color: #006600;">Twitter</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>apiurl <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'https://twitter.com/'</span><span style="color: #339933;">,</span> 
                           apihost <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'twitter.com:443'</span><span style="color: #339933;">,</span> 
                           username <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$twusername</span><span style="color: #339933;">,</span> password <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$twpasswd</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Couldn't connect to twitter<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$friends</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$page</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">do</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #0000ff;">$friends</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$tw</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">friends</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>page <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$page</span><span style="color: #339933;">++</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;twitter: &quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">$tw</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">get_error</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>error<span style="color: #009900;">&#125;</span><span style="color: #339933;">.</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$friend</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@$friends</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #0000ff;">$following</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$friend</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>screen_name<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$friend</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span>name<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">while</span> <span style="color: #0000ff;">@$friends</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$del</span> <span style="color: #339933;">=</span> Net<span style="color: #339933;">::</span><span style="color: #006600;">Delicious</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>endpoint <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'https://api.del.icio.us/v1/'</span><span style="color: #339933;">,</span>
                              user <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$delusername</span><span style="color: #339933;">,</span> pswd <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$delpasswd</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Couldn't connect to del.icio.us<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;"># Workaround for Net::Delicious:all_posts() not supporting a tags argument:</span>
<span style="color: #666666; font-style: italic;"># $del-&gt;all_posts({tag =&gt; 'twitter'}) </span>
<span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">config</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'delicious_posts_all.tag'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$res</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span>_execute_method<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;delicious.posts.all&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>tag <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'twitter'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Error calling delicious posts/all<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$posts</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span>_getresults<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$res</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'post'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$post</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span>_buildresults<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'Post'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$posts</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$username</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">href</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$username</span> <span style="color: #339933;">=~</span> <span style="color: #000066;">s</span><span style="color: #666666; font-style: italic;">#^http://twitter.com/##;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">exists</span> <span style="color: #0000ff;">$following</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$username</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066;">delete</span> <span style="color: #0000ff;">$following</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$username</span><span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;"># Delete stale entries</span>
        <span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">delete_post</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>url <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">&quot;http://twitter.com/$username&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #0000ff;">$debug</span> <span style="color: #b1b100;">and</span> <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Deleted $username<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Add new entries</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$username</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">keys</span> <span style="color: #0000ff;">%following</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">add_post</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>url <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">&quot;http://twitter.com/$username&quot;</span><span style="color: #339933;">,</span>
                    description <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">&quot;Twitter / $following{$username}&quot;</span><span style="color: #339933;">,</span>
                    tags <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'twitter'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$debug</span> <span style="color: #b1b100;">and</span> <span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;Added $username<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>The second script, <a href="http://kartiksubbarao.com/scripts/delicious_tweetdeck_groups.txt">delicious_tweetdeck_groups.pl</a>, creates/updates a group in TweetDeck corresponding to each tag that I have assigned to the Twitter links in del.icio.us. When I reclassify people in del.icio.us, I simply stop TweetDeck, run the script, and restart TweetDeck. [When I add new people in Twitter and tag them for the first time, I end up restarting TweetDeck twice due to an implementation issue]. In any case, it&#8217;s a pretty simple process.</p>
<p><a href="http://kartiksubbarao.com/scripts/delicious_tweetdeck_groups.txt">delicious_tweetdeck_groups.pl</a></p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#! /usr/bin/perl</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># delicious_tweetdeck_groups.pl - Update TweetDeck groups from del.icio.us </span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> Net<span style="color: #339933;">::</span><span style="color: #006600;">Delicious</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Log<span style="color: #339933;">::</span><span style="color: #006600;">Dispatch</span><span style="color: #339933;">::</span><span style="color: #006600;">Screen</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> DBI<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> File<span style="color: #339933;">::</span><span style="color: #006600;">Glob</span> <span style="color: #ff0000;">':glob'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$debug</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">'-d'</span> <span style="color: #b1b100;">and</span> <span style="color: #0000ff;">$debug</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #000066;">shift</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">@ARGV</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;usage: $0 [-d] delicious_username:password<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$sqlitefile</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$^O</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">/linux/i</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #0000ff;">$sqlitefile</span><span style="color: #339933;">=</span> bsd_glob<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;$ENV{HOME}/.appdata/TweetDeck*/Local Store/td_*.db&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">elsif</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$^O</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">/mswin32/i</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #0000ff;">$sqlitefile</span> <span style="color: #339933;">=</span> bsd_glob<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;$ENV{APPDATA}<span style="color: #000099; font-weight: bold;">\\</span>TweetDeck*<span style="color: #000099; font-weight: bold;">\\</span>Local Store<span style="color: #000099; font-weight: bold;">\\</span>td_*.db&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">%groups</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">%gcids</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$delusername</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$delpasswd</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #000066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #009966; font-style: italic;">/:/</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$ARGV</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$del</span> <span style="color: #339933;">=</span> Net<span style="color: #339933;">::</span><span style="color: #006600;">Delicious</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span>
    <span style="color: #009900;">&#123;</span>user <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$delusername</span><span style="color: #339933;">,</span> pswd <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$delpasswd</span><span style="color: #339933;">,</span> debug <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$debug</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Workaround for Net::Delicious:all_posts() not supporting a tags argument:</span>
<span style="color: #666666; font-style: italic;"># $del-&gt;all_posts({tag =&gt; 'twitter'}) </span>
<span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">config</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'delicious_posts_all.tag'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;"># Get all twitter group memberships from del.icio.us</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$res</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span>_execute_method<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;delicious.posts.all&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>tag <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'twitter'</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #b1b100;">or</span> <span style="color: #000066;">die</span> <span style="color: #ff0000;">&quot;Error calling posts/all<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$posts</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span>_getresults<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$res</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'post'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$post</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$del</span><span style="color: #339933;">-&gt;</span>_buildresults<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'Post'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$posts</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$username</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">href</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$username</span> <span style="color: #339933;">=~</span> <span style="color: #000066;">s</span><span style="color: #666666; font-style: italic;">#^http://twitter.com/## or next;</span>
    <span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$tag</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">split</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">' '</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$post</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">tags</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> 
        <span style="color: #0000ff;">$groups</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$tag</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$username</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">unless</span> <span style="color: #0000ff;">$tag</span> <span style="color: #b1b100;">eq</span> <span style="color: #ff0000;">'twitter'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$dbh</span> <span style="color: #339933;">=</span> DBI<span style="color: #339933;">-&gt;</span><span style="color: #006600;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;DBI:SQLite:dbname=$sqlitefile&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">''</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$columns</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$dbh</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">selectall_hashref</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'select * from columns'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'cID'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$cid</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">sort</span> <span style="color: #000066;">keys</span> <span style="color: #0000ff;">%$columns</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;"># Exclude all non-group columns</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$columns</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$cid</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#123;</span>cType<span style="color: #009900;">&#125;</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #0000ff;">$columns</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$cid</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#123;</span>cType<span style="color: #009900;">&#125;</span> <span style="color: #339933;">!=</span> <span style="color: #cc66cc;">999</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">delete</span> <span style="color: #0000ff;">$columns</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$cid</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span> 
        <span style="color: #b1b100;">next</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #666666; font-style: italic;"># Look for corresponding groups that already exist</span>
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$cname</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$columns</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$cid</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#123;</span>cName<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span> <span style="color: #0000ff;">$cname</span> <span style="color: #339933;">=~</span> <span style="color: #009966; font-style: italic;">s/^Group: //</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">exists</span> <span style="color: #0000ff;">$groups</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$cname</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #0000ff;">$gcids</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$cname</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$cid</span><span style="color: #339933;">;</span>
        <span style="color: #000066;">delete</span> <span style="color: #0000ff;">$columns</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$cid</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">next</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Assign new groups in the columns table</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">@cids</span> <span style="color: #339933;">=</span> <span style="color: #000066;">sort</span> <span style="color: #000066;">keys</span> <span style="color: #0000ff;">%$columns</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$sth</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$dbh</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">prepare</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;update columns set cName=?, ctype=? where cID=?&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$group</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">sort</span> <span style="color: #000066;">keys</span> <span style="color: #0000ff;">%groups</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">next</span> <span style="color: #b1b100;">if</span> <span style="color: #000066;">exists</span> <span style="color: #0000ff;">$gcids</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$group</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">last</span> <span style="color: #b1b100;">if</span> <span style="color: #339933;">!</span><span style="color: #000066;">defined</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$gcids</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$group</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #000066;">shift</span> <span style="color: #0000ff;">@cids</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #0000ff;">$sth</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Group: $group&quot;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$gcids</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$group</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Clear any stale groups in the columns table</span>
<span style="color: #0000ff;">$sth</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$dbh</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">prepare</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;update columns set cName='',ctype='' where cID=?&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$cid</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">@cids</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">$sth</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$cid</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Set up userid hash map</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">%userids</span> <span style="color: #339933;">=</span> <span style="color: #000066;">map</span> <span style="color: #339933;">@</span><span style="color: #0000ff;">$_</span><span style="color: #339933;">,</span> 
    <span style="color: #339933;">@</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$dbh</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">selectall_arrayref</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'select fScreenName,fUserID from friends'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Rebuild the groups table</span>
<span style="color: #0000ff;">$dbh</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">do</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'delete from groups'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">$sth</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$dbh</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">prepare</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'insert into groups (gID, gCID, gUserID) values (?,?,?)'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$gid</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$group</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">keys</span> <span style="color: #0000ff;">%groups</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">foreach</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$username</span> <span style="color: #009900;">&#40;</span><span style="color: #000066;">keys</span> <span style="color: #339933;">%</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$groups</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$group</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #0000ff;">$sth</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$gid</span><span style="color: #339933;">++,</span> <span style="color: #0000ff;">$gcids</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$group</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">$userids</span><span style="color: #009900;">&#123;</span><span style="color: #0000ff;">$username</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Managing TweetDeck groups using del.icio.us tags opens up a broader set of possibilities. I can see how others have tagged the same people, and vice versa. If enough people were to do the same thing, we could build up a crowdsourced view of Twitter broadcasters. This is the kind of experience that made <a href="http://spock.com">Spock</a> so exciting in its early days, when anyone could tag everyone, with the results immediately available for all to see.</p>
<p>In a <a href="http://www.vnunet.com/vnunet/news/2237798/bartz-unveils-social-partner">recent interview</a>, Yahoo&#8217;s CEO stated that they are looking at how to &#8220;partner with sites such as YouTube, Twitter, Facebook and Skype to make the user experience as seamless as possible as they move from Yahoo to more social places&#8221;. With del.icio.us, I think Yahoo might have the capability to fill both the Twitter-group gap and the Spock-tagging gap, and advance their social software strategy in the process.</p>
<img src="http://feeds.feedburner.com/~r/kartiksubbarao/~4/BLyUXKTZ7Qc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kartiksubbarao.com/managing-twitter-groups-with-delicious-tags/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://kartiksubbarao.com/managing-twitter-groups-with-delicious-tags</feedburner:origLink></item>
		<item>
		<title>The Value of an Internal Open Source Community of Practice</title>
		<link>http://feedproxy.google.com/~r/kartiksubbarao/~3/RYrZ3Dw_dAk/the-value-of-an-internal-open-source-community-of-practice</link>
		<comments>http://kartiksubbarao.com/the-value-of-an-internal-open-source-community-of-practice#comments</comments>
		<pubDate>Fri, 20 Feb 2009 16:05:54 +0000</pubDate>
		<dc:creator>Kartik Subbarao</dc:creator>
				<category><![CDATA[Leadership]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://kartiksubbarao.com/?p=3</guid>
		<description><![CDATA[One of the most enriching experiences of my career at Hewlett-Packard was serving as Global Lead for HP&#8217;s Open Source and Linux Profession (OSLP). The OSLP is HP&#8217;s company-wide community of practice for open source technologists, with thousands of members worldwide. Working to build the OSLP gave me insights into the value that an internal [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most enriching experiences of my career at Hewlett-Packard was serving as Global Lead for HP&#8217;s Open Source and Linux Profession (OSLP). The OSLP is HP&#8217;s company-wide community of practice for open source technologists, with thousands of members worldwide. Working to build the OSLP gave me insights into the value that an internal community can provide to its organization, to its members, and to external communities.</p>
<p>An internal community, even if it is an all-volunteer effort like the OSLP that relies on management-supported discretionary time, can provide the kind of <i>context</i> for open source activities in an organization that can&#8217;t be found anywhere else. Open Source projects on the Internet are typically focused on a specific technology area, and cater to a potentially large, diverse group of end users. The challenge for internal deployments is often the inverse &#8212; to get a variety of open source technologies working together to address the unique needs of a single organization. </p>
<p>This inverse relationship can be highly complementary. The internal community can provide external communities with the kind of validation that they prize highly &#8212; that their work is solving real-world problems. And external communities can inspire corporate employees to envision how their work fits into a greater landscape. Over time, members of one community may join the other, as employees contribute to open source projects and open source contributors are hired by companies.</p>
<p>An internal open source community can gather intelligence on new and promising open source projects. If members are excited and energized about a new project, they&#8217;re often willing to spend lots of time (including personal time) investigating it further. As they interact with the external community developing that project, they get a sense for how compatible that community&#8217;s goals and interests are with their own. They can assess the potential for successful deployment in their organization, and for ongoing collaboration. The internal community effectively <i>vets</i> the external community. This holistic evaluation, when done by an expert internal community, is far more comprehensive than the kind of requirements analysis done in a traditional IT customer/vendor relationship where the roles of &#8220;consumer&#8221; and &#8220;producer&#8221; are rigidly defined.</p>
<p>An internal open source community is an excellent place to develop leaders in an organization. Many important leadership skills can be honed while collaborating on open source initiatives, such as articulating a compelling vision, motivating people to take action, sharing knowledge, and making principle-centered decisions. These opportunities are available to anyone in the community at any time, just by stepping up and volunteering to lead an activity of common interest. The community can provide attuned coaching and mentoring for its members, which increases the capability of the community as a whole.</p>
<p>By demonstrating and evangelizing about the benefits of open source, the community can have a far-reaching impact on an organization. Over time, the community can guide the organization to higher levels of effectiveness with open philosophies across the spectrum of people, process, technology and business.</p>
<img src="http://feeds.feedburner.com/~r/kartiksubbarao/~4/RYrZ3Dw_dAk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kartiksubbarao.com/the-value-of-an-internal-open-source-community-of-practice/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kartiksubbarao.com/the-value-of-an-internal-open-source-community-of-practice</feedburner:origLink></item>
		<item>
		<title>Personality Type and the Open Source Community</title>
		<link>http://feedproxy.google.com/~r/kartiksubbarao/~3/AsVzMVNlcEE/personality-type-and-the-open-source-community</link>
		<comments>http://kartiksubbarao.com/personality-type-and-the-open-source-community#comments</comments>
		<pubDate>Tue, 31 Jan 2006 15:09:33 +0000</pubDate>
		<dc:creator>Kartik Subbarao</dc:creator>
				<category><![CDATA[Personal Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[jung]]></category>
		<category><![CDATA[myers briggs]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[personality]]></category>

		<guid isPermaLink="false">http://kartiksubbarao.com/?p=68</guid>
		<description><![CDATA[In The Jargon File, Eric Raymond does a great job of describing hackers, who dominate the thought of the open source community. He touches on personality type briefly in this document, and he also refers to it in other presentations. He points out that most hackers fit the NT personality types (INTP, INTJ, ENTP and [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://www.catb.org/%7Eesr/jargon/">The Jargon File</a>, Eric Raymond does a great job of describing hackers, who dominate the thought of the open source community. He touches on personality type briefly in this document, and he also refers to it in other presentations. He points out that most hackers fit the NT personality types (INTP, INTJ, ENTP and ENTJ) in the Myers Briggs personality model. But what does that mean exactly, and how can we gain insights from that observation, particularly if we fit into that category?</p>
<p>It all starts with the renowned psychologist Carl Jung. In formulating his personality theory, Jung focused on two major aspects of how we relate to the world: how we prefer to take in information (Perceiving), and how we prefer to make decisions (Judging). When perceiving, some people trust more in what they can see, hear, smell, touch and taste (Sensation), and others trust more in concepts and ideas (Intuition). When judging, some people rely more on logic and impersonal considerations (Thinking), while others rely more on values and personal considerations (Feeling). Each of the Perceiving and Judging Functions can be directed at either the outside world of people and objects (Extraverted), or to the inner world of the mind (Introverted).</p>
<p>These ideas were later organized into a framework of 16 personality types, called the Myers Briggs Type Indicator (MBTI). For example, my MBTI type is ENTP, which stands for (Dominant) Extraverted Intuition with (Auxiliary) Introverted Thinking. As you can imagine, there&#8217;s a lot of ground to cover on this subject, most of which we&#8217;ll be breezing past here. For the full tour, let me point you to two of the best books I have read on personality type &#8212; David Keirsey&#8217;s <a href="http://www.amazon.com/dp/product/1885705026/?tag=ksub-20"><em>Please Understand Me II</em></a> and Lenore Thomson&#8217;s <a href="http://www.amazon.com/dp/product/0877739870/?tag=ksub-20"><em">Personality Type: An Owner&#8217;s Manual</em></a>. A good online personality test is available at <a href="http://www.greenlightwiki.com/lenore/inventory.html">Lenore Thomson&#8217;s web site</a>.</p>
<p>To simplify our discussion, let&#8217;s just look at the four basic functions &#8212; Sensing (S), Intuition (N), Thinking (T), and feeling (F). Referring to a type as &#8220;NT&#8221; means that the preferred Perceiving function is Intuition (as opposed to Sensing), and the preferred Judging function is Thinking (as opposed to Feeling). SF types have the exact opposite set of preferences &#8212; they prefer Sensing over Intuition, and Feeling over Thinking. There are also NF and ST types, and there too, the letters tell you their preferred functions.</p>
<p>Fine, you might say, but what does it exactly mean to prefer &#8220;Intuition&#8221; over &#8220;Sensation&#8221;, and &#8220;Thinking&#8221; over &#8220;Feeling&#8221; (as NT types do)? Let&#8217;s start with the Judging function preference (Thinking/Feeling), since it&#8217;s<br />
usually the easier of the two pairs to understand. Just contrast Spock and McCoy in Star Trek. Spock clearly preferred to make decisions with impersonal logic. And McCoy clearly preferred personal, human values. T<br />
types emphasize fairness and objectivity, whereas F types emphasize compassion and humanity. Everyone of course has the ability to use both T and F functions, just like we can write with either hand if we really want to. But just like with handwriting, we usually develop a strong preference for one or the other. T types feel most confident when they are able to use logic to support their actions, and F types feel most confident when their actions are consistent with their values. Conversely, T types are least confident when making complex decisions based solely on feelings and values, and F types are least confident when making complex decisions based solely on logic. As we grow and develop, we&#8217;re able to include more input from our non-dominant judging function, while we still maintain our overall preference. For example, a dominant Thinker who needs to make a tough decision on staff reductions can consciously incorporate Feeling (from himself and/or by getting help from a dominant Feeler) to ensure that the decision is carried out in a way that demonstrates respect for employees. Likewise, a dominant Feeler who needs to select one employee for a key position can consciously incorporate Thinking (from himself and/or a dominant Thinker) to ensure that the most capable person for the job is selected.</p>
<p>How about the Perceiving function preference (Intuition/Sensation)? A rough way to look at it is &#8220;book smarts and big picture&#8221; (Intuition) vs &#8220;street smarts and details&#8221; (Sensation). N types live in a world of ideas and possibilities. They are constantly building and refining their mental models of the way things (and people) work &#8212; the engineer who invents a new way to harness solar power; the author of a fantasy book with imaginative creatures and locales. S types, on the other hand, are grounded in the here and now. They are keen on concrete, tangible facts and experiences &#8212; the ever-observant field agent, who acts without having to analyze anything; the detailed accountant who balances the books to the last penny. Again, everyone has the ability to use both N and S functions. N types feel most confident when they understand the <em>meaning</em> of the information that they get, and the experiences that they have, realizing the potential of what can be. S types feel most confident when they are fully in <em>touch</em> with their surroundings and their possessions as they currently exist, living life in the moment. On the flip side, N types can get careless with attending to facts, rules and details that don&#8217;t fit together in any meaningful way to them. And S types can lose sight of the forest in their focus on the trees, leaves, branches, and roots. As with the Judging functions, over time we are able to include more input from our non-dominant Perceiving function, while still retaining our preference. For example, a dominant Intuitive who needs to do his taxes can consciously incorporate Sensing (from himself and/or by getting help from a dominant Sensor), to ensure that all of his capital gains and losses are properly recorded, and all of his deductions are properly itemized. And a dominant Sensor whose business model is outdated can consciously incorporate Intuition (from himself and/or a dominant Intuitive) to come up with new ways for his company to provide value to customers.</p>
<p>With that as background, we can look at the Intuitive Thinker type (NT) more closely, which Keirsey estimates to be no more than 7% of the population. NT types like to build mental models based on logic. They develop a foundation of knowledge deeply rooted in first principles, constructed by constantly asking Why? Why? Why? and following those answers as far as their capability, interest and time permits. From that, they expand an empire of knowledge that covers anything and everything that captures their attention. To use our jargon, NTs really <em>grok</em> their stuff.</p>
<p>You can see how open source plays to the natural strengths of NT types who work in IT and software engineering. Access to source code allows NTs to peel the onion of a software package as much as they wish, uncovering its inner workings and finding out how all of the underlying components fit together (and in the process, expanding their knowledge base even further). Root-cause analysis is the NT&#8217;s instinctive way of troubleshooting and solving complex problems. Learn how the thing works, understand what it&#8217;s supposed to do, and figure out why it isn&#8217;t doing that. Is there an underlying design problem with even broader implications, or is it just a correctable error in implementing the design? They want to get to the bottom of the whole situation and resolve the issue once and for all. Closed source software, by preventing introspection into the deep structure of the source code, frustrates precisely this form of analysis at which NTs excel. Is it any wonder why many NTs prefer open source?</p>
<p>To make large systems manageable, NTs prefer to rely on modularity, where the the components share common architectural principles. Contrast this with a monolithic design, which requires painstaking attention to numerous details which cannot be cleanly separated. NTs can clash with other types over the importance and priority of architectural principles. NTs see these principles being as important as the end product itself, since they have unshakable trust in the optimum results being achieved when the right principles are followed. Whereas other types, to the extent that they are aware of them at all, may see them as far more negotiable. For example, an NT type may specify a guiding principle that W3C standards-based HTML should be used when designing a web site. Another type might just choose the most convenient tool that works with the most common browser, heedless of its compliance to HTML standards. For NT&#8217;s, it&#8217;s usually not enough just to solve a problem &#8212; it needs to be solved in the right way.</p>
<p>To be sure, NTs can sometimes go overboard in this department, pushing for purist perfection at the expense of pragmatic approaches. Also, there is a tendency among some NTs towards minimalism at all costs, and reductionist logic. NTs can be hypercritical of any flaws in a system, running the risk of throwing away the baby with the bathwater. We see this for example on the <a href="http://slashdot.org">Slashdot</a> forums, where it&#8217;s almost a contest sometimes as to who can be the most sarcastic, the most biting, the most cynical, in their commentary.</p>
<p>Fortunately, as NTs develop, they&#8217;re able to use their Intuition and Thinking functions more broadly, and their mental models expand to include more input from their Feeling and Sensing functions. After all, Benjamin Franklin and Thomas Jefferson were NT types, and they did pretty well as founding fathers of a nation dedicated to the principles of freedom and equality of opportunity. NTs have the potential to be visionary leaders who change the world.</p>
<img src="http://feeds.feedburner.com/~r/kartiksubbarao/~4/AsVzMVNlcEE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://kartiksubbarao.com/personality-type-and-the-open-source-community/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://kartiksubbarao.com/personality-type-and-the-open-source-community</feedburner:origLink></item>
	</channel>
</rss>
