<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>ninlabs research</title>
    <description>ninlabs research</description>
    <link>http://blog.ninlabs.com</link>
    <pubDate>2013-12-05</pubDate>
    <item>
      <title>About</title>
      <link>http://blog.ninlabs.com/about</link>
      <pubDate>2013-12-03</pubDate>
      <description>&lt;p&gt;I write about programming, software engineering research, and the brain.&lt;/p&gt;

&lt;h3 id="contact"&gt;Contact&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;chris.parnin@gatech.edu&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/chrisparnin" class="twitter-follow-button" data-show-count="false"&gt;Follow @chrisparnin&lt;/a&gt;
&lt;script&gt;!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");&lt;/script&gt;&lt;/p&gt;

&lt;h3 id="research-page"&gt;Research page&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://www.cc.gatech.edu/~vector"&gt;http://www.cc.gatech.edu/~vector&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Archive</title>
      <link>http://blog.ninlabs.com/archive</link>
      <description>
  &lt;h2&gt;2013&lt;/h2&gt;
    &lt;h3&gt;December&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2013-12-03&lt;/span&gt; &amp;raquo; &lt;a href="/2013/12/software-engineering-the-next-50-years"&gt;Software Engineering: The Next 50 Years&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;h3&gt;March&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2013-03-04&lt;/span&gt; &amp;raquo; &lt;a href="/2013/03/api-documentation"&gt;Api Documentation&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;h3&gt;January&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2013-01-19&lt;/span&gt; &amp;raquo; &lt;a href="/2013/01/programmer-interrupted"&gt;Programmer Interrupted&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;h2&gt;2012&lt;/h2&gt;
    &lt;h3&gt;June&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2012-06-29&lt;/span&gt; &amp;raquo; &lt;a href="/2012/06/code-timelines"&gt;Code Timelines&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;h3&gt;May&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2012-05-25&lt;/span&gt; &amp;raquo; &lt;a href="/2012/05/crowd-documentation"&gt;Crowd Documentation&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;h3&gt;February&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2012-02-29&lt;/span&gt; &amp;raquo; &lt;a href="/2012/02/memory-2-0-attentive-memory"&gt;Memory 2.0: Attentive Memory&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span&gt;2012-02-07&lt;/span&gt; &amp;raquo; &lt;a href="/2012/02/memory-2-0-a-prelude"&gt;Memory 2.0, A prelude.&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;h2&gt;2011&lt;/h2&gt;
    &lt;h3&gt;November&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2011-11-02&lt;/span&gt; &amp;raquo; &lt;a href="/2011/11/auto-blogging-publishing-a-coding-task-to-wordpress"&gt;Auto-blogging - Publishing a coding task to wordpress.&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;h3&gt;October&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2011-10-18&lt;/span&gt; &amp;raquo; &lt;a href="/2011/10/napkin-idea-code-tabs"&gt;Napkin Idea: Code Tabs&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span&gt;2011-10-07&lt;/span&gt; &amp;raquo; &lt;a href="/2011/10/building-a-visual-studio-history-extension-part-2"&gt;Building a Visual Studio History Extension Part #2&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span&gt;2011-10-06&lt;/span&gt; &amp;raquo; &lt;a href="/2011/10/building-a-visual-studio-history-extension-part-1"&gt;Building a Visual Studio History Extension Part #1&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;h3&gt;July&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2011-07-09&lt;/span&gt; &amp;raquo; &lt;a href="/2011/07/icpc-roundup"&gt;ICPC Roundup&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;h3&gt;May&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2011-05-10&lt;/span&gt; &amp;raquo; &lt;a href="/2011/05/task-focused-interfaces-particles-of-a-programming-task"&gt;Task-focused Interfaces: Particles of a programming task?&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span&gt;2011-05-06&lt;/span&gt; &amp;raquo; &lt;a href="/2011/05/battle-for-java-generics"&gt;Battle for Java Generics&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;h3&gt;April&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2011-04-23&lt;/span&gt; &amp;raquo; &lt;a href="/2011/04/auto-update-visual-studio-extensions"&gt;Auto-update Visual Studio Extensions&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span&gt;2011-04-21&lt;/span&gt; &amp;raquo; &lt;a href="/2011/04/keeping-it-simple-customizing-the-wpf-expander-icon"&gt;Keeping it Simple: Customizing the WPF Expander Icon&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;h3&gt;March&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2011-03-13&lt;/span&gt; &amp;raquo; &lt;a href="/2011/03/java-generics-adoption-how-new-features-are-introduced-championed-or-ignored"&gt;Java Generics Adoption: How New Features are Introduced, Championed, or Ignored&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;h3&gt;February&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2011-02-20&lt;/span&gt; &amp;raquo; &lt;a href="/2011/02/measuring-api-documentation-on-the-web"&gt;Measuring API Documentation on the Web&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span&gt;2011-02-07&lt;/span&gt; &amp;raquo; &lt;a href="/2011/02/upcoming-conferences"&gt;Upcoming Conferences&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;h3&gt;January&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2011-01-15&lt;/span&gt; &amp;raquo; &lt;a href="/2011/01/wild-ass-guess-myths-in-software-engineering"&gt;Wild-ass guess: Myths in software engineering&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span&gt;2011-01-04&lt;/span&gt; &amp;raquo; &lt;a href="/2011/01/design-comics-illustrating-software-design"&gt;Design Comics: Illustrating Software Design&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span&gt;2011-01-02&lt;/span&gt; &amp;raquo; &lt;a href="/2011/01/tech-preview-code-provenance-for-visual-studio"&gt;Tech Preview: Code Provenance for Visual Studio&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;h2&gt;2010&lt;/h2&gt;
    &lt;h3&gt;December&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2010-12-24&lt;/span&gt; &amp;raquo; &lt;a href="/2010/12/customizing-visual-studio-search-results"&gt;Customizing Visual Studio Search Results&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span&gt;2010-12-04&lt;/span&gt; &amp;raquo; &lt;a href="/2010/12/mining-development-history-why-and-what-for"&gt;Mining Development History: Why and What For?&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;h3&gt;November&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2010-11-23&lt;/span&gt; &amp;raquo; &lt;a href="/2010/11/code-diffs-redesigned"&gt;Code Diffs Redesigned&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span&gt;2010-11-12&lt;/span&gt; &amp;raquo; &lt;a href="/2010/11/extracting-text-from-word-pdf-documents"&gt;Extracting text from Word/PDF documents&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;span&gt;2010-11-08&lt;/span&gt; &amp;raquo; &lt;a href="/2010/11/visual-studio-search-results-programmatically"&gt;Visual Studio Search Results, Programmatically&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;h3&gt;June&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;span&gt;2010-06-24&lt;/span&gt; &amp;raquo; &lt;a href="/2010/06/recording-emg-sending-event-pulses-with-labjack"&gt;Recording EMG, Sending Event Pulses with LabJack&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Categories</title>
      <link>http://blog.ninlabs.com/categories</link>
      <description>
