<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Michelle Minkoff &#187; programming</title>
	<atom:link href="http://michelleminkoff.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://michelleminkoff.com</link>
	<description>=SUM (Passion + journalism + data + technology)</description>
	<lastBuildDate>Wed, 16 May 2012 16:29:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>An inside look at life at PBS News</title>
		<link>http://michelleminkoff.com/2011/02/17/an-inside-look-at-life-at-pbs-news/</link>
		<comments>http://michelleminkoff.com/2011/02/17/an-inside-look-at-life-at-pbs-news/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 02:57:05 +0000</pubDate>
		<dc:creator>Michelle Minkoff</dc:creator>
				<category><![CDATA[pbsnews.org]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[theory]]></category>

		<guid isPermaLink="false">http://michelleminkoff.com/?p=1350</guid>
		<description><![CDATA[Our industry of &#8220;news application development&#8221; is still in its infancy.  As I&#8217;m given the freedom to reinvent how we do news apps over at PBS News, I&#8217;m relying heavily on staying plugged in to what&#8217;s going on elsewhere in the community.  What have people done so far?  How is it going?  What have they [...]]]></description>
			<content:encoded><![CDATA[<p>Our industry of &#8220;news application development&#8221; is still in its infancy.  As I&#8217;m given the freedom to reinvent how we do news apps over at PBS News, I&#8217;m relying heavily on staying plugged in to what&#8217;s going on elsewhere in the community.  What have people done so far?  How is it going?  What have they learned?  How does my experience differ from theirs?</p>
<p>Luckily, I count many of these colleagues among my friends, and we continually learn from each other.  But for a good roundup of what&#8217;s happening, Poynter&#8217;s Steve Myers wrote a <a href="http://www.poynter.org/latest-news/top-stories/119853/key-departures-point-to-4-factors-critical-to-the-future-of-programming-and-journalism/" target="_blank">fantastic roundup of the state of news apps</a>.  I was eager to contribute to Myers&#8217; survey of the field.</p>
<p>Yet in addition, in my push for openness and transparency, I wanted to share my responses with the community as well.</p>
<p>As you read, consider that just today someone reached this blog searching for &#8220;how to build journalism news apps&#8221;. Surprise, surprise, the answer&#8217;s not here &#8212; yet.</p>
<p>After you take a quick tour through my day-to-day experience at work, please reach out to me through the comments, email, Twitter, whatever and share what you would consider in this environment if you were starting from scratch to combine data, journalism and programming in 2011.  That could be topics, approaches, hints of what to avoid, ways to maintain a good tech-and-data-friendly culture. I&#8217;m hoping we&#8217;ve moved forward enough that there are different answers to these questions in 2011 than there were in 2008 or 2010.<span id="more-1350"></span></p>
<p>We&#8217;ll be working to figure out what the future of data, journalism and technology might look like, adjusting our philosophy as we go, and taking feedback from the public both inside and outside of the journalistic community.  I&#8217;d love to hear your recommendations, thoughts or cautionary tales!</p>
<h2>How is development structured at PBS?</h2>
<p>We have more than 30 developers in house at PBS, working on education, general audience, and kids applications.  Django is our core development techology that serves as the backbone for the entire PBS.org website.  But that’s distinct from the group that works to power our upcoming PBSNews.org website.  I run my work off of a separate server, that’s specifically for data applications, and the main developers spun up a development environment for me.  That’s common practice for various PBS projects. But it’s my responsibility to not break it, and fix it if it does break.  So, I try to keep my database queries low – that’s on me.  But creating a program to back up the database, that’s on another team.</p>
<h2>How does a data producer spend her time?</h2>
<p>I spend 100 percent of my time on news-oriented Web projects. The development is literally a means to practice journalism.  Separating data project development from overall site development is something we&#8217;re still addressing.  So, for instance, embedding a document on a template &#8212; that&#8217;s on me.  Creating an index of all our documents that fits in our overall system is the responsibility of a supporting developer.</p>
<p>Because of how we’ve emerged from the tradition of computer-assisted reporting, posting data online is often a side project to an investigation, or some sort of online directory that doesn’t necessarily tell a newsy story.  That is, they often don’t stand on their own as editorial pieces beyond what I call a “pretty data ghetto,” extending a phrase coined by journalist Matt Waite. They lack substance unto themselves.</p>
<h2>How are we approaching the idea of data pieces?</h2>
<p>We’re pioneering the concept of DataStories, which combine the visual power of data visualizations with the structured organization traditionally associated with data applications, and add a layer of editorial contextualization to enable Web users to learn something new about their world that is most relevant to them.</p>
<p>I’m also thinking about how to make data projects easier and templated for PBS member stations and show producers, as well as other public media entities.</p>
<h2>How does our team work together?</h2>
<p>The PBS setup we&#8217;re creating is ideal. While I could do server administration from scratch, it would probably have more issues than the setup of someone who deals with dozens and dozens of servers. And developers working on content management system infrastructure will take care of the organization so I can focus on using my editorial and technical skills to find, collect, analyze and present data for news.</p>
<p><strong> </strong></p>
<p>Our staff consists of producers with intense journalism experience who’ll be curating content from a variety of public media sources, but there’s strong daily collaboration between me and those producers, as well as our team leaders. I’m considered a member of the team with a specialty in data visualizations and data-driven applications. Those apps are considered as much a journalistic product as an article or a video, so I’m fully integrated into this team.</p>
<h2>How do non data geeks react to working with a hacker journo?</h2>
<p>There&#8217;s definitely a bit of mystique to what I&#8217;m doing, but that mystery is met with strong interest and enthusiasm, not trepidation or intimidation.  It&#8217;s a very new media savvy newsroom. HTML isn&#8217;t intimidating to my new media friendly colleagues, and if people haven’t worked much with data viz/apps before, they’ve certainly heard of them.</p>
<p>My newsroom colleagues know what interactives are capable of, but they rely on me to know the data journalism world inside and out, and to provide my thoughts. There is a solid understanding of the time data pieces take to build &#8212; we’re not going to do ten a day.  My opinions are taken very seriously, never dismissed. I’m given a wonderful amount of freedom to “do what it is I do best”, and am encouraged to innovate.</p>
<p>It’s unusual in my experience to see journalists who use programming to tell stories being so thoroughly integrated into a team. All of my colleagues bring immense experience, an educated perspective and creativity to the team, and that helps us all produce the best work possible.</p>
<h3  class="related_post_title">Explore other posts:</h3><ul class="related_post"><li>March 18, 2010 -- <a href="http://michelleminkoff.com/2010/03/18/my-next-move-la-times/" title="My next move: LA Times!">My next move: LA Times!</a></li><li>August 28, 2011 -- <a href="http://michelleminkoff.com/2011/08/28/thoughts-on-starting-a-new-adventure/" title="Thoughts on starting a new adventure">Thoughts on starting a new adventure</a></li><li>January 18, 2009 -- <a href="http://michelleminkoff.com/2009/01/18/how-much-video-is-too-much-video/" title="How much video is too much video?">How much video is too much video?</a></li><li>January 4, 2010 -- <a href="http://michelleminkoff.com/2010/01/04/math/" title="My new perspective on math &#8211; it&#8217;s a journalistic tool!">My new perspective on math &#8211; it&#8217;s a journalistic tool!</a></li><li>February 22, 2010 -- <a href="http://michelleminkoff.com/2010/02/22/demos-not-memos-my-first-django-app/" title="&#8220;Demos, not memos&#8221;: My first Django app">&#8220;Demos, not memos&#8221;: My first Django app</a></li><li>December 30, 2009 -- <a href="http://michelleminkoff.com/2009/12/30/changes-in-how-we-travel-across-u-s-borders/" title="Changes in how we travel across U.S. borders">Changes in how we travel across U.S. borders</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://michelleminkoff.com/2011/02/17/an-inside-look-at-life-at-pbs-news/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making the structured usable: Transform JSON into a CSV</title>
		<link>http://michelleminkoff.com/2011/02/01/making-the-structured-usable-transform-json-into-a-csv/</link>
		<comments>http://michelleminkoff.com/2011/02/01/making-the-structured-usable-transform-json-into-a-csv/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 06:22:50 +0000</pubDate>
		<dc:creator>Michelle Minkoff</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://michelleminkoff.com/?p=1301</guid>
		<description><![CDATA[Nothing too groundbreaking here, if you&#8217;re a coder, but this was interesting to me in my coding development. This weekend, I pounded away at the Document Cloud API, experimenting with how we might integrate it into our continually-developing workflow at PBS News. This taught me a) the DC folks have some of the clearest documentation [...]]]></description>
			<content:encoded><![CDATA[<p>Nothing too groundbreaking here, if you&#8217;re a coder, but this was interesting to me in my coding development.</p>
<p>This weekend, I pounded away at the <a href="http://www.documentcloud.org/help/api">Document Cloud API</a>, experimenting with how we might integrate it into our continually-developing workflow at PBS News.  </p>
<p>This taught me a) the DC folks have some of the clearest documentation I&#8217;ve ever seen, b) the DC folks are really responsive to requests, as in they added created and modified dates to the API less than two hours after I requested it, c) Don&#8217;t make test documents public, esp. now that anyone can search the public docs and d)APIs are an awesome tool!<br />
<span id="more-1301"></span><br />
As data mungers, a lot of the time we deal with completely unstructured data (I&#8217;m in the middle of a MASSIVE project dealing with that right now), so it&#8217;s always a pleasure when there&#8217;s an API, which stands for &#8220;Application Programming Interface,&#8221; which at least has a fairly consistent pattern.  </p>
<p>APIs are showing up all over journalism.  My former colleagues at the LAT have one for <a href="http://projects.latimes.com/mapping-la/api/">LA neighborhoods</a>, and both <a href="http://developer.usatoday.com/">USA Today</a> and the <a href="http://developer.nytimes.com/">New York Times</a> have several, covering beats from politics (<a href="http://developer.nytimes.com/docs/congress_api">NYT&#8217;s Congress API</a>) to literature (<a href="http://developer.usatoday.com/docs/bestselling_books">USAT&#8217;s Bestsellers API</a>).  They come in formats that are much easier to parse programatically than a lot of other stuff we have to deal with.  And while it&#8217;s important that we structure our content as data, we should also pay attention to structuring the information we engage with as data, so we get back to the &#8220;reporting&#8221; part of database reporting. It&#8217;s something I&#8217;m trying to spend a lot more time on.  And as much aof this as we have, </p>
<p>Fortunately, API skills serve you well whether you&#8217;re talking about newsroom content or external information, so it&#8217;s a useful skill to have.</p>
<p>Oh, and if you want to avoid the programming part altogether, my mentor Derek Willis can <a href="http://blog.thescoop.org/archives/2010/05/11/using-the-nyt-congress-api-with-excel/">help you bring it directly into Excel</a>.  (How many entries do we think I got through without citing Derek?  Not many.  I&#8217;ll try again starting next post.  Prediction: It won&#8217;t last.)</p>
<p>But even so, the overarching point is that using programming (my language of choice is Python) can help you, yes you, have the flexibility to pick information out of the API and bring it into a CSV, or a database, with the structure you impose.  So, hopefully, you can start to imagine the fun I had with pulling in, displaying and remixing the documents we&#8217;ll be using to tell stories at PBS News.</p>
<p>Wait, there&#8217;s more!  You know what&#8217;s even better?  I&#8217;m part of an online journalism group that&#8217;s learning Python together.  It&#8217;s a really great mixture, because I&#8217;m learning a lot from people who&#8217;ve been doing this much longer and better than I, but I&#8217;m also able to help people who are new to Python &#8212; where I was a year ago.  And I love giving back to the community whenever I am able.  </p>
<p>So, when one journalist asked how to get a JSON response from the Twitter API to go into a CSV, I was happy to mock something up, based on the DocCloud code I had put together, and share away.  It occurs to me this might help you make the most of structured data from Twitter, Document Cloud, or any of the JSON-ish APIs out there, so I&#8217;ll post it here as well.  Let me know how to make it better, and if you have any questions.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#To put this into a CSV, csv code adapted from this recipe </span>
<span style="color: #808080; font-style: italic;">#(http://www.palewire.com/posts/2009/03/03/django-recipe-dump-your-queryset-out-as-a-csv-file/) </span>
<span style="color: #808080; font-style: italic;">#of Ben Welsh at the LAT, who helped me do my first work with APIs:</span>
&nbsp;
&nbsp;
<span style="color: #808080; font-style: italic;"># IMPORTS</span>
&nbsp;
&nbsp;
<span style="color: #808080; font-style: italic;">#Make Python understand how to read things on the Internet</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib2</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#Make Python understand the stuff in a page on the Internet is JSON</span>
<span style="color: #ff7700;font-weight:bold;">import</span> json
&nbsp;
<span style="color: #808080; font-style: italic;"># Make Python understand csvs</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">csv</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Make Python know how to take a break so we don't hammer API and exceed rate limit</span>
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">time</span> <span style="color: #ff7700;font-weight:bold;">import</span> sleep
&nbsp;
<span style="color: #808080; font-style: italic;"># tell computer where to put CSV</span>
outfile_path=<span style="color: #483d8b;">'/path/to/my/file.csv'</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># open it up, the w means we will write to it</span>
writer = <span style="color: #dc143c;">csv</span>.<span style="color: black;">writer</span><span style="color: black;">&#40;</span><span style="color: #008000;">open</span><span style="color: black;">&#40;</span>outfile_path, <span style="color: #483d8b;">'w'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#create a list with headings for our columns</span>
headers = <span style="color: black;">&#91;</span><span style="color: #483d8b;">'user'</span>, <span style="color: #483d8b;">'tweet_text'</span><span style="color: black;">&#93;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#write the row of headings to our CSV file</span>
writer.<span style="color: black;">writerow</span><span style="color: black;">&#40;</span>headers<span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
<span style="color: #808080; font-style: italic;"># GET JSON AND PARSE IT INTO DICTIONARY</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># We need a loop because we have to do this for every JSON file we grab</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#set a counter telling us how many times we've gone through the loop, this is the first time, so we'll set it at 1</span>
i=<span style="color: #ff4500;">1</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#loop through pages of JSON returned, 100 is an arbitrary number</span>
<span style="color: #ff7700;font-weight:bold;">while</span> i<span style="color: #66cc66;">&lt;</span><span style="color: #ff4500;">100</span>:
    <span style="color: #808080; font-style: italic;">#print out what number loop we are on, which will make it easier to track down problems when they appear</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> i
    <span style="color: #808080; font-style: italic;">#create the URL of the JSON file we want. We search for 'egypt', want English tweets, </span>
<span style="color: #808080; font-style: italic;">#and set the number of tweets per JSON file to the max of 100, so we have to do as little looping as possible</span>
    url = <span style="color: #dc143c;">urllib2</span>.<span style="color: black;">Request</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'http://search.twitter.com/search.json?q=egypt&amp;lang=en&amp;rpp=100&amp;page='</span> + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #808080; font-style: italic;">#use the JSON library to turn this file into a Pythonic data structure</span>
    parsed_json = json.<span style="color: black;">load</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">urllib2</span>.<span style="color: black;">urlopen</span><span style="color: black;">&#40;</span>url<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #808080; font-style: italic;">#now you have a giant dictionary.</span>
<span style="color: #808080; font-style: italic;">#Type in parsed_json here to get a better look at this. </span>
<span style="color: #808080; font-style: italic;">#You'll see the bulk of the content is contained inside the value that goes with the key, or label &quot;results&quot;. </span>
<span style="color: #808080; font-style: italic;">#Refer to results as an index. Just like list[1] refers to the second item in a list, </span>
<span style="color: #808080; font-style: italic;">#dict['results'] refers to values associated with the key 'results'.</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> parsed_json
&nbsp;
&nbsp;
&nbsp;
    <span style="color: #808080; font-style: italic;">#run through each item in results, and jump to an item in that dictionary, ex: the text of the tweet</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> tweet <span style="color: #ff7700;font-weight:bold;">in</span> parsed_json<span style="color: black;">&#91;</span><span style="color: #483d8b;">'results'</span><span style="color: black;">&#93;</span>:
     <span style="color: #808080; font-style: italic;">#initialize the row</span>
     row = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
     <span style="color: #808080; font-style: italic;">#add every 'cell' to the row list, identifying the item just like an index in a list</span>
     row.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span>tweet<span style="color: black;">&#91;</span><span style="color: #483d8b;">'from_user'</span><span style="color: black;">&#93;</span>.<span style="color: black;">encode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'utf-8'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
     row.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span>tweet<span style="color: black;">&#91;</span><span style="color: #483d8b;">'created_at'</span><span style="color: black;">&#93;</span>.<span style="color: black;">encode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'utf-8'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
     row.<span style="color: black;">append</span><span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span>tweet<span style="color: black;">&#91;</span><span style="color: #483d8b;">'text'</span><span style="color: black;">&#93;</span>.<span style="color: black;">encode</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'utf-8'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
     <span style="color: #808080; font-style: italic;">#once you have all the cells in there, write the row to your csv</span>
     writer.<span style="color: black;">writerow</span><span style="color: black;">&#40;</span>row<span style="color: black;">&#41;</span>
    <span style="color: #808080; font-style: italic;">#increment our loop counter, now we're on the next time through the loop</span>
    i = i +<span style="color: #ff4500;">1</span>
    <span style="color: #808080; font-style: italic;">#tell Python to rest for 5 secs, so we don't exceed our rate limit</span>
    sleep<span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span></pre></div></div>

<h3  class="related_post_title">Explore other posts:</h3><ul class="related_post"><li>January 12, 2010 -- <a href="http://michelleminkoff.com/2010/01/12/data-delver-ted-mellnik-charlotte-observer-database-editor/" title="Data Delver: Ted Mellnik, Charlotte Observer database editor">Data Delver: Ted Mellnik, Charlotte Observer database editor</a></li><li>January 2, 2011 -- <a href="http://michelleminkoff.com/2011/01/02/be-the-la-times-next-data-app-producer-intern/" title="Be the LA Times&#8217; next &#8220;Data app producer intern&#8221;">Be the LA Times&#8217; next &#8220;Data app producer intern&#8221;</a></li><li>February 27, 2012 -- <a href="http://michelleminkoff.com/2012/02/27/teaching-materials-from-nicar-2012/" title="Teaching Materials from NICAR 2012">Teaching Materials from NICAR 2012</a></li><li>March 28, 2010 -- <a href="http://michelleminkoff.com/2010/03/28/data-delver-mark-schaver-louisville-courier/" title="Data Delver: Mark Schaver, Louisville Courier">Data Delver: Mark Schaver, Louisville Courier</a></li><li>January 29, 2010 -- <a href="http://michelleminkoff.com/2010/01/29/data-delver-perry-swanson-the-gazette-colorado-springs/" title="Data Delver: Perry Swanson, The Gazette">Data Delver: Perry Swanson, The Gazette</a></li><li>March 24, 2010 -- <a href="http://michelleminkoff.com/2010/03/24/bringing-data-journalism-into-curricula/" title="Bringing data journalism into curricula">Bringing data journalism into curricula</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://michelleminkoff.com/2011/02/01/making-the-structured-usable-transform-json-into-a-csv/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Heading to PBS: Dreams do come true</title>
		<link>http://michelleminkoff.com/2010/09/28/heading-to-pbs-dreams-do-come-true/</link>
		<comments>http://michelleminkoff.com/2010/09/28/heading-to-pbs-dreams-do-come-true/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 06:46:55 +0000</pubDate>
		<dc:creator>Michelle Minkoff</dc:creator>
				<category><![CDATA[data visualizations]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[theory]]></category>

		<guid isPermaLink="false">http://michelleminkoff.com/?p=1122</guid>
		<description><![CDATA[Warning: This will be long, and sappy, and sentimental, and all things cliche. But, hopefully, it&#8217;s still uplifting and interesting. My &#8220;summer&#8221; internship at the LA Times is almost over. It&#8217;s lasted from April until now, and I could stay longer. I swore you&#8217;d have to drag me out of &#8220;dream internship&#8221; kicking and screaming, [...]]]></description>
			<content:encoded><![CDATA[<p><em>Warning: This will be long, and sappy, and sentimental, and all things cliche. But, hopefully, it&#8217;s still uplifting and interesting.</em></p>
<p>My &#8220;summer&#8221; internship at the LA Times is almost over. It&#8217;s lasted from April until now, and I could stay longer.  I swore you&#8217;d have to drag me out of &#8220;dream internship&#8221; kicking and screaming, as I clung to the massive walls of the still-impressive building.  I will never forget the chance I was given at the LAT, and the boost it gave my career.  But it&#8217;s time to move on.</p>
<p>I&#8217;m delighted to report that I&#8217;m joining PBS as a Data Producer for the organization&#8217;s website.  Specifically, this will be a new news and public affairs component of the site.  Yes, I&#8217;ll work for the national headquarters.  Yes, that&#8217;s in Washington.  We&#8217;re going to start something brand spanking new, capitalizing on the engaging, riveting, in-depth style PBS is known for, and translating that to the Web.  I&#8217;ll get to serve as a generalist, with a specialty.  Exercise my entrepreneurial spirit, but within the structure of a strong organization.<span id="more-1122"></span></p>
<p>We&#8217;ll push the data visualization and application side of things, but I&#8217;ll also get to use the plethora of skills I&#8217;ve picked up along the way outside of data journalism.  We&#8217;ll go on an adventure together.  There&#8217;s so much I can&#8217;t be specific about, because it&#8217;s all new.  But I do promise to not only keep you updated, but pick your brains for advice on what you want to see from the digital side of public television.</p>
<p>That being said, my hope is that we can say a few things for certain: We&#8217;re not going to be doing the same old journalism the same old way.  We WILL push the boundaries of storytelling.  We WILL help people stay informed and engaged with the news.  We WILL help people make sense of the world, and we will do it with concrete facts.  We WILL remember we do this for the users, the public.  We WILL combine the best qualities of data journalism, online journalism and public television.</p>
<p>This transition is made easier by the fact that I have high hopes for bosses who &#8220;get&#8221; the mission I&#8217;ve been yammering about for a year.  It&#8217;s not just about data, but about integration. We&#8217;ll be a nimble enough team that we can learn from each other, and not be segmented.  The folks already on board have significant experience in this world, whether it&#8217;s fellow TribCo alum Tom Davidson or St. Pete Times alum Christine Montgomery &#8212; Matt Waite&#8217;s boss during the launch of Politifact.  They know what data apps are.  That means we push harder.  Not good enough for me to say, &#8220;Hey, you ever heard of data journalism?&#8221; Got to come up with something better, something fresh and new.  We&#8217;ll push each other to create the best product we can.  We only fail if we fail to try.</p>
<p>I&#8217;ll be moving to Washington DC, in a very few short weeks &#8212;  planning to land there by the end of October.  So excited!  After all, about a year ago, I had the pleasure of being introduced to this sort of work.  It all started with one class.  I discovered more and more people like me, and the community made me better.  You can learn a lot from engaging online, but I miss the real-world conversations we had a year ago.  I love the people I&#8217;ve met in LA with all my heart, but I still can&#8217;t help but feel that Washington is my intellectual home.</p>
<p>I&#8217;m excited to return to PBS.  Last summer, I served as a Web intern for Chicago Tonight at WTTW, Chicago&#8217;s PBS affiliate.  It was one of the best summers of my life, and I learned so much about broadcast and the Web, and the relationship/integration between the two.  But that&#8217;s also when the wheels started turning.  I wished I knew more about how to get data on a map.  I wished we could go more in-depth with Web packages.  I wished we could use pure facts, data, not just for investigative pieces, but to enhance people&#8217;s knowledge on topics across beats.  Now, I have enough knowledge to push further, and to accomplish so many things I just couldn&#8217;t a year ago.  And I&#8217;ve long thought public television sites were a niche ripe for the picking.</p>
<p>And now&#8217;s as good a time as any to acknowledge that I wouldn&#8217;t be in this position without the mentorship of NICAR folks.  You know who you are.  And the greatest class I ever took after Medill is the classroom I&#8217;m in every day, the LA Times Data Desk. The data analysts show me the thought process, and intense checking, that goes into every data project.  My boss, Dan Gaines, listens to new ideas and floats his own, always looking at you with an intensity that shows just how much he cares about journalism, and you as a person.  But my greatest teachers have been Ben Welsh and Ken Schwencke.  Fellow journalist-programmers, we geek out together and support each other.  And no matter how messy my code, how many mistakes I made, how much I&#8217;m still in the rough, they make me better, and never with a harsh word.  If I get stressed, I only need to look over at them to see it will all be okay. Leaving them will be the hardest part of all.  But they&#8217;ve prepared me to get to this point, and I&#8217;ll find even more mentors and supporters. And guys, you know you&#8217;re just a GChat or a tweet away, even if a continent separates us.</p>
<p>On an even more personal note, this next step represents some sort of victory.  Yes, I know it&#8217;s only the beginning.  But at the same time, it was this sort of position that I&#8217;ve been working for all along.  I didn&#8217;t learn programming so I could write some awesome loader, geek out about server loads, etc.  It&#8217;s all fascinating, sure!  But I did it, I do it every day, and I will always do it &#8212; for the journalism.  It&#8217;s a tool, just like a photo journalist using a camera.  That doesn&#8217;t make him or her a wedding photographer. They practice journalism through photographs.</p>
<p>We see so many posts in the journo-community, asking if journalists should learn programming, if programmers should learn journalism, what do we name people with this hybrid?</p>
<p>But, here&#8217;s the question I forgot to ask.  Once you start getting all these skills, where can you go to use them?  Some of my mentors received quite a few late-night emails, listened to quite a few rambles.  Where is the place that understands my tech skills are deeper than uploading my story to a content management system?  Where is the place that understands I could add features to your site, and do general tech/IT maintenance all day long, but I have these journalism skills.  The tech skills help to tell the story.  It&#8217;s not one or the other.  I consider myself equal parts programmer and journalist, journalist and programmer.</p>
<p>I had a fascinating job search, and managed to never file a single application, without someone from an organization reaching out to me first.  That&#8217;s not what they tell us will happen at Career Services!  If you want to pursue this career change, there isn&#8217;t a better time.  Still, finding the right organizational match is no easy task.  And I can&#8217;t tell you how ecstatic I am to have found that match.</p>
<p>In a world where we decry the death of journalism on a daily basis, where we&#8217;re afraid we won&#8217;t get jobs,  I say there IS hope if we hold out.  If you believe in what we do, follow your interests and skills, you&#8217;ve got a better shot. We must always push onward.  And I, well, I never believed that less than a year after graduating Medill, not only would someone pay me to do what I love, but I would get to do it at an organization that instilled my own love for education.   It still seems like a dream that&#8217;s coming true.  I never believed I&#8217;d get to a national organization this fast.  I never believed I&#8217;d get to take my ideas outside of a blog, outside of an academic paper, outside of internship after internship.  Doesn&#8217;t mean I&#8217;m right, I&#8217;m probably not.  But if the ideas just stay incubated, and are never considered professionally, what good is that?</p>
<p>We don&#8217;t have time to waste.  The moment is now.  We can&#8217;t afford to wait, the industry&#8217;s already behind where it should be in 2010.</p>
<p>So, I promise anyone reading this, friends I&#8217;ve known since elementary school, my dear supportive parents, teachers from all levels of schooling, fellow journalists fighting the fight for truth and knowledge every day, I promise that I will give this everything I&#8217;ve got.  I recognize the preciousness of this gift. And on behalf of young journos everywhere, PBS, thank you for believing in us, in our potential.  Thank you for the opportunity to experiment on a national playground.  We only move forward by trying something new.</p>
<p>There will be no resting on laurels, there will be no complacency. Thank you all for your help so far, and I know we&#8217;ll be calling on each other in the days, weeks and years to come.</p>
<p>But for now, journalism must push forward.  Let&#8217;s get started.</p>
<h3  class="related_post_title">Explore other posts:</h3><ul class="related_post"><li>April 11, 2010 -- <a href="http://michelleminkoff.com/2010/04/11/data-delver-paul-monies-oklahoman/" title="Data Delver: Paul Monies, The Oklahoman">Data Delver: Paul Monies, The Oklahoman</a></li><li>April 7, 2010 -- <a href="http://michelleminkoff.com/2010/04/07/columbias-joint-ms-good-start-panacea/" title="Columbia&#8217;s new joint MS: Good start, but no panacea">Columbia&#8217;s new joint MS: Good start, but no panacea</a></li><li>April 5, 2010 -- <a href="http://michelleminkoff.com/2010/04/05/coding-skills-are-no-passover-miracle/" title="Women with coding skills are no Passover miracle">Women with coding skills are no Passover miracle</a></li><li>February 21, 2010 -- <a href="http://michelleminkoff.com/2010/02/21/text-file-or-database/" title="Is a flat text file or a database right for an app?">Is a flat text file or a database right for an app?</a></li><li>November 25, 2009 -- <a href="http://michelleminkoff.com/2009/11/25/the-limitations-of-sql-and-access/" title="The limitations of SQL and Access">The limitations of SQL and Access</a></li><li>January 18, 2009 -- <a href="http://michelleminkoff.com/2009/01/18/how-much-video-is-too-much-video/" title="How much video is too much video?">How much video is too much video?</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://michelleminkoff.com/2010/09/28/heading-to-pbs-dreams-do-come-true/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>The power of linkable data apps (my second LAT app)</title>
		<link>http://michelleminkoff.com/2010/09/21/the-power-of-linkable-data-apps-my-second-lat-app/</link>
		<comments>http://michelleminkoff.com/2010/09/21/the-power-of-linkable-data-apps-my-second-lat-app/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 05:55:02 +0000</pubDate>
		<dc:creator>Michelle Minkoff</dc:creator>
				<category><![CDATA[data visualizations]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[contributions]]></category>
		<category><![CDATA[django app]]></category>
		<category><![CDATA[LAT]]></category>
		<category><![CDATA[proposition 19]]></category>

		<guid isPermaLink="false">http://michelleminkoff.com/?p=1118</guid>
		<description><![CDATA[Story of my life: This is a few weeks overdue. Launched a new app at the beginning of this month, tracking Prop 19 campaign contributions, which you can see at http://projects.latimes.com/prop19 I&#8217;ve spent much of my &#8220;summer&#8221; internship at the LA Times (ranging from April through present) working on a campaign contributions searchable application, to [...]]]></description>
			<content:encoded><![CDATA[<p>Story of my life: This is a few weeks overdue.  Launched a new app at the beginning of this month, tracking Prop 19 campaign contributions, which you can see at <a href="http://projects.latimes.com/prop19">http://projects.latimes.com/prop19</a><span id="more-1118"></span></p>
<p>I&#8217;ve spent much of my &#8220;summer&#8221; internship at the LA Times (ranging from April through present) working on a campaign contributions searchable application, to help the public explore the money that&#8217;s financing various propositions in California. The first step was getting the <a href="http://projects.latimes.com/prop8">Prop 8 application</a> out back in late June.  I&#8217;m really into the idea of templating data apps recently.  Make a custom interface, but make it resuable, so it doesn&#8217;t have to stop as one application.  It&#8217;s like how we already use third-party source tools as frameworks (Dipity, ManyEyes, etc.) We should expect the same, if not more, of custom solutions we create ourselves.  So, the original idea for the Prop 19 app was to apply Prop 19 data to the Prop 8 code.  We did that, but as is my normal mode, more features suddenly found themselves on the list.  So, in the end, we have two frameworks for campaign contributions now: the simple version and the more advanced version. </p>
<p>One of the large advancements in the second version is that every single donation is listed separately.  In Prop 8, the legacy data passed down to me had aggregate donations, which is helpful, but means users miss out on certain nuances.  So, when we were able to pass each donation in separately, I believed it was key to make each one linkable and sharable.  Not only does each donation have a separate link, but so does every donor, city, state, zipcode and committee.  This means if people find something and want to blog about it, share it with a friend, draw a media organization&#8217;s attention to it, whatever, they have a way to point someone else to that exact spot.  We don&#8217;t do enough of it in the data apps world.  Web frameworks make this easier, Flash interactives do not.</p>
<p>Creating permanent links to records and aggregate pages of our data is essential.  It&#8217;s how we combine our searchable databases with other reporting forms that provide even more context.  Did you write a story about someone you know gave a lot of money to a campaign?  And there&#8217;s a searchable database to go with that campaign?  Don&#8217;t just tell me they donated a lot of money, show me.</p>
<p>Just an example of one way we can change our mindset as reporters, Web producers, developers or whatever it is we do.  Find the minute detail, make it shareable.  Because while you may only care about record #1157, someone else cares much more about record #1158.  And both of you should be able to find that piece of the story that matters to you and use it.  That&#8217;s data for personalized news, and yet another lesson I take away from my time at the LAT.</p>
<p>PS &#8212; If you want a random Django tip (come on, you know you do) {% ifchanged %} is my new favorite template tag.  If you have a big list you&#8217;ve pulled out as a query, and it&#8217;s sorted, but you want to separate the list into subcategories, you want this.  Figure out an attribute that&#8217;s going to change, and enter that info as a label, inside the {% ifchanged %} tag.  It&#8217;ll show up when the code and text inside the tag changes &#8212; makes sense. This tip has made an ongoing project a lot easier, which I&#8217;ll be able to chat more about in a few weeks once it launches.</p>
<h3  class="related_post_title">Explore other posts:</h3><ul class="related_post"><li>February 9, 2010 -- <a href="http://michelleminkoff.com/2010/02/09/treemapping-gov-quinns-state-of-the-state/" title="Treemapping Gov. Quinn&#8217;s State of the State">Treemapping Gov. Quinn&#8217;s State of the State</a></li><li>March 8, 2010 -- <a href="http://michelleminkoff.com/2010/03/08/data-delver-jennifer-lafleur-propublica/" title="Data Delver: Jennifer LaFleur, ProPublica">Data Delver: Jennifer LaFleur, ProPublica</a></li><li>January 18, 2009 -- <a href="http://michelleminkoff.com/2009/01/18/how-much-video-is-too-much-video/" title="How much video is too much video?">How much video is too much video?</a></li><li>March 26, 2011 -- <a href="http://michelleminkoff.com/2011/03/26/my-quickly-formed-vision-for-a-journ-prog-curriculum/" title="My (quickly formed) vision for a journ-prog curriculum">My (quickly formed) vision for a journ-prog curriculum</a></li><li>March 8, 2010 -- <a href="http://michelleminkoff.com/2010/03/08/data-delver-tony-debarros-usa-today/" title="Data Delver: Anthony DeBarros, USA Today">Data Delver: Anthony DeBarros, USA Today</a></li><li>January 11, 2010 -- <a href="http://michelleminkoff.com/2010/01/11/importance-of-combining-data-analysis-with-context-reflections-on-readings-from-week-two/" title="Importance of combining data analysis with context (reflections on readings from week two)">Importance of combining data analysis with context (reflections on readings from week two)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://michelleminkoff.com/2010/09/21/the-power-of-linkable-data-apps-my-second-lat-app/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Journ curricula&#8217;s need for transition isn&#8217;t unique</title>
		<link>http://michelleminkoff.com/2010/09/16/journ-curriculas-transition-isnt-unique/</link>
		<comments>http://michelleminkoff.com/2010/09/16/journ-curriculas-transition-isnt-unique/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 05:55:40 +0000</pubDate>
		<dc:creator>Michelle Minkoff</dc:creator>
				<category><![CDATA[CAR]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[theory]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[argonne national laboratory]]></category>
		<category><![CDATA[computational science]]></category>
		<category><![CDATA[computer science]]></category>
		<category><![CDATA[mike minkoff]]></category>

		<guid isPermaLink="false">http://michelleminkoff.com/?p=1106</guid>
		<description><![CDATA[Despite being months out of school, I&#8217;m still relatively obsessed with teaching and learning. That&#8217;s part of what makes journalism these days fun &#8212; we learn about our subject matters, and we learn new tools for information display. But the training of new journos has a special place in my heart. Every day, I benefit [...]]]></description>
			<content:encoded><![CDATA[<p>Despite being months out of school, I&#8217;m still relatively obsessed with teaching and learning.  That&#8217;s part of what makes journalism these days fun &#8212; we learn about our subject matters, and we learn new tools for information display.  But the training of new journos has a special place in my heart.  Every day, I benefit from the teachers in my life at the LAT, and elsewhere in the community.  In return, you, the knowledgable, tell me to pass it on.  So, anytime someone has a question, I make a very serious effort to do whatever I can.  All of which is a long way of saying I&#8217;m still obsessed with the transition that journalism curricula must go through.  We shouldn&#8217;t give up our fundamental basics that allow us to find the truth, and convey it to the public.  But we must teach new skills as well.<span id="more-1106"></span></p>
<p>That&#8217;s why I absolutely loved last week&#8217;s <a href="http://stevebuttry.wordpress.com/2010/09/11/you-cant-go-back-to-the-basics-in-journalism-education-go-forward-with-the-basics/">post</a> by TBD&#8217;s Steve Buttry on this isssue.  Read it, seriously.  I was going to write up my comments, but I&#8217;ve got something better.  </p>
<p>I started discussing this issue with my father Mike Minkoff, who happened to be in town last week.  And he helped me realize the struggle our education finds itself in, well, it&#8217;s nothing new.</p>
<p>Mike is a computational scientist at Illinois&#8217; <a href="http://www.anl.gov/">Argonne National Laboratory</a>, using his cs skills to enhance the work of his fellow scientists, and enables them to explore problems whose complexity or sheer magnitude is beyond the reach of mere humans.  It&#8217;s applying tech skills to another field.  And that&#8217;s a little bit like what we do as journo-programmers, bring the cs to the journalism.  </p>
<p>But when he was going to school, computer science curricula weren&#8217;t all that certain.  And we can learn from that transition.  I&#8217;ll let him take it away.</p>
<blockquote><p>I am a computational scientist with an interest in data in journalism.  I find a number of exciting and interesting parallels between the current evolution of journalism as discussed in <a href="http://stevebuttry.wordpress.com/2010/09/11/you-cant-go-back-to-the-basics-in-journalism-education-go-forward-with-the-basics/">this post</a> and the early history of the field of computer science when I went to grad school in the 1960s.   </p>
<p>I studied computer science at the undergraduate level through Ph.D. between 1963 and 1973 at the University of Wisconsin and Princeton University.   During that time, there were relatively few schools that had curricula in computer science (Cal Tech, MIT, the University of Wisconsin and a few others) and the programs were principally at the graduate level.  In fact, schools didn&#8217;t always call it &#8220;Computer Science&#8221; &#8212; some of the courses were listed as &#8220;Programs in Numerical Analysis,&#8221; as at Wisconsin.   </p>
<p>There are two points I&#8217;d like to comment on: </p>
<ol>
<li>In the 1960s, as computer science programs developed there was a fundamental debate regarding what should be taught and where.  On the one hand, grad students and faculty felt that learning a programming language was of utmost importance in order to get a job after graduation.  On the other hand, others felt that theory is more important so the student can develop and move with the technology rather than become stagnant as technology advanced.  Later on, the theory approach justified the placement of computer science in major universities rather than trade schools.  There is a parallel here to the &#8220;basics&#8221; vs. &#8220;technology&#8221; issue in journalism.
<p>As this debate developed,  the professional societies (notably the Association for Computing Machinery) established a committee to define a core curriculum of an B.S., M.S., or Ph.D. and allow for electives that could be locally defined by the institution.  The courses in the core represented the key areas of computer science and are reflected in their decendents today in simulation and modeling, data analysis and operating systems theory: </p>
<ul>
<li>numerical analysis and mathematical optimization </li>
<li> systems programming </li>
<li>artificial intelligence and automated reasoning </li>
</ul>
<p>Of course these are historical topics and just as the technology used in journalism will develop in new ways, so did these areas. </p>
<p>As to the theory vs. language issue the obvious answer is both.   In all fields, as the subject advances there are always new topics to integrate into a curriculum.  I would expect that a journalist be as good a writer as in the past, but also he or she must know how to utilize the technology of today (and tomorrow).  I would hope that in the rush to move with technology the programs and faculty of traditional journalism is not neglected.   There is the danger of being so committed to technology that the core of basic journalism is lost.
 </li>
<li> One of the most exciting parallels to me has lasted my career. The pioneers of computer science were my teachers, mentors and lifelong friends and advisors just as the present digital journalism teachers and mentors are for their students.  Graduate school is not just a spoon-fed set of courses, but a place where inquiry and learning can be nurtured.  One of the commonalities of computer science of the 1960s and the technology journalism of today is that once in a generation a field provides the opportunity to meet and learn from the people who created the field.  This gives the mentor and student to opportunity to rise to the challenge of working in a new and growing field.  While students in both areas need to decide for themselves what they want to get out of a career, for me it is exciting to meet and learn from the people who created the field.  As a student, I felt that the difference between studying math and computer science was that you could meet and talk with the developers and authors of the textbooks.  Of course today it is the blog rather than the textbook, I guess!
</li>
</ol>
</blockquote>
<p>I thought this was definitely something to ponder, and I hope that in a generation, I&#8217;ll be the one telling my children about the parallels between what we consider modern journalis, and some new transition their field is going through.  </p>
<p>Has this gotten you thinking, too?  That&#8217;s what the comments section is for!</p>
<h3  class="related_post_title">Related posts you might enjoy:</h3><ul class="related_post"><li>April 7, 2010 -- <a href="http://michelleminkoff.com/2010/04/07/columbias-joint-ms-good-start-panacea/" title="Columbia&#8217;s new joint MS: Good start, but no panacea">Columbia&#8217;s new joint MS: Good start, but no panacea</a></li><li>January 31, 2010 -- <a href="http://michelleminkoff.com/2010/01/31/data-delver-matt-waite/" title="Data Delver: Matt Waite, St. Petersburg Times">Data Delver: Matt Waite, St. Petersburg Times</a></li><li>November 24, 2009 -- <a href="http://michelleminkoff.com/2009/11/24/a-letter-to-journo-programmers-teach-me-inspire-me/" title="A letter to journo-programmers: Teach me, inspire me">A letter to journo-programmers: Teach me, inspire me</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://michelleminkoff.com/2010/09/16/journ-curriculas-transition-isnt-unique/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hosting #wjchat &#8212; Finding the story in the data</title>
		<link>http://michelleminkoff.com/2010/09/07/hosting-wjchat-finding-the-story-in-the-data/</link>
		<comments>http://michelleminkoff.com/2010/09/07/hosting-wjchat-finding-the-story-in-the-data/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 02:01:29 +0000</pubDate>
		<dc:creator>Michelle Minkoff</dc:creator>
				<category><![CDATA[CAR]]></category>
		<category><![CDATA[data visualizations]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://michelleminkoff.com/?p=1085</guid>
		<description><![CDATA[UPDATE: More later, but if you missed the geekery and fantastic exchange of knowledge that you get with a phenomenally sharp, inquisitive and dedicated group like the #wjchatters, you can find the transcript here. Tomorrow, Wed. Sept. 8, we&#8217;ll be discussing &#8220;Finding the story in the data&#8221; at #wjchat, and I have been tapped to [...]]]></description>
			<content:encoded><![CDATA[<p><strong>UPDATE:  More later, but if you missed the geekery and fantastic exchange of knowledge that you get with a phenomenally sharp, inquisitive and dedicated group like the #wjchatters, you can find the transcript <a href="http://wjchat.webjournalist.org/?page_id=223">here</a>.</strong></p>
<p>Tomorrow, Wed. Sept. 8, we&#8217;ll be discussing &#8220;Finding the story in the data&#8221; at #wjchat, and I have been tapped to host.  (One might ask why, they must really be running low on people&#8230;.I kid, I kid.)  </p>
<p>This issue is extremely important, and one that must be addressed by the Web journalism groups.  There&#8217;s a difference between telling a journalistic story, but lacking the data and displaying data in an aesthetically pleasing way that doesn&#8217;t really tell a story.  The best data journalism does both.  It&#8217;s rare, and I believe we all need to work harder at doing more of it.  A tall order for someone to do alone, or even a team, but if the community puts its collective head together, we&#8217;ve got a better shot.<br />
<span id="more-1085"></span><br />
I couldn&#8217;t be more excited to discuss some of the issues I&#8217;ve been spending much of the last year internalizing.  I have some better ideas about this now than I did back last September, I hope, but it&#8217;s also one of my favorite topics to ponder, because there are so many ideas I know I haven&#8217;t considered.  I hope to report back with a nice compilation of links and thoughts once we tap into the community&#8217;s knowledge, but for now, I&#8217;m just spreading the word.  </p>
<p>If you read this blog, but aren&#8217;t familiar with #wjchat, it&#8217;s a gathering on Twitter on Wednesday evenings where we discuss various aspects of online journalism.  It ranges from social media, to video, to how to get a job, to data.  I love all the facets of journalism, so it&#8217;s a great way to guarantee yourself some great conversation and learning all wrapped up into one package.  At 5 Pacific, 8 Eastern, on Wednesday, that&#8217;s tomorrow, just hop on over to Twitter and follow the hashtag #wjchat.  I find it easier to follow via tweetchat.com, which gives you a little chatroom that has a nicer interface than twitter.com &#8212; the conversation can get fast and furious.</p>
<p>In the meantime, if there are specific topics you&#8217;d like to see discussed, or questions you&#8217;d like asked, get at me before, or during the chat.  </p>
<p>And if you&#8217;re one of my dear NICARian mentors, it&#8217;d be really fantastic if you could find the time to drop by.  Anything I&#8217;ve picked up in my career thus far is minimal, and I owe it all to the collective wisdom of those who&#8217;ve taught me what I know as a journalist and a programmer.</p>
<p>See you in the virtual space!</p>
<h3  class="related_post_title">Explore other posts:</h3><ul class="related_post"><li>November 22, 2010 -- <a href="http://michelleminkoff.com/2010/11/22/using-google-spreadsheets-as-your-database/" title="Using Google spreadsheets as your database">Using Google spreadsheets as your database</a></li><li>September 6, 2010 -- <a href="http://michelleminkoff.com/2010/09/06/whats-regex-again-why-should-journos-care/" title="What&#8217;s regex again?  Why should journos care?">What&#8217;s regex again?  Why should journos care?</a></li><li>February 28, 2010 -- <a href="http://michelleminkoff.com/2010/02/28/django-app-2-conquering-forms-and-the-google-api/" title="Django app #2: Conquering forms and Google Maps API">Django app #2: Conquering forms and Google Maps API</a></li><li>February 17, 2011 -- <a href="http://michelleminkoff.com/2011/02/17/an-inside-look-at-life-at-pbs-news/" title="An inside look at life at PBS News">An inside look at life at PBS News</a></li><li>May 24, 2011 -- <a href="http://michelleminkoff.com/2011/05/24/oh-hi-blog-readers-its-been-a-while/" title="Oh, hi, blog readers &#8212; it&#8217;s been a while!">Oh, hi, blog readers &#8212; it&#8217;s been a while!</a></li><li>January 1, 2011 -- <a href="http://michelleminkoff.com/2011/01/01/looking-back-on-a-year-what-now/" title="Looking back on a year: What now?">Looking back on a year: What now?</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://michelleminkoff.com/2010/09/07/hosting-wjchat-finding-the-story-in-the-data/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What&#8217;s regex again?  Why should journos care?</title>
		<link>http://michelleminkoff.com/2010/09/06/whats-regex-again-why-should-journos-care/</link>
		<comments>http://michelleminkoff.com/2010/09/06/whats-regex-again-why-should-journos-care/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 06:27:30 +0000</pubDate>
		<dc:creator>Michelle Minkoff</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://michelleminkoff.com/?p=1069</guid>
		<description><![CDATA[My days continue to putter along at the delightful dream job that is working at the LAT Data Desk. Some work is public-facing, a lot is internal to the LAT, but it&#8217;s always a learning experience. Recently, I had the opportunity (okay, was tasked with) getting some information out of our archives into a database [...]]]></description>
			<content:encoded><![CDATA[<p>My days continue to putter along at the delightful dream job that is working at the LAT Data Desk. Some work is public-facing, a lot is internal to the LAT, but it&#8217;s always a learning experience.  Recently, I had the opportunity (okay, was tasked with) getting some information out of our archives into a database structure.  Requesting the 1000-page text file was the easy part.  Figuring out to get from &#8220;blob of text&#8221; to &#8220;neat items in data-friendly columns&#8221; is another story.  Luckily, the unstructured text had some patterns.  And patterns are a big part of what programming is all about.<span id="more-1069"></span></p>
<p>You may have heard the term &#8220;regex&#8221; before &#8212; short for regular expressions. And compared to the way we talk and write, they&#8217;re anything but regular.  But choosing between writing the &#8220;regex to rule them all&#8221; as I&#8217;ve been calling it, in a not-so-veiled reference to Tolkein&#8217;s Lord of the Rings geek trilogy, or copying and pasting tens of thousands of records by hand, I&#8217;ll take the former any day.</p>
<p>So, if you want to get through a large, unstructured set of data quickly, and make sense of the unsensical, regex is a great way to go.  But your pattern had better be consistent.  Computers don&#8217;t do well with exceptions, after all.</p>
<p>And if you&#8217;re a journo who doesn&#8217;t want to throw yourself into programming, here&#8217;s the one thing you should take away.  If you have a document that could be a database, maybe there&#8217;s some dollar amounts, and you&#8217;d like to know the biggest one and what category it&#8217;s associated with, why not go to your programmer and ask if it&#8217;s something regex can help solve?  Worst case scenario: your programmer says it&#8217;s not the right fit.</p>
<p>Some of my favorite explanations of regex are:</p>
<ul>
<li>Google&#8217;s tutorial in <a href="http://code.google.com/edu/languages/google-python-class/regular-expressions.html">text</a> and <a href="http://www.youtube.com/watch?v=kWyoYtvJpe4">video</a></li>
<li>Better explanation than I can give is <a href="http://www.palewire.com/posts/2008/04/14/python-recipe-read-a-file-search-for-a-pattern-print-your-matches/">here</a> on Ben Welsh&#8217;s site, as per usual</li>
<li><a href="http://www.regular-expressions.info/reference.html">Simple syntax reference</a></li>
<li><a href="http://re.dabase.com/">Python/PHP regex tester </a>&#8211; Plug your text and pattern in, and it&#8217;ll tell you if you messed up.  My best friend as of late (which says something about my social life, but I digress).</li>
</ul>
<p>So, a mini foray into how this works.  A poorly-written regex looks like this:</p>
<p>&#8216;[0-9]{1}\)[ ]{0,20}([A-Z0-9\n ]{1}[\w\d\n\(\)\"\'\.\:\,\;\-" /]*[\#]{0,1}[\w\d\n\(\)\"\'\.\;\:\,\-" /]*\.{1}?[\"]{0,1})&#8217;</p>
<p>Stop screaming.  A less frightening one:<br />
&#8216;\$([0-9]{1,2}[\.]{0,1}[0-9]{0,2})&#8217;</p>
<p>Both of those are hand-crafted, newbie coder at work examples.</p>
<p>The second one isn&#8217;t any more intelligible.  That&#8217;s not better?  Let&#8217;s break it down.</p>
<p>Some simple tips:</p>
<ul>
<li>A regular expression is a string of numbers, letters and special characters.  You use your language of choice to parse it (I&#8217;m partial to Python, access the parser by importing &#8220;re&#8221;.  Easy enough to remember.</li>
<li>Define the range of characters you are looking for in brackets.  [0-9] means looks for characters that are digits between 0 and 9.  Do the same for letters A-Z or a-z, or specify specific letters: [t] means t is the only acceptable character.</li>
<li>After you define your range in brackets, follow it by saying how many times you are looking for such a character.  {2} means it needs to appear 2 times to match, no more, no less.  {0,2} means the characters can show up 0, 1, or 2 times.  Include 0 in your frequency if you want to be more flexible, and allow this range to be optional.</li>
<li>Type . to include all characters.</li>
<li>Type * in your frequency to include the character 0 or more times, + for one or more times.</li>
<li>If you only have one character in your range or frequency, you can leave your [] or {} out.</li>
<li>If you want to define a start and end to your pattern, but not include that in what the computer returns, or spits back to you, enclose the part you care about in () and the rest will get junked</li>
<li>If you are including a special character in your range, such as searching for all ., you need to escape it, or use the \ key in front of it.</li>
<li>Escaping characters that don&#8217;t need to be escaped can&#8217;t hurt, at least in my experiments. But forget to escape a character, and you have hours of debugging ahead of you, because of a missing \.  Yes, I speak from painful experience.</li>
</ul>
<p>There&#8217;s more, but that&#8217;s a good start.  So, what does this mean?:</p>
<p>&#8216;\$([0-9]{1,2}[\.]{0,1}[0-9]{0,2})&#8217;</p>
<p>Search for strings of characters that start with a $, are followed by one or two numerical digits, followed by 0 or 1 dots, followed by 0, 1, or 2 digits.  What does that spell?  A price that conforms to AP style.  It&#8217;ll catch whole numbers ($25) or those with cents attached ($25.50) or prices below $10 with cents attached ($1.25). Pull your budget numbers out of that ghastly text file the city council gave you.</p>
<p><strong>How do I use that regex?</strong></p>
<p>Okay, okay, good point.  I&#8217;ll tell you how in Python.  Let&#8217;s say we&#8217;re searching for all prices in a file.<br />
Here&#8217;s some line by line commented code to help you through it, and save all the prices to a CSV spreadsheet.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#Open the file you're reading from</span>
<span style="color: #008000;">file</span> = <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'raw_file.txt'</span>, <span style="color: #483d8b;">&quot;r&quot;</span><span style="color: black;">&#41;</span>
<span style="color: #808080; font-style: italic;">#Read the file into a variable, so you can access it</span>
file_to_search = f.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #808080; font-style: italic;">#Save your regex pattern into a variable.  Use the r before the opening quote to tell the computer it's a raw string, otherwise it may try to convert it into unicode.  I've noticed Python has a tendency to interpret my unicode strings as raw, and my raw strings as unicode, unless I'm explicit about what I mean.  And as the &lt;a href=&quot;http://www.python.org/dev/peps/pep-0020/&quot;&gt;Zen of Python&lt;/a&gt; says, &quot;Explicit is better than implicit.&quot;</span>
price_pattern = r<span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\$</span>([0-9]{1,2}[<span style="color: #000099; font-weight: bold;">\.</span>]{0,1}[0-9]{0,2})'</span>
<span style="color: #808080; font-style: italic;">#Create a list of all pieces of text in your file that match the pattern.  List the pattern as the first item in the parens (otherwise known as an argument), list the file you're search in as the second argument, add the third argument re.DOTALL if you want the . character, which signifies all characters to include newlines -- this tripped me up at first</span>
price_list = <span style="color: #dc143c;">re</span>.<span style="color: black;">findall</span><span style="color: black;">&#40;</span>price_pattern, file_to_search, <span style="color: #dc143c;">re</span>.<span style="color: black;">DOTALL</span><span style="color: black;">&#41;</span>
<span style="color: #808080; font-style: italic;">#Open a CSV object, which you can save list items into, the a means that every time you write a new row, you append the new rows of text, and avoid overwriting what's already in the file</span>
writer = <span style="color: #dc143c;">csv</span>.<span style="color: black;">writer</span><span style="color: black;">&#40;</span><span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;prices.csv&quot;</span>, <span style="color: #483d8b;">&quot;a&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>To figure out the rest of how to write this to a CSV, modify teacher Ben&#8217;s <a href="http://www.palewire.com/posts/2009/03/03/django-recipe-dump-your-queryset-out-as-a-csv-file/">recipe</a> &#8212; it&#8217;s how I figured it out.  After all, this is about regex, not CSV writing.</p>
<p>Or, do whatever you want with that list.  You could sort it to find the highest or average price&#8230;possibilities really are endless.</p>
<p>Oh, and what went wrong with that first, horrificly long example I gave you?  Didn&#8217;t know you could use . to signify all characters.  You try specifying every single character that could possibly be used in a string of text.  You&#8217;ll always end up forgetting at least one.  The lesson there: the computer is better at catching all instances of something than you are.  Don&#8217;t try to compete.  Accept its&#8217; strength and move on.  Your strength: The computer can&#8217;t read the human language you&#8217;re parsing.  So, point one for us.</p>
<h3  class="related_post_title">Explore other posts:</h3><ul class="related_post"><li>February 22, 2010 -- <a href="http://michelleminkoff.com/2010/02/22/david-carr-at-medill/" title="David Carr at Medill">David Carr at Medill</a></li><li>March 26, 2011 -- <a href="http://michelleminkoff.com/2011/03/26/my-quickly-formed-vision-for-a-journ-prog-curriculum/" title="My (quickly formed) vision for a journ-prog curriculum">My (quickly formed) vision for a journ-prog curriculum</a></li><li>September 21, 2010 -- <a href="http://michelleminkoff.com/2010/09/21/the-power-of-linkable-data-apps-my-second-lat-app/" title="The power of linkable data apps (my second LAT app)">The power of linkable data apps (my second LAT app)</a></li><li>March 8, 2010 -- <a href="http://michelleminkoff.com/2010/03/08/data-delver-tony-debarros-usa-today/" title="Data Delver: Anthony DeBarros, USA Today">Data Delver: Anthony DeBarros, USA Today</a></li><li>March 8, 2010 -- <a href="http://michelleminkoff.com/2010/03/08/data-delver-matt-wynn-arizona-republic/" title="Data Delver: Matt Wynn, Arizona Republic">Data Delver: Matt Wynn, Arizona Republic</a></li><li>August 18, 2011 -- <a href="http://michelleminkoff.com/2011/08/18/hope-recognizing-what-you-can-and-cant-change/" title="Hope: Recognizing what you can and can&#8217;t change">Hope: Recognizing what you can and can&#8217;t change</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://michelleminkoff.com/2010/09/06/whats-regex-again-why-should-journos-care/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>First LAT app (or the butterfly on my windowsill)</title>
		<link>http://michelleminkoff.com/2010/07/11/my-first-lat-django-app-or-the-butterfly-on-my-windowsill/</link>
		<comments>http://michelleminkoff.com/2010/07/11/my-first-lat-django-app-or-the-butterfly-on-my-windowsill/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 05:27:56 +0000</pubDate>
		<dc:creator>Michelle Minkoff</dc:creator>
				<category><![CDATA[CAR]]></category>
		<category><![CDATA[data visualizations]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[theory]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://michelleminkoff.com/?p=1051</guid>
		<description><![CDATA[http://projects.latimes.com/prop8 So, there&#8217;s that. First launch! My checklist: Figure out what part of journalism inspires me. CHECK (Data, programming) Find place where I can learn about it from others, but have freedom to try out my ideas and learn from knowledgeable and patient folks. CHECK (LAT) Use this opportunity to learn enough about programming to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://projects.latimes.com/prop8/" target="_blank">http://projects.latimes.com/prop8</a></p>
<p>So, there&#8217;s that. First launch!</p>
<p>My checklist:</p>
<ul>
<li>Figure out what part of journalism inspires me. CHECK (Data, programming)</li>
<li>Find place where I can learn about it from others, but have freedom to try out my ideas and learn from knowledgeable and patient folks. CHECK (LAT)</li>
<li>Use this opportunity to learn enough about programming to create at least one app. CHECK (See first line of post)</li>
</ul>
<p>That was a good time.</p>
<p>I&#8217;m planning a post on best practices for creating a searchable database application like this, with examples, and technical geekery, and all that, and I&#8217;d love your thoughts in the meantime.  Let me know if you have specific questions.</p>
<p>But in a moment of self-reflection, I&#8217;d just like to say this.<span id="more-1051"></span></p>
<p>I was sitting in my apartment this morning, and found that a butterfly had somehow gotten in (blame a broken screen, maybe).  It sat on my windowsill, facing the outside world.  It would feel around the window, trying to find an opening.  After circling the perimeter of the window, it laid back down, almost motionless, just searching.  An hour later, the cycle repeated.  Wanting to help the poor butterfly, after watching it struggle, I tried to capture it in a small box to take it downstairs.  It was too smart for that.  Fine.  What actually worked?  Covering all the windows and opening the balcony door.  You can&#8217;t force the butterfly out, even though you&#8217;re helping, it had to find the path out on its own.</p>
<p>Why do I bring this up?  Am I slowly going insane after spending the day with Dive Into Python (rec&#8217;d)?  Perhaps. But I have a point.</p>
<p>Let&#8217;s take the common journalist, yearing to know more about data-driven apps.  (I can&#8217;t be the only one, I just can&#8217;t!)  I search for the answers, voraciously read, alternate between laying still while observing the space and wandering around the perimeter, feeling it out, trying to dip my toe in the water.  I jump into the pool, head-first, realize it&#8217;s not working.  Can&#8217;t do it on my own.  Many people who&#8217;ve already made the journey try to help.  But they just can&#8217;t just give me the knowledge, can&#8217;t just take me to my goal, can&#8217;t just make it happen.  They must lead me there, give me the same resources they used.  Recommend the books, the sites. But in the end, I&#8217;ve got to find my own way out of the house, the prison of not knowing enough coding basics to begin.  Pushes in the right direction, guiding me away from those false starts, this is essential.</p>
<p>I&#8217;d just like to take a moment to thank the experts, who guide me away from the false starts, who don&#8217;t give up when I keep turning the wrong way.  In particular, in terms of the programming skills I&#8217;m learning, it&#8217;s Ben Welsh (who I happen to have been working most closely with), who exercises that kind of patience.  Who never tells me not to fly into that closed window, because while it was closed for him, I might discover a way to get out.  Of course, I don&#8217;t, and he&#8217;s no less interested in helping me get back on course. Thanks!</p>
<p>Still a long way to go.  So, what&#8217;s changed?  Now, I&#8217;ve gotten outside.  I made my first app.  When someone asks me what steps make up a project, how long it&#8217;ll take, I can give a legitimate answer, or know how to find one.</p>
<p>I still remember wondering if I could ever build an application.  And Derek said to me, &#8220;There&#8217;s only one way to find out.&#8221;  Derek, who I used to bug on a daily basis about this stuff.  Derek, who I haven&#8217;t asked a Python/Django question of since March.  I&#8217;m the LAT&#8217;s problem now!</p>
<p>Well, as Derek said, find out we did.  Time to push it further, I say.</p>
<p>There&#8217;s a whole world to explore now that I&#8217;ve escaped being stuck inside.  LAT folks, prepare yourself, the questions you&#8217;ve seen so far are only the beginning.</p>
<h3  class="related_post_title">Explore other posts:</h3><ul class="related_post"><li>January 4, 2010 -- <a href="http://michelleminkoff.com/2010/01/04/viz-week-1/" title="Reflections on Visualization Theory (Data viz readings, week 1)">Reflections on Visualization Theory (Data viz readings, week 1)</a></li><li>January 18, 2009 -- <a href="http://michelleminkoff.com/2009/01/18/how-much-video-is-too-much-video/" title="How much video is too much video?">How much video is too much video?</a></li><li>November 25, 2009 -- <a href="http://michelleminkoff.com/2009/11/25/the-limitations-of-sql-and-access/" title="The limitations of SQL and Access">The limitations of SQL and Access</a></li><li>February 21, 2010 -- <a href="http://michelleminkoff.com/2010/02/21/text-file-or-database/" title="Is a flat text file or a database right for an app?">Is a flat text file or a database right for an app?</a></li><li>February 28, 2011 -- <a href="http://michelleminkoff.com/2011/02/28/why-i-really-love-nicar-and-the-new-york-times/" title="Why I really love NICAR (and the New York Times)">Why I really love NICAR (and the New York Times)</a></li><li>January 25, 2009 -- <a href="http://michelleminkoff.com/2009/01/25/analysis-of-interactive-features-in-wapos-inauguration-timeline-map/" title="Analysis of Interactive Features In WaPo&#8217;s Inauguration Timeline Map">Analysis of Interactive Features In WaPo&#8217;s Inauguration Timeline Map</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://michelleminkoff.com/2010/07/11/my-first-lat-django-app-or-the-butterfly-on-my-windowsill/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Delver: Andy Boyle, St. Petersburg Times</title>
		<link>http://michelleminkoff.com/2010/07/11/data-delver-andy-boyle-st-petersburg-times/</link>
		<comments>http://michelleminkoff.com/2010/07/11/data-delver-andy-boyle-st-petersburg-times/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 04:25:25 +0000</pubDate>
		<dc:creator>Michelle Minkoff</dc:creator>
				<category><![CDATA[CAR]]></category>
		<category><![CDATA[data delvers]]></category>
		<category><![CDATA[data visualizations]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[andy boyle]]></category>
		<category><![CDATA[computer assisted reporting]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[reporter]]></category>
		<category><![CDATA[st. petersburg times]]></category>

		<guid isPermaLink="false">http://michelleminkoff.com/?p=990</guid>
		<description><![CDATA[The last Data Delver I have on tap is Andy Boyle.  If you&#8217;re in the online journalism sphere on Twitter, you know this name, or at least, @andymboyle.  But let&#8217;s say you don&#8217;t.  If I introduce him as a reporter, that&#8217;s not the full picture.  A developer?  That&#8217;s not it either.  Web-savvy journo?  Still, nope.  [...]]]></description>
			<content:encoded><![CDATA[<p>The last Data Delver I have on tap is Andy Boyle.  If you&#8217;re in the online journalism sphere on Twitter, you know this name, or at least, @andymboyle.  But let&#8217;s say you don&#8217;t.  If I introduce him as a reporter, that&#8217;s not the full picture.  A developer?  That&#8217;s not it either.  Web-savvy journo?  Still, nope.  All of the above, and then some?  Now, we&#8217;re getting somewhere.</p>
<p>I&#8217;ll just put it this way.  Andy, you&#8217;ve been an inspiration.  Watching your work while I was a student at Medill, and how much you enjoyed it, I knew some day I could do anything, if I could just set my mind to it, and find supportive mentors.</p>
<p>It&#8217;s a parallel thing.  Andy gets Matt Waite and Jeremy Bowers at the Times of the Southeast (St. Pete), I get Ben Welsh and Ken Schwencke at the Times of the Southwest (LA).  Match good mentors with journalistic enthusiasm and obsession, and you&#8217;ll get somewhere!</p>
<p>We both get to bring passion, skill and journalistic knowhow to the table.  We bug the people with the tech knowledge until we have a moment like <a href="http://twitter.com/andymboyle/status/17966047863" target="_blank">this</a>.   Maybe someday I&#8217;ll report in the field and code like Andy does.  But for now, my reporting consists of investigating the nuances of the still-large ship that is the LA Times, and looking at how it can be even better.  And at this point in time, I wouldn&#8217;t change it for the world.</p>
<p>It seems appropriate to post this interview with Andy now (Yes, I&#8217;m making excuses for delaying this for months and months&#8230;.).  I chatted with him in March, just after the launch of his first Django app &#8211; MyLawmaker.  And I just launched my first one about two weeks ago.</p>
<p>I started these Data Delver interviews knowing no one in the field other than Derek Willis.  (And if you only got to know one person, he&#8217;s as good as it gets.)  And now, I feel like I know so many more.  And for some reason, I get to be a part of their ranks each day.  It&#8217;s a privilege, an honor, and an adrenaline rush like no other.</p>
<p>I&#8217;ll let Andy take it away in his own words now.</p>
<p><span id="more-990"></span><em></em></p>
<p><em>This transcript of my interview with Boyle is a part of my continuing series I’m calling “Data Delvers,” where I pass on transcripts, summaries, quotes and audio clips from conversations with journalists using technology to find, analyze and convey data-driven stories and/or projects to the modern audience.</em></p>
<div style="margin: 15px; padding: 10px; background-color: #000000; float: right; width: 300px;"><a href="http://michelleminkoff.com/audio/boyle_1.mp3">Audio: Walking the line between reporter and developer is useful.</a><small></small></div>
<h2>Extended transcript</h2>
<p><strong>Why is having an understanding of data important?</strong><br />
When we have meetings to discuss story ideas with the group I work with we mainly focus on breaking news on the web.  When somebody says something, it’s really nice to be able to go, “Oh, I know how they keep those records so I know exactly how you can ask questions to find out how many total XXX has happened this year.&#8221;  It really helps to have a background, it gives you a chance to dig deeper and get more context.</p>
<p><strong>Is St. Pete working to get other reporters to get more up to speed on this?</strong><br />
I think there’s quite a few reporters who do have this type of skill or do have the basics.  They can use Excel; they can use Microsoft Access.  Actually, there’s a reporter who did a really awesome story on leaky underground storage tanks and where they are located.  My compadre, Darla Cameron, does a lot of GIS stuff, so she’s also a data nerd, like me. She was able to help him with that. A lot of people use databases on a pretty average basis and have some CAR training, but not as much huge stuff like the Wetlands project that the St. Pete Times did with Matt Waite and Craig Pittman a few years ago.  But things on a smaller scale are happening.</p>
<p><strong>Going back to the MyLawmaker project, what was the genesis of that?</strong><br />
The genesis is that on Monday the state legislature starts so we print this thing every year in our Perspectives section which runs every Sunday.  We print opinion pieces and stuff like that in a section called &#8216;For a better Florida&#8217;.  One of our politics editors, Amy Hollyfield,  had sent an email out to one of the higher-ups  saying that there’s this project from the New York Times called Represent and another one at Oregon Live &#8211;  Your Government, where you type in your address and it shows you your state lawmakers, congressmen, city lawmakers, etc.  She asked if it would be possible for us to set up something to help people find their state representatives and state senators from their address?  This somehow made it to me and I go, “Yeah, yeah, that can be done; it’s possible.”  At that point I had no clue in my mind of how we were going to do that, but I knew it was possible because obviously someone else could do it. So we had the shape files; Darla already had the information.  Somehow we could write a program that would geocode your address and would ask what you wanted to see, and it would print out what you wanted.</p>
<p>So that was basically last Thursday and it is now Friday and we are ready to launch.  Thursday, about 3:30 in the afternoon, it was like, “Hey guys, do you think you can do this?”  I was taught a long time ago that if you think you can, try it. This is something that I really wanted to do.  It was an opportunity to try this stuff   I’ve been working on.  I’ve been working on some Django and Python with Matt Waite and Jeremy Bowers, so it was nice to spearhead a project and have ownership on something and work with a group of awesome people like Darla and Lee.  I’m really jazzed.<br />
<strong><br />
So how did you start getting into Django…just by being around Matt and Jeremy?</strong><br />
Yeah, that’s totally it.  He’ll [Matt Waite] browbeat you into believing what he believes.  When I went to the Indianapolis NICAR conference he had a thing, a bootcamp, for three or four of the days on frameworks, so that was Django and the basics of it.  And I remember when he showed it,  I thought, “Man, that’s way easier than making hundreds of  individual web pages and then having to edit the HTML in each one. “ I remember being a kid and having an AOL members’ web page and how horrible it was to have to update every single HTML file and I thought “Wow!  This is something that automatically creates this stuff.   That is sweet.   I need to learn this.” And that was in March of last year.</p>
<p>And then after that it was just me attempting to learn stuff and breaking everything and being really afraid that I’d destroy my computer and not becoming afraid of the terminal. It was a very long process.  There were a couple of projects over the summer that I worked on.  One was FCAT, which is an aptitude test given to students in public schools in Florida. We were able to make a searchable database for that.  I wrote the models on that, and then they did the rest of the heavy lifting.  I guess that was the first project I had any sort of help with.  Then we later had a project for high school sports, called Home Team, which is totally awesome.  I was able to see the inner workings  and it was really cool to see the process of how they were developing it and how it was being set up.  I wanted to build something, so when the opportunity came along for MyLawmaker, I jumped at the chance to do it.<br />
<strong><br />
So what did you end up using for the geocoding?</strong><br />
We used Google.    There’s a limit of 2,500 times per IP in a 24 hour period which is an issue if you hope to get a lot of hits on  your website.   So what we do is we actually pass it off to JavaScript on the client side, so the server’s IP address comes from the user’s computer. Not that we expect 2,500 hits a day, but we have no clue as to how many hits it will get.   But we thought it’d be nice just in case.  We don’t want people trying to use it and it’s broken.</p>
<p><strong>Have you had requests from the community for anything like this?  It doesn’t have to be specifically MyLawmaker, but just more interactive stuff?</strong><br />
I think a lot of people really like it.  When our FCAT project launched in the summer, it got a ton of use.   It still kind of does.  A lot of those projects that are usually attached to stories initially get a lot of hits.  With a project like this once we told some of our colleagues about it, they were like  “Wow, that’s a great idea.” With the state senate website, you can only search by zip code.   Then it will tell you the districts that are in that zip code and you have to click on that and see if you are located on a little map of the district, so ours is actually a little better than part of the state legislature’s.  But I guess that’s the goal.  We want to make sure that people can find the information and find whom to call if they have an issue.   A lot of people were quite surprised…they didn’t believe who their state legislators were.  Said, “That can’t be true.”  But it was, and they wouldn’t have known otherwise.</p>
<p><strong>Why do you see this type of work as important?</strong><br />
It’s interactive.  When you pick up a newspaper, you read a story and it kind of ends there.  What’s really cool about this is it helps you find out broader information.  You can go searching a given database online and become more aware of your community. That’s part of what we do, as journalists, and as news organizations, we try to inform the public.  To do it in a way that’s automated, that doesn’t require our constant supervision or our constant writing of stories, helps because it frees up time for us to do other stuff.  It still gives people information and more context when it comes to stories.  I believe that a well-informed populace is much better than an ill-informed populace.  It’s also really cool and lots of fun to do.</p>
<p><strong>Do you enjoy living in both worlds – the reporting and the developing aspects?  What are the advantages and disadvantages?</strong><br />
Yes, I do.  I guess time is a disadvantage in everything we do.  Part of it is because of the reporting, I can come up with projects that we can do.  I think if I was only a code monkey and I was never out on the streets, I wouldn’t find out what data is available or what data we can build on our own. It also helps you keep track of the news.  Like this is being built in response to the fact that the state legislature is meeting on Monday to start a new session. If I was just a reporter, I wouldn’t be aware of different ways to think and inform the public.  And if I was just a developer, I would be a little blind to some of the opportunities that there are to inform the public, and make cool stuff.</p>
<p><strong>Any other advice?</strong><br />
Something I wish I’d been told when I was younger is failure happens, especially with this sort of stuff, so you really need to get used to it, and we all fail.  Your failure is a failure, unless you learn.  Then, your failure becomes a win.  If you’re always trying to learn stuff, as a journalist, if you’re always working to develop different skill sets, whether it’s Web development, normal computer-assisted reporting, GIS, narrative storytelling, it all helps you, it all helps the other things.  Whatever new skill you learn in journalism will add to your big palette of rocking.<br />
<strong><br />
Would you recommend all or more reporters get into the coding side of things?</strong><br />
It doesn’t hurt.  It doesn’t hurt to understand the basics of data.  If you’re a city hall reporter, it helps to know basic Excel, it helps to know Access. There’s a ton of cool stuff you can do because of it.  If you are a feature writer, and you write longer narratives, and stuff like that, you can still find stories through databases, you can still find extra people to interview through those methods.  It helps in every aspect I think, just to have a little bit.  Whereas I have made the intense plunge into being a total nerd when it comes to this stuff, if that’s what you want to do, that’s what you want to do.  I don’t think that should be a requirement, but I think you should have at least the bare bones basics of what’s going on, because knowledge is power, and knowing is half the battle.</p>
<h3  class="related_post_title">Related posts you might enjoy:</h3><ul class="related_post"><li>April 11, 2010 -- <a href="http://michelleminkoff.com/2010/04/11/data-delver-paul-monies-oklahoman/" title="Data Delver: Paul Monies, The Oklahoman">Data Delver: Paul Monies, The Oklahoman</a></li><li>April 5, 2010 -- <a href="http://michelleminkoff.com/2010/04/05/coding-skills-are-no-passover-miracle/" title="Women with coding skills are no Passover miracle">Women with coding skills are no Passover miracle</a></li><li>April 5, 2010 -- <a href="http://michelleminkoff.com/2010/04/05/data-delver-phil-meyer/" title="Data Delver: Phil Meyer">Data Delver: Phil Meyer</a></li><li>March 28, 2010 -- <a href="http://michelleminkoff.com/2010/03/28/data-delver-mark-schaver-louisville-courier/" title="Data Delver: Mark Schaver, Louisville Courier">Data Delver: Mark Schaver, Louisville Courier</a></li><li>March 8, 2010 -- <a href="http://michelleminkoff.com/2010/03/08/data-delver-tony-debarros-usa-today/" title="Data Delver: Anthony DeBarros, USA Today">Data Delver: Anthony DeBarros, USA Today</a></li><li>March 8, 2010 -- <a href="http://michelleminkoff.com/2010/03/08/data-delver-jennifer-lafleur-propublica/" title="Data Delver: Jennifer LaFleur, ProPublica">Data Delver: Jennifer LaFleur, ProPublica</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://michelleminkoff.com/2010/07/11/data-delver-andy-boyle-st-petersburg-times/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://michelleminkoff.com/audio/boyle_1.mp3" length="0" type="audio/mpeg" />
		</item>
		<item>
		<title>Columbia&#8217;s new joint MS: Good start, but no panacea</title>
		<link>http://michelleminkoff.com/2010/04/07/columbias-joint-ms-good-start-panacea/</link>
		<comments>http://michelleminkoff.com/2010/04/07/columbias-joint-ms-good-start-panacea/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 04:53:59 +0000</pubDate>
		<dc:creator>Michelle Minkoff</dc:creator>
				<category><![CDATA[CAR]]></category>
		<category><![CDATA[data visualizations]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[theory]]></category>
		<category><![CDATA[columbia]]></category>
		<category><![CDATA[computer science]]></category>
		<category><![CDATA[graduate]]></category>
		<category><![CDATA[journalism]]></category>
		<category><![CDATA[masters]]></category>

		<guid isPermaLink="false">http://michelleminkoff.com/?p=968</guid>
		<description><![CDATA[We&#8217;ve been retweeting it and raving about it all day in the data community &#8211; Columbia has made a big, big step forward in data journalism education by offering a new joint masters in journalism and computer science.  We can add modules to existing curricula all we want, but this is a giant leap.  There [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been retweeting it and raving about it all day in the data community &#8211; Columbia has made a big, big step forward in data journalism education by offering a <a href="http://www.journalism.columbia.edu/cs/ContentServer/jrn/1165270052298/JRN_News_C/1212612404258/JRNNewsDetail.htm" target="_blank">new joint masters in journalism and computer science</a>.  We can add modules to existing curricula all we want, but this is a giant leap.  There is a subset of journalists who need to learn to code.  This certainly can&#8217;t hurt, and can only help journalists, right?  What will be interesting is what the graduates actually do with the degree.</p>
<p>I didn&#8217;t retweet it for a few hours, because, for once, an opinion didn&#8217;t jump into my mind.  If you were in my classes at Medill, watching me wince in pain every time we stopped short of delving as deep as we needed to, complaining about the pervading fear of code in journalism, if you knew me, you&#8217;d think I would jump up and down, and say, &#8220;Now, why couldn&#8217;t I have that?  It would have been awesome!&#8221;  People are saying it helps people who aren&#8217;t coders become coders.  While some pointed out that Medill had this first, our program was for programmers to become journalists.  And how does that serve liberal arts majors who want to code for journalism?  Why isn&#8217;t it listed as a course option?  Wouldn&#8217;t this Columbia program make life so much easier?<span id="more-968"></span></p>
<p>Let&#8217;s put my biases out front: I&#8217;m a recent Medill grad.  I am a programmer-journalist.  I do not hold an interactive concentration from Medill.  I took no programming classes within Medill.  I did not participate in the programmer to journalist program. I didn&#8217;t get that tuition-free deal. Medill had this first, but didn&#8217;t have a curriculum for turning liberal arts majors into journo-coders.  And, you know what?  I don&#8217;t think they should.  You get something from pushing through it, pursuing your own interests, learning how to learn.</p>
<p>Sorry, I&#8217;m just not on board with a joint-degree program.  Take a few coding classes, but that can be done by cross-registering outside your department at many schools.  But understand that any coding you&#8217;re taught may be replaced by a new language years, weeks or days later.  We shouldn&#8217;t be taking too many classes in coding, but learning how to learn quickly from the Internet.  If, let&#8217;s say, you need a JQuery library to perform a certain task, know how to adapt tutorials, don&#8217;t think, &#8220;Now, this wasn&#8217;t in that degree I got, what do I do?&#8221;</p>
<p>As Poynter&#8217;s Dave Stanton <a href="http://twitter.com/gotoplanb/status/11799477369" target="_blank">pointed out</a>, there&#8217;s a lack of statistics in this curriculum.  This is absolutely essential for people who will be concentrating in data mining, or data-driven app creation.  Perhaps this is easily remedied.  But it signals to me that there are probably similar holes elsewhere in the curriculum, holes I don&#8217;t understand as well.  Hopefully, these will be patched in future iterations.  I do have some concerns about the first class to go through this program, though.  But we must change curricula, or die.  And there will be some successes, and improvements to be made, with each new attempt.  Kudos to Columbia on taking a chance!</p>
<p>I also hope there&#8217;s a way to pick a specialization within the program.  This is a tall order to complete in a year, and you may excel at data analysis, or visualization, or automating news aggregation, or something else.  But they require a distinct set of skills.  I would approach this as I would a general journalism curriculum.  Get familiar with all the different options, figure out what you love, and get really good at it.</p>
<p>And perhaps the biggest problem of all is the misconception that by putting computer science and journalism classes next to each other, even with integration, we&#8217;ve created a recipe for programmer-journalists.  You don&#8217;t need to struggle to figure out what to learn, we can do it for you.  I can&#8217;t help but feel that this encourages complacency.  If I just listen to my advisor, and follow the steps laid out for me, I can do it.  But you must never stop learning.  What do you do when the syllabus runs out?  It&#8217;s essential to learn to learn what you need to know, and then do it.  If students don&#8217;t search beyond the curriculum, we may stop moving forward.  The world is moving too fast to create a finite cs roadmap at this point.</p>
<p>There&#8217;s something to sitting down and hacking something out.  Part of the beauty of coding is that anyone can do it, follow the steps, learn the language, and you WILL get it.  This program may give students a push, but it&#8217;s by no means essential.</p>
<p>So, sure, let&#8217;s encourage journos to take cs classes, talk to cs professors.  But gaining a masters in both fields, in little more than a year?  It&#8217;s a good option, but far from the only one.  It is only the beginning.  If you go to another school, you could make your own program, take classes in both departments.  This is formalizing what some of us are already doing.  If you enter this program, remember to push your faculty resources even further, and don&#8217;t believe it&#8217;s a panacea, cure-all, complete road map to what we need done.  This is the first rung up the ladder. There are other ways to climb, and even once you get to the first rung, in the end, it&#8217;s up to you to go ever higher.</p>
<h3  class="related_post_title">Related posts you might enjoy:</h3><ul class="related_post"><li>September 16, 2010 -- <a href="http://michelleminkoff.com/2010/09/16/journ-curriculas-transition-isnt-unique/" title="Journ curricula&#8217;s need for transition isn&#8217;t unique">Journ curricula&#8217;s need for transition isn&#8217;t unique</a></li><li>November 24, 2009 -- <a href="http://michelleminkoff.com/2009/11/24/a-letter-to-journo-programmers-teach-me-inspire-me/" title="A letter to journo-programmers: Teach me, inspire me">A letter to journo-programmers: Teach me, inspire me</a></li><li>May 3, 2010 -- <a href="http://michelleminkoff.com/2010/05/03/real-world-coding-lessons/" title="Note to self: Real world journo-coding lessons">Note to self: Real world journo-coding lessons</a></li><li>March 29, 2010 -- <a href="http://michelleminkoff.com/2010/03/29/using-javascript-for-interactive-google-charts/" title="Using Javascript for interactive Google charts">Using Javascript for interactive Google charts</a></li><li>March 28, 2010 -- <a href="http://michelleminkoff.com/2010/03/28/data-delver-mark-schaver-louisville-courier/" title="Data Delver: Mark Schaver, Louisville Courier">Data Delver: Mark Schaver, Louisville Courier</a></li><li>March 25, 2010 -- <a href="http://michelleminkoff.com/2010/03/25/self-teaching-data-and-programming-skills/" title="Self-teaching data and programming skills">Self-teaching data and programming skills</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://michelleminkoff.com/2010/04/07/columbias-joint-ms-good-start-panacea/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