&lt;ul class="tag_box inline"&gt;
  &lt;li&gt;
    &lt;a href="/categories#vision-ref"&gt;vision &lt;span&gt;1&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;

  &lt;h3&gt;vision (1)&lt;/h3&gt;
  &lt;ul&gt;
      &lt;li&gt;&lt;a href="/2013/12/software-engineering-the-next-50-years"&gt;Software Engineering: The Next 50 Years&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Home</title>
      <link>http://blog.ninlabs.com/</link>
      <description>&lt;div class="post"&gt;
  &lt;h3 class="title"&gt;&lt;a href="/2013/12/software-engineering-the-next-50-years"&gt;Software Engineering: The Next 50 Years&lt;/a&gt; &lt;span class="date"&gt;2013-12-03&lt;/span&gt;&lt;/h3&gt;

  &lt;div class="summary ellipsis"&gt;
&lt;p&gt;It is not unreasonable to speculate on what the future of software engineering will look like in the next 50 years.  Software engineering is still a young discipline, with almost a half of a century since the coining of &lt;a href="http://bertrandmeyer.com/2013/04/04/the-origin-of-software-engineering/"&gt;&#x201C;software engineering&#x201D;&lt;/a&gt;.  Although we could claim some sort of success by simply pointing out the software underlying almost every facet of today&#x2019;s world, that success has not been consistently repeatable nor teachable. As we become dependent on trillions lines of code in the next 50 years, there is little comfort we still have &lt;a href="http://www.third-bit.com/2012/12/06/two-solitudes-illustrated.html"&gt;no fundamental scientific understanding&lt;/a&gt; of how to create software.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; This post will speculate on possible directions and the challenges faced by the research and software engineering community that needs to start &lt;em&gt;now&lt;/em&gt; in order to be relevant tomorrow.  Read on for brains, massive engineering, and potty-training your programs&#x2026;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr&gt;
&lt;h1 id="a-different-kind-of-engineering"&gt;A different kind of engineering&lt;/h1&gt;

&lt;p&gt;Many of the challenges faced by humanity in the next decades will require software that works at completely different scales and completely different constraints than today&#x2019;s software.  Previously, we&#x2019;ve been able to make the &lt;a href="http://www.genesishistory.org/content/ProfPapers/PgmgInLargeSmall-Kron.pdf"&gt;distinction&lt;/a&gt; between &lt;em&gt;programming-in-the-large&lt;/em&gt; and &lt;em&gt;programming-in-the-small&lt;/em&gt;, when reasoning about the size of teams and types of tools needed to build software. While software continues to fit these situations, it is already diverging from these categories in several ways.&lt;/p&gt;

&lt;h3 id="massively-distributed-software-engineering"&gt;Massively distributed software engineering&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;To meet the grand challenges of humanity, we will have to learn to massively scale software development in entirely new ways or die trying.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The development of the Large Hadron Collider&#x2019;s core software system spanned over two decades, with &lt;a href="http://www.coverity.com/company/press-releases/read/cern-chooses-coverity-to-ensure-accuracy-of-large-hadron-collider-software-html"&gt;over 50 million lines of code&lt;/a&gt;.  Given enough time and dedication, we can create successfully massively large software systems.&lt;/p&gt;

&lt;p&gt;But, we also may be reaching our limit given our current methods and capabilities. In the United States, the recent software behind the health care insurance marketplace is a &lt;a href="http://www.nytimes.com/2013/10/21/us/insurance-site-seen-needing-weeks-to-fix.html?pagewanted=all&amp;amp;_r=1&amp;amp;"&gt;reported&lt;/a&gt; 500 million lines of code.&lt;/p&gt;

&lt;p&gt;In the next 50 years, as governments increasingly turn legal policy and services into source code and public APIs, often created in the timespan of a president&#x2019;s term, we must be prepared to build massively-sized software systems on a regular basis.  This will often require cooperation of many diverse stakeholders.&lt;/p&gt;
&lt;/div&gt;

  &lt;div class="more"&gt;
    &lt;a href="/2013/12/software-engineering-the-next-50-years" class="btn btn-small"&gt;read more..&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="post"&gt;
  &lt;h3 class="title"&gt;&lt;a href="/2013/03/api-documentation"&gt;Api Documentation&lt;/a&gt; &lt;span class="date"&gt;2013-03-04&lt;/span&gt;&lt;/h3&gt;

  &lt;div class="summary ellipsis"&gt;
&lt;h2 id="why-it-sucks"&gt;Why it sucks&lt;/h2&gt;

&lt;p&gt;Software companies, such as Microsoft, create documentation for millions of topics concerning its APIs, services, and software platforms (&lt;a href="http://thirdblogfromthesun.com/2010/09/how-big-is-the-msdn-library/"&gt;MSDN&lt;/a&gt;). 
Creating this documentation comes at a considerable cost and effort.  And after all this effort much documentation is rarely consulted (&lt;a href="http://dx.doi.org/10.1109/MS.2003.1241364"&gt;Lethbridge&lt;/a&gt;).  API documentation is especially difficult to create (&lt;a href="http://dx.doi.org/10.1109/MS.2009.193"&gt;Robillard&lt;/a&gt;): as just a few writers must create documentation that teaches concepts and that maximally covers the many ways the thousands to millions of developers may be using their API.&lt;/p&gt;

&lt;p&gt;Now, the trend may shift even more of the undocumented burden onto developers.  The YouTube API recently moved their official developers support
from Google Groups to Stack Overflow (&lt;a href="http://apiblog.youtube.com/2012/09/the-youtube-api-on-stack-overflow.html"&gt;Move&lt;/a&gt;)&#x2014; relying on a few thousand questions about the API and on mechanisms of Stack Overflow.
And there is no sign in sight that documentation is all the sudden going to get better.&lt;/p&gt;

&lt;h2 id="developers-revolt"&gt;Developers revolt&lt;/h2&gt;

&lt;p&gt;Instead, developers have been indirectly documenting APIs themselves through a process called &lt;a href="http://blog.ninlabs.com/2012/05/crowd-documentation/"&gt;crowd documentation&lt;/a&gt;, by publishing blog posts and curating questions and answers about APIs. 
We previously found that even without any inherent coordination, a crowd of Android developers can cover as much as 88% of the API classes in discussions on Stack Overflow.&lt;/p&gt;

&lt;p&gt;We collected 1,316 days of Android developer history (average 11 weeks per developer) and we found 9,234 visits to &lt;a href="http://stackoverflow.com"&gt;stackoverflow&lt;/a&gt;, as well as 2,547 to &lt;a href="http://developer.android.com"&gt;developer.android.com&lt;/a&gt;, which hosts the official documentation for Android.  We also analyzed the code examples that could be found in the Stack Overflow data dump and &lt;a href="http://developer.android.com/guide"&gt;developer.android.com/guide&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id="in-our-new-study-we-find-that"&gt;In our new study, we find that:&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Developers may be getting as much as 50% of their documentation from Stack Overflow.&lt;/li&gt;
  &lt;li&gt;More examples can be found on Stack Overflow than the official documentation guide.&lt;/li&gt;
  &lt;li&gt;In web searches, Stack Overflow questions are visited 2x-10x more often than official documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

  &lt;div class="more"&gt;
    &lt;a href="/2013/03/api-documentation" class="btn btn-small"&gt;read more..&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="post"&gt;
  &lt;h3 class="title"&gt;&lt;a href="/2013/01/programmer-interrupted"&gt;Programmer Interrupted&lt;/a&gt; &lt;span class="date"&gt;2013-01-19&lt;/span&gt;&lt;/h3&gt;

  &lt;div class="summary ellipsis"&gt;
&lt;p&gt;I&#x2019;m writing this post in an apt state: low-sleep, busy, disorientated, and interrupted. 
I try all the remedies: &lt;a href="http://www.lifehack.org/articles/productivity/the-pomodoro-technique-is-it-right-for-you.html"&gt;Pomodoro&lt;/a&gt;, &lt;a href="http://lifehacker.com/5637503/how-to-stay-productive-working-from-coffee-shops-or-anywhere-out-of-the-office"&gt;working in coffee shops&lt;/a&gt;, &lt;a href="http://www.codinghorror.com/blog/2005/12/headphone-snobbery.html"&gt;headphones&lt;/a&gt;, 
and avoiding work until being &lt;a href="http://www.businessinsider.com/why-programmers-work-at-night-2013-1"&gt;distraction free in the late night&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But it is only so long before interruption finds a way to pierce my protective bubble.  Like you, &lt;em&gt;I am programmer, interrupted&lt;/em&gt;. Unfortunately, our understanding of interruption and remedies for them are not too far from homeopathic cures and bloodletting leeches.&lt;/p&gt;

&lt;p&gt;But what is the evidence and what can we do about it?
Every few months I still see programmers who are asked to &lt;a href="http://programmers.stackexchange.com/questions/97917/my-company-wont-let-me-listen-to-music-anymore"&gt;not use headphones&lt;/a&gt; during work hours or are interrupted by meetings too frequently but have little defense against these claims.  I also fear our declining ability to handle these mental workloads and interruptions &lt;a href="http://improvingsoftware.com/2009/05/19/programmers-before-you-turn-40-get-a-plan-b/"&gt;as we age&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The costs of interruptions have been studied in office environments. An interrupted task is estimated to take twice as long and contain twice as many errors as uninterrupted tasks (&lt;a href="http://dx.doi.org/10.1145/985692.985715"&gt;Czerwinski:04&lt;/a&gt;). Workers have to work in a fragmented state as 57% of tasks are interrupted (&lt;a href="http://dx.doi.org/10.1145/1054972.1055017"&gt;Mark:05&lt;/a&gt;). &lt;/p&gt;

&lt;p&gt;For programmers, there is less evidence of the 
effects and prevalence of interruptions. Typically, the number that gets tossed around 
for getting back into the &#x201C;zone&#x201D; is at least 15 minutes after an interruption. 
Interviews with programmers produce a similiar number (&lt;a href="http://dx.doi.org/10.1109/52.714843"&gt;vanSolingen:98&lt;/a&gt;). 
Nevertheless, numerous figures have weighed in: Paul Graham stresses the differences between a &lt;a href="http://www.paulgraham.com/makersschedule.html"&gt;maker&#x2019;s schedule and manager&#x2019;s schedule&lt;/a&gt;. 
Jason Fried says the office is &lt;a href="http://bigthink.com/ideas/18522"&gt;where we go to get interrupted&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id="interruptions-of-programmers"&gt;Interruptions of Programmers&lt;/h3&gt;

&lt;p&gt;Based on a analysis of 10,000 programming sessions recorded from 86 programmers using Eclipse and Visual Studio and a survey of 414 programmers (&lt;a href="http://www.cc.gatech.edu/~vector/papers/sqj.pdf"&gt;Parnin:10&lt;/a&gt;), we found:&lt;/p&gt;
&lt;/div&gt;

  &lt;div class="more"&gt;
    &lt;a href="/2013/01/programmer-interrupted" class="btn btn-small"&gt;read more..&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="post"&gt;
  &lt;h3 class="title"&gt;&lt;a href="/2012/06/code-timelines"&gt;Code Timelines&lt;/a&gt; &lt;span class="date"&gt;2012-06-29&lt;/span&gt;&lt;/h3&gt;

  &lt;div class="summary ellipsis"&gt;
&lt;p&gt;Software development isn&#x2019;t just about the code we &lt;em&gt;write&lt;/em&gt;.  It also spans the many situations, experiences, and new knowledge we encounter when we write code.&lt;/p&gt;

&lt;p&gt;Funny thing is we can&#x2019;t seem to directly recall or reflect on that stuff very easily.  This is no more apparent than we just finished a whole bunch coding and just seem to draw a blank when writing a commit message.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.ninlabs.com/wp-content/uploads/2012/06/CheckinBlank.png"&gt;&lt;img src="http://blog.ninlabs.com/wp-content/uploads/2012/06/CheckinBlank.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How can we improve a developer&#x2019;s ability to recall and reflect over recent coding experiences? Can we keep better tally over our activities and even curate and share them?&lt;/p&gt;

&lt;h3 id="timelines"&gt;Timelines&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://blog.ninlabs.com/wp-content/uploads/2012/06/CodeNarrative.png"&gt;&lt;img src="http://blog.ninlabs.com/wp-content/uploads/2012/06/CodeNarrative.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Timeline events include uncaught exceptions:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.ninlabs.com/wp-content/uploads/2012/06/Exceptions.png"&gt;&lt;img src="http://blog.ninlabs.com/wp-content/uploads/2012/06/Exceptions.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="collected-history"&gt;Collected History&lt;/h3&gt;

&lt;p&gt;How the system works: Every code change is submitted to a local git repository.&lt;br&gt;
Uncaught exceptions and caught exceptions that hit a breakpoint are logged.  Navigation, searches, code copied and pasted from the web are also logged.  External data such as SVN/GIT repositories and local browser history are integrated into the history.&lt;/p&gt;

&lt;/div&gt;

  &lt;div class="more"&gt;
    &lt;a href="/2012/06/code-timelines" class="btn btn-small"&gt;read more..&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;div class="post"&gt;
  &lt;h3 class="title"&gt;&lt;a href="/2012/05/crowd-documentation"&gt;Crowd Documentation&lt;/a&gt; &lt;span class="date"&gt;2012-05-25&lt;/span&gt;&lt;/h3&gt;

  &lt;div class="summary ellipsis"&gt;
&lt;p&gt;&lt;a href="http://blog.ninlabs.com/wp-content/uploads/2012/05/CrowdDocModelSmall.png"&gt;&lt;img src="http://blog.ninlabs.com/wp-content/uploads/2012/05/CrowdDocModelSmall.png" alt=""&gt;&lt;/a&gt;Traditional documentation requires a process where a few people write for many potential users (especially in the case of API documentation). The resulting documentation, more often than not just doesn&#x2019;t cut it &#x2013; &lt;em&gt;There aren&#x2019;t enough examples, details, or explanations&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Crowd documentation&lt;/em&gt; turns the traditional documentation process on its head &#x2013; knowledge is created and curated by a mostly uncoordinated collective. The potential is massive and already happening: &lt;a href="http://stackoverflow.com"&gt;stackoverflow.com&lt;/a&gt; allows users to ask and answer questions about programming topics, blog posts allow developers to write tutorials and provide solutions to otherwise undocumented issues. StackOverflow already has 3 million questions (with 85% percent answered in a median of 11 minutes) and countless number of blog posts have been written.&lt;/p&gt;

&lt;p&gt;But a &lt;strong&gt;burning question&lt;/strong&gt; remains, can we trust crowd documentation?  Will it be complete, will it be fast, will it be authoritative?  What type of content is created by the crowd and who contributes?&lt;/p&gt;

&lt;h2 id="analyzing-api-discussions-on-stackoverflow"&gt;Analyzing API Discussions on Stackoverflow&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://blog.ninlabs.com/wp-content/uploads/2012/05/ZoomButtonsControllerExampleFitted.png"&gt;&lt;img src="http://blog.ninlabs.com/wp-content/uploads/2012/05/ZoomButtonsControllerExampleFitted.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To answer these questions, we obtained a data dump of the StackOverflow database and we measured the amount of discussion of different API elements, such as classes or methods, on StackOverflow.&lt;br&gt;
We wanted to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
    &lt;p&gt;Will different API elements be widely covered&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;If an API element is discussed infrequently is it also discussed infrequently in practice&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;How fast is the crowd at covering an entire API&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

  &lt;div class="more"&gt;
    &lt;a href="/2012/05/crowd-documentation" class="btn btn-small"&gt;read more..&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="pagination"&gt;
  &lt;ul&gt;
      &lt;li class="active"&gt;&lt;a href="/posts/index/1"&gt;1&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/posts/index/2"&gt;2&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/posts/index/3"&gt;3&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/posts/index/4"&gt;4&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/posts/index/5"&gt;5&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href="/posts/index/6"&gt;6&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
</description>
    </item>
    <item>
      <title>Pages</title>
      <link>http://blog.ninlabs.com/pages</link>
      <description>
&lt;ul&gt;
  
    &lt;li&gt;&lt;a href="/about"&gt;About&lt;/a&gt;&lt;/li&gt;
  
  
    &lt;li&gt;&lt;a href="/archive"&gt;Archive&lt;/a&gt;&lt;/li&gt;
  
  
    &lt;li&gt;&lt;a href="/categories"&gt;Categories&lt;/a&gt;&lt;/li&gt;
  
  
    &lt;li&gt;&lt;a href="/"&gt;Home&lt;/a&gt;&lt;/li&gt;
  
    &lt;li class="active"&gt;&lt;a href="/pages" class="active"&gt;Pages&lt;/a&gt;&lt;/li&gt;
  
  
  
    &lt;li&gt;&lt;a href="/tags"&gt;Tags&lt;/a&gt;&lt;/li&gt;
  
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Tags</title>
      <link>http://blog.ninlabs.com/tags</link>
      <description>
&lt;ul class="tag_box inline"&gt;
  &lt;li&gt;
    &lt;a href="/tags#emg-ref"&gt;emg &lt;span&gt;1&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#labjack-ref"&gt;labjack &lt;span&gt;1&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#subvocal-ref"&gt;subvocal &lt;span&gt;1&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#code-ref"&gt;code &lt;span&gt;9&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#vsx-ref"&gt;vsx &lt;span&gt;4&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#programming-ref"&gt;programming &lt;span&gt;5&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#research-ref"&gt;research &lt;span&gt;12&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#tools-ref"&gt;tools &lt;span&gt;5&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#comic-ref"&gt;comic &lt;span&gt;2&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#conference-ref"&gt;conference &lt;span&gt;2&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#crowddoc-ref"&gt;crowddoc &lt;span&gt;2&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#generics-ref"&gt;generics &lt;span&gt;2&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#wpf-ref"&gt;wpf &lt;span&gt;1&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#interruption-ref"&gt;interruption &lt;span&gt;2&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#memory-ref"&gt;memory &lt;span&gt;3&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#neuroscience-ref"&gt;neuroscience &lt;span&gt;2&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#api-ref"&gt;api &lt;span&gt;1&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;a href="/tags#crowddocumentation-ref"&gt;crowddocumentation &lt;span&gt;1&lt;/span&gt;&lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;

  &lt;h3 id="emg-ref"&gt;emg&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2010/06/recording-emg-sending-event-pulses-with-labjack"&gt;Recording EMG, Sending Event Pulses with LabJack&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="labjack-ref"&gt;labjack&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2010/06/recording-emg-sending-event-pulses-with-labjack"&gt;Recording EMG, Sending Event Pulses with LabJack&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="subvocal-ref"&gt;subvocal&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2010/06/recording-emg-sending-event-pulses-with-labjack"&gt;Recording EMG, Sending Event Pulses with LabJack&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="code-ref"&gt;code&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2010/06/recording-emg-sending-event-pulses-with-labjack"&gt;Recording EMG, Sending Event Pulses with LabJack&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2010/11/visual-studio-search-results-programmatically"&gt;Visual Studio Search Results, Programmatically&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2010/11/extracting-text-from-word-pdf-documents"&gt;Extracting text from Word/PDF documents&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2010/12/customizing-visual-studio-search-results"&gt;Customizing Visual Studio Search Results&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/04/keeping-it-simple-customizing-the-wpf-expander-icon"&gt;Keeping it Simple: Customizing the WPF Expander Icon&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/04/auto-update-visual-studio-extensions"&gt;Auto-update Visual Studio Extensions&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/10/building-a-visual-studio-history-extension-part-1"&gt;Building a Visual Studio History Extension Part #1&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/10/building-a-visual-studio-history-extension-part-2"&gt;Building a Visual Studio History Extension Part #2&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/11/auto-blogging-publishing-a-coding-task-to-wordpress"&gt;Auto-blogging - Publishing a coding task to wordpress.&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="vsx-ref"&gt;vsx&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2010/11/visual-studio-search-results-programmatically"&gt;Visual Studio Search Results, Programmatically&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2010/12/customizing-visual-studio-search-results"&gt;Customizing Visual Studio Search Results&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/10/building-a-visual-studio-history-extension-part-1"&gt;Building a Visual Studio History Extension Part #1&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/10/building-a-visual-studio-history-extension-part-2"&gt;Building a Visual Studio History Extension Part #2&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="programming-ref"&gt;programming&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2010/11/code-diffs-redesigned"&gt;Code Diffs Redesigned&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/10/napkin-idea-code-tabs"&gt;Napkin Idea: Code Tabs&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2012/06/code-timelines"&gt;Code Timelines&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2013/03/api-documentation"&gt;Api Documentation&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2013/01/programmer-interrupted"&gt;Programmer Interrupted&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="research-ref"&gt;research&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2010/11/code-diffs-redesigned"&gt;Code Diffs Redesigned&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/01/tech-preview-code-provenance-for-visual-studio"&gt;Tech Preview: Code Provenance for Visual Studio&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/02/measuring-api-documentation-on-the-web"&gt;Measuring API Documentation on the Web&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/03/java-generics-adoption-how-new-features-are-introduced-championed-or-ignored"&gt;Java Generics Adoption: How New Features are Introduced, Championed, or Ignored&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/05/task-focused-interfaces-particles-of-a-programming-task"&gt;Task-focused Interfaces: Particles of a programming task?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/07/icpc-roundup"&gt;ICPC Roundup&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/10/napkin-idea-code-tabs"&gt;Napkin Idea: Code Tabs&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/11/auto-blogging-publishing-a-coding-task-to-wordpress"&gt;Auto-blogging - Publishing a coding task to wordpress.&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2012/05/crowd-documentation"&gt;Crowd Documentation&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2013/03/api-documentation"&gt;Api Documentation&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2013/12/software-engineering-the-next-50-years"&gt;Software Engineering: The Next 50 Years&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2013/01/programmer-interrupted"&gt;Programmer Interrupted&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="tools-ref"&gt;tools&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2010/11/code-diffs-redesigned"&gt;Code Diffs Redesigned&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/01/tech-preview-code-provenance-for-visual-studio"&gt;Tech Preview: Code Provenance for Visual Studio&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/10/napkin-idea-code-tabs"&gt;Napkin Idea: Code Tabs&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/11/auto-blogging-publishing-a-coding-task-to-wordpress"&gt;Auto-blogging - Publishing a coding task to wordpress.&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2012/06/code-timelines"&gt;Code Timelines&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="comic-ref"&gt;comic&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2011/01/design-comics-illustrating-software-design"&gt;Design Comics: Illustrating Software Design&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/05/battle-for-java-generics"&gt;Battle for Java Generics&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="conference-ref"&gt;conference&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2011/02/upcoming-conferences"&gt;Upcoming Conferences&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/07/icpc-roundup"&gt;ICPC Roundup&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="crowddoc-ref"&gt;crowddoc&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2011/02/measuring-api-documentation-on-the-web"&gt;Measuring API Documentation on the Web&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2012/05/crowd-documentation"&gt;Crowd Documentation&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="generics-ref"&gt;generics&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2011/03/java-generics-adoption-how-new-features-are-introduced-championed-or-ignored"&gt;Java Generics Adoption: How New Features are Introduced, Championed, or Ignored&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2011/05/battle-for-java-generics"&gt;Battle for Java Generics&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="wpf-ref"&gt;wpf&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2011/04/keeping-it-simple-customizing-the-wpf-expander-icon"&gt;Keeping it Simple: Customizing the WPF Expander Icon&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="interruption-ref"&gt;interruption&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2011/05/task-focused-interfaces-particles-of-a-programming-task"&gt;Task-focused Interfaces: Particles of a programming task?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2013/01/programmer-interrupted"&gt;Programmer Interrupted&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="memory-ref"&gt;memory&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2012/02/memory-2-0-a-prelude"&gt;Memory 2.0, A prelude.&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2012/02/memory-2-0-attentive-memory"&gt;Memory 2.0: Attentive Memory&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2013/01/programmer-interrupted"&gt;Programmer Interrupted&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="neuroscience-ref"&gt;neuroscience&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2012/02/memory-2-0-a-prelude"&gt;Memory 2.0, A prelude.&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/2012/02/memory-2-0-attentive-memory"&gt;Memory 2.0: Attentive Memory&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="api-ref"&gt;api&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2013/03/api-documentation"&gt;Api Documentation&lt;/a&gt;&lt;/li&gt;
  &lt;h3 id="crowddocumentation-ref"&gt;crowddocumentation&lt;/h3&gt;
    &lt;li&gt;&lt;a href="/2013/03/api-documentation"&gt;Api Documentation&lt;/a&gt;&lt;/li&gt;
 
</description>
    </item>
  </channel>
</rss>
