<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description>I’m Adam Marcus, and until recently I was the Director of Data at Locu.  Before that, I graduated from MIT’s Computer Science and Artificial Intelligence Lab, where my thesis was at the intersection of data and crowdsourcing.</description><title>marcua's blog</title><generator>Tumblr (3.0; @marcua)</generator><link>https://blog.marcua.net/</link><item><title>Fun with Voter Data</title><description>&lt;p&gt;Since elections are on everyone&amp;rsquo;s mind, I played around with some voter data. Your name/address/phone/party affiliation/participation is available in public voter data. I created an example of how it can be used in a &lt;a href="https://github.com/marcua/funwithdata/blob/master/electiondata/voter_records.ipynb"&gt;Jupyter/IPython notebook&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This was my first use of Jupyter notebooks to write a data analysis piece. It was a lot of fun, and I hope all of you do it too!&lt;/p&gt;

&lt;p&gt;Some fun findings: 1) two 115-year-old active voters, and 2) an example of how a campaign can create a call/mailing list of active voters to ask them for additional help.&lt;/p&gt;

&lt;p&gt;Thanks to &lt;a href="http://meredithblumenstock.com/"&gt;Meredith Blumenstock&lt;/a&gt; and &lt;a href="https://twitter.com/derekwillis"&gt;Derek Willis&lt;/a&gt; for reading an early draft of this!&lt;/p&gt;</description><link>https://blog.marcua.net/post/140156046292</link><guid>https://blog.marcua.net/post/140156046292</guid><pubDate>Sun, 28 Feb 2016 11:57:47 -0500</pubDate></item><item><title>Crowdsourced Data Management: Industry and Academic Perspectives</title><description>&lt;p&gt;A few years ago, &lt;a href="http://data-people.cs.illinois.edu/index.html"&gt;Aditya&lt;/a&gt; and I were catching up at Voltage cafe in Kendall Square when he asked if I&amp;rsquo;d be interested in writing a book on crowd-powered data processing systems. At the time, he was a postdoc at MIT and I was in startupland at Locu, and in the time that he became a professor at UIUC and I &lt;a href="http://unlimitedlabs.com/"&gt;co-founded a company&lt;/a&gt;, we went ahead and finished the book.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://marcua.net/papers/crowd-book.pdf"&gt;The book, which is freely available as a PDF&lt;/a&gt;, has two parts.  In the first half, we review the state of academic research in crowdsourcing, with a special eye for data processing. The first half was a natural follow-on to our research in grad school.  The second half of the book features summaries of 13 interviews with industry users of crowd work and 4 operators of crowdsourcing marketplaces.  This half is filled with summary statistics and rich quotes from folks at companies like Google, Facebook, and Microsoft on how they manage large crowd workforces, what their use cases are, which aspects of the research literature they benefit from, and where they could use a little more help from researchers.&lt;/p&gt;

&lt;p&gt;I really enjoyed two aspects of working on this book.  First, it was wonderful to work with Aditya, who I never got to collaborate with in grad school.  Second, the experience opened Aditya and me up to just how much you can learn from qualitative work like the interviews and surveys in the second part of the book.  Both of us felt that this second lesson would have a lasting impact on how we approach learning a new topic, and how to keep industry and academia in sync on the most important problems in a field.&lt;/p&gt;

&lt;p&gt;My only regret with the book as that, due to the formatting guidelines of our publisher, the Acknowledgements section is at the end of the book.  One of my not-so-secret delights is reading the acknowledgements that people put in their Ph.D. theses, and I like it when they can be front and center. Nonetheless, it&amp;rsquo;s there, and I&amp;rsquo;m grateful!&lt;/p&gt;

&lt;p&gt;To make the book more accessible, we&amp;rsquo;ll be putting together summaries of our favorite sections as blog posts. You can read the first one &lt;a href="https://medium.com/@adityagp/the-fourth-industrial-revolution-episode-1-7a16c56e0042"&gt;on Aditya&amp;rsquo;s blog&lt;/a&gt;.&lt;/p&gt;</description><link>https://blog.marcua.net/post/138230388577</link><guid>https://blog.marcua.net/post/138230388577</guid><pubDate>Thu, 28 Jan 2016 14:41:02 -0500</pubDate></item><item><title>Argonaut: Processing Complex Work with the Crowd</title><description>&lt;p&gt;One of my favorite times of year at a company is when interns join for the summer.  Internships are great avenues for those fun projects you’ve had in the back of your mind but haven’t had time to test out.  Two summers ago at Locu, I had the great fortune to work with &lt;a href="http://www.cs.berkeley.edu/~dhaas/"&gt;Daniel Haas&lt;/a&gt;, a grad student at &lt;a href="https://amplab.cs.berkeley.edu/"&gt;Berkeley’s AMP Lab&lt;/a&gt;.  His three months of work laid the foundation for &lt;a href="http://marcua.net/papers/vldb2015-argonaut.pdf"&gt;a paper on a framework called Argonaut&lt;/a&gt; that he and &lt;a href="https://twitter.com/lydiagu"&gt;Lydia Gu&lt;/a&gt;, my Locu/GoDaddy colleague who joined the project, are presenting today at VLDB. &lt;/p&gt;&lt;p&gt;While we primarily used Argonaut for &lt;a href="http://engineering.godaddy.com/the-locu-workflow-a-crawler-a-learner-and-a-crowd/"&gt;structured data extraction&lt;/a&gt;, Argonaut’s concepts can be applied to other areas of complex crowd work.  It’s amazing to think our learnings come from over half a million hours of worker contributions.  Without them, none of these learnings would be possible. &lt;/p&gt;&lt;p&gt;
As a sneak peak, I’ll highlight a few fun learnings we report on in &lt;a href="http://marcua.net/papers/vldb2015-argonaut.pdf"&gt;more detail in the paper&lt;/a&gt;.  I’ll also editorialize a bit on what I think the findings mean for crowd work, especially as people do more interesting and complex things with it.  Here’s the scoop: &lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;b&gt;Complex work&lt;/b&gt;.  Traditionally in crowd work, we’re told to design microtasks: simple yes/no or multiple choice questions that are well defined.  You can imagine this is pretty dehumanizing and not inspiring to workers.  With the Argonaut model, we send large, meaty tasks to workers.  Tasks might take upward of an hour to complete, and are generally easier to design since there’s no microtask decomposition to think about.  They are closer to what you’d imagine knowledge work being like: we trust humans to do what they’re good at on challenging tasks. &lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;b&gt;Review, don’t repeat&lt;/b&gt;.  To avoid workers making mistakes in traditional microtask work, we send multiple workers each task, and use voting-based schemes (like majority vote or expectation maximization) to identify the correct answer.  With Argonaut, we do something different: only one worker completes each complex task.  Entry-level workers are sometimes reviewed by trusted ones, which allows us to catch mistakes, and also allows us to send tasks back to workers so that they can correct them and learn by example.  In the paper we show that review works: a large majority of tasks that are reviewed end up of higher quality, and workers get to see how to improve their own work, unlike the opaque voting-based schemes of the microtask world. &lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;b&gt;Spotcheck with help from models&lt;/b&gt;.  The technical heart of the Argonaut paper is a TaskGrader model.  We built a regression on a few hundred features of each task, like the worker’s previous work history, the length of the task, the time of day in the worker’s timezone, etc.  The regression predicted, based on these features, how much a review might change/improve a worker’s work.  Given a fixed budget for review or a fixed number of reviewers, we can now identify which tasks the reviewers should look at for maximal task quality improvement.  In the paper, we find that for a practical review budget, you can catch around 50% more errors with the same amount of review, just by pointing reviewers at the tasks that will benefit most from their attention. &lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;b&gt;Optimizing for longevity and upward mobility changes everything&lt;/b&gt;.  One topic/hypothesis that doesn’t receive enough attention in the paper is that having long-term relationships with crowd workers changes everything.  Half of the crowd workers contributed to our system for more than 2.5 years.  The ones that performed the best ended up being promoted to reviewer status, and were selected to do more interesting work when it came up.  This had pretty drastic effects on our worker and task models. Hidden in Figure 7 of the paper is a neat finding: almost the entirety of the predictive power of the TaskGrader comes from task-specific features.  Worker-specific features on their own don’t appear to be too predictive: by the time you establish long-term relationships with workers, the discerning properties of a task’s quality are not the trusted people you’re working with, but the difficulty of the task they are completing.  This is in stark contrast to traditional microtask crowd work, where the most celebrated work quality algorithms identify the trusted workers and weigh their responses more heavily.&lt;/p&gt;&lt;p&gt;&lt;br/&gt;While this paper brings us to the tip of the iceberg of complex work and hierarchical machine-mediated review, there are a ton of questions we have yet to answer.  Most important to me are questions around just how complex of work we can do with these models.  Can we support high-quality creative and analytical tasks beyond structured data extraction?  How generalizable is the TaskGrader to other tasks?  Finally, what does it mean for crowd work if longevity and upward mobility matter as much as they do in traditional employment scenarios?&lt;br/&gt;&lt;/p&gt;</description><link>https://blog.marcua.net/post/128120315677</link><guid>https://blog.marcua.net/post/128120315677</guid><pubDate>Tue, 01 Sep 2015 13:37:59 -0400</pubDate></item><item><title>A data differ to help journalists</title><description>&lt;p&gt;I recently read an &lt;a href="http://mobile.nytimes.com/2015/06/02/business/medicare-payments-billing-hospitals-doctors.html?referrer="&gt;article&lt;/a&gt; that reminded me of a type of reporting I&amp;rsquo;ve seen a few times now.  In this article, the reporters compare a medical expenses dataset from this year to the one from last year. They report how some aggregates (e.g., average price) grouped by various fields (e.g., treatment type) have changed over time.&lt;/p&gt;

&lt;p&gt;It would be nice to have a utility that, given two datasets (e.g., two csv files) that are schema-aligned, returns a report of how they differ from one-another in various ways.  The utility could take hints of interesting grouping or aggregate columns, or just randomly explore the pairwise combinations of (grouping, aggregate) and sort them by various measures like largest deviation from their own group/across groups.&lt;/p&gt;

&lt;p&gt;There are a few challenges with the &amp;ldquo;just show me interesting combinations&amp;rdquo; version of this:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;The approach suffers from &lt;a href="https://en.wikipedia.org/wiki/Multiple_comparisons_problem"&gt;multiple hypothesis testing&lt;/a&gt; and you&amp;rsquo;re likely to end up finding differences where they might not actually exist.&lt;/li&gt;
&lt;li&gt;The system is going to present a bunch of different combinations to the user, resulting in overload.  We&amp;rsquo;d have to think up some interface to present the various findings for them to be useful.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;em&gt;update with related work:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Manasi Vartak, Aditya Parameswaran and friends are working on &lt;a href="http://web.engr.illinois.edu/~adityagp/seedb-tr.pdf"&gt;SeeDB&lt;/a&gt;.  SeeDB optimizes for findings that would visualize well, so its goal might  be slightly different.  It also has a notion of how a query (subset of the dataset) differs from the rest of the dataset, which we could  use for comparing two schema-aligned datasets.&lt;/li&gt;
&lt;li&gt;Michael Bernstein suggested &lt;a href="http://web.mit.edu/bentley/www/papers/mashupsPH.pdf"&gt;a look at this paper&lt;/a&gt;, which says &lt;em&gt;We found that long-term correlation data provided
users with new insights about systematic wellness trends that they
could not make using only the time series graphs provided by the
sensor manufacturers.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>https://blog.marcua.net/post/120576686432</link><guid>https://blog.marcua.net/post/120576686432</guid><pubDate>Tue, 02 Jun 2015 22:14:47 -0400</pubDate></item><item><title>The N=1 Guide to Startups after Grad School</title><description>&lt;p&gt;About 2.5 years ago, I finished a Ph.D. with &lt;a href="http://db.lcs.mit.edu/madden/"&gt;Sam Madden&lt;/a&gt;, &lt;a href="http://people.csail.mit.edu/karger/"&gt;David Karger&lt;/a&gt;, and &lt;a href="http://people.csail.mit.edu/rcm/"&gt;Rob Miller&lt;/a&gt;, with &lt;a href="http://marcua.net/papers/phd-thesis.pdf"&gt;my thesis&lt;/a&gt; at the intersection of Databases and Crowdsourcing.  April marked my third year since joining Locu, which was acquired by GoDaddy about a year and a half ago. Having recently moved on from the company, I feel like this is a decent point for reflection.&lt;/p&gt;

&lt;p&gt;Doing computer science research as a grad student can be a pretty amazing experience: you have several years to make cool things and scratch a bunch of mental itches.  You get to think long and hard about problems, create new ones, and spend healthy amounts of time thinking about solutions.&lt;/p&gt;

&lt;p&gt;Really early stage startups are also a place to make cool things, but tend to offer a frenetic whiplash-inducing experience as you try to find products that meaningfully improve the lives of some set of customers.  Until you find something that fits, your job at a startup is to iterate quickly and favor fast failures over elegant contributions.&lt;/p&gt;

&lt;p&gt;One commonality of grad school research and an early stage startup is the opportunity to work on and build cool and interesting things.  Since they differ in their approach substantially, a natural question arises: &lt;strong&gt;Are startups a good place to go after you finish grad school?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hopefully my experience arc of finishing a Ph.D., joining a startup, experiencing an acquisition, participating in an IPO, and deciding to move on can serve as some sort of lesson to others.  It’s an &lt;a href="http://marcua.net/writing/gradschool-guide/"&gt;N=1 guide&lt;/a&gt; and your experiences will be different, so &lt;em&gt;caveat emptor&lt;/em&gt; and other warnings in dead languages.  I’ve packaged the guide into an incomplete series of lessons targeted at grad students and other folks in the research world who might also be interested in exploring work at a startup.&lt;/p&gt;

&lt;h2&gt;Expect some funny reactions&lt;/h2&gt;

&lt;p&gt;I get the sense that by the time I left grad school, startups were a more common post-graduation choice than when I started school.  My advisors, family, and friends were really supportive of my decision, but I sometimes got the sense that other people were surprised or taken aback by my decision.  This was particularly poignant at conferences I attended a few months before and after defending my thesis.  Although most folks took the news as they’d take any other exciting career choice, I also observed a decent amount of fidgeting and uncertainty in some people’s reactions.&lt;/p&gt;

&lt;p&gt;It makes sense: the objectives you optimize for as a successful grad student are best suited for establishing a career in academia or industry research.  As a result, a natural gut reaction to news of someone’s entering startups is that they are throwing away the work they did in grad school.  In my research area, it’s more widely accepted that a natural conclusion of the systems one builds might be their commercialization, but this is less accepted in other research areas.  At computer science departments that have had professors or alumni with successful startups, it’s easier to accept a post-grad school startup as a logical next step.  What I’ve unscientifically heard from folks at departments with less examples of professors or alumni diving into startups is that there’s a stigma attached to it.&lt;/p&gt;

&lt;p&gt;To be clear, entering a startup after grad school will likely reduce your chances of re-entering academia down the line, as you’re spending less time than your peers focusing on the sorts of things that academia values.  This notion of narrowing down ones’ career choices will naturally result in discomfort or concern.  Luckily, we’re increasingly seeing examples of people living at the intersection of both worlds, and I hope the stigma/false dichotomy fades with time.&lt;/p&gt;

&lt;h2&gt;Everyone’s story is different&lt;/h2&gt;

&lt;p&gt;As I neared the end of grad school, my advisors recommended that I wrap up my thesis and spend the following year conducting an academic job search.  That sounded nice: I loved my time in academia, and still love teaching and mentoring people, so I planned on trying that out.&lt;/p&gt;

&lt;p&gt;Then the opportunity at Locu opened up.  Locu’s founders, who I met during our overlap in grad school, approached me to head up the company’s data and crowdsourcing efforts, which was broadly my area of research.  In grad school, I did a lot of systems building around human processes, and I felt like I could do really interesting research in an environment where we could harness more than half a million hours of crowd worker contributions to clean and structure data.&lt;/p&gt;

&lt;p&gt;Just like an applied particle physicist would probably benefit a lot from working at CERN, it makes sense that an applied social computing + data systems builder would benefit a lot from working at a place like Locu.  If I were, for example, a theoretical computer scientist, that decision would be pretty different.&lt;/p&gt;

&lt;p&gt;Managing a team that built systems in my research area made a lot of sense in my situation, but you should hardly listen to people who blindly peddle advice that startups are good for everyone coming out of grad school.&lt;/p&gt;

&lt;h2&gt;You can try before you buy&lt;/h2&gt;

&lt;p&gt;I finished up at MIT about 2.5 years ago, but started at Locu part time before that, about 3 years ago.  The day after I submitted the last paper (chapter) of my thesis to a conference, I started spending around two days a week at Locu while compiling and editing the document that became my thesis.&lt;/p&gt;

&lt;p&gt;This arrangement provided the benefit of trying out a startup before I bought into it fully.  I got to learn two important things through it.  Most importantly, I learned whether I worked well with the team, and whether the founders and I could work well together.  I also got to see whether I enjoyed the type of work I’d be doing.  As I describe later, things were initially too hectic to do research, so I had to take a bit of a leap of faith on the research opportunities that would pop up.  Given the team’s early excitement at my doing other activities like blogging about what we did, I felt like they would be receptive to answering deeper questions as well.&lt;/p&gt;

&lt;p&gt;The arrangement had the downside of being pretty stressful.  Finishing up the thesis and putting together a defense was more time consuming than I planned.  Startups are hectic places, and the combination of the two made for half a year of stressful times.  I enjoyed both sets of activities, but my mind was never at rest, and I had a little scare when, after my defense, my thesis committee asked for a bit more work than I expected.  I had to scramble to put in final edits while already working full time at Locu.&lt;/p&gt;

&lt;p&gt;It worked out, and I’m grateful I got to try Locu out before I bought in completely.  That said, there are likely saner ways to do this: consider interning at a startup for a summer rather than trying to multitask two complex sets of responsibilities.&lt;/p&gt;

&lt;h2&gt;You can do research at startups&lt;/h2&gt;

&lt;p&gt;Most people will advise you that it’s hard or impossible to do meaningful research at a startup.  I agree that it’s hard, but it’s definitely not impossible.  In fact, the kind of research I was able to do at Locu would have been challenging to work through in academia.  Amazing crowdsourcing research comes out of academia all the time, but it’s rare that academics have established multi-year relationships with hundreds of paid crowd workers.  This long-term, high-resource relationship had an impact on what I view as meaningful research in the area of practical systems to support crowd work.&lt;/p&gt;

&lt;p&gt;That said, my job title and job descriptions at Locu or GoDaddy didn’t contain the word “Researcher.”  My bosses were very supportive of introspection, though, and were happy if I spent some time on researchy questions.  My day-to-day job, however, involved leading teams that made an impact on our customers and products, and when we were a young startup in particular, most of the sleep I lost was on things that weren’t research-related.  For the first year and a half or so at Locu, it was hard to do what one might consider academic research.&lt;/p&gt;

&lt;p&gt;As the company matured and our business processes became more sane, and in particular after we were acquired and were given the space to think more broadly, it became easier to do what looks more traditionally like research.  We’ve got two full papers in submission on the work we’ve done, and it feels nice to be contributing back to the community I came from.&lt;/p&gt;

&lt;p&gt;At peak research throughput, my weekly work schedule was still almost entirely not research-related.  In general, I spent early mornings and weekends working on things like writing and making figures.  In the weeks leading up to paper deadlines, I would spend about half of my working day implementing analyses.  That said, as someone who wasn’t explicitly a researcher, I typically kept these activities outside of 9AM - 5 PM.&lt;/p&gt;

&lt;p&gt;In short, if you’re building something interesting at a startup, it’s possible that with time you can ask and answer questions that are interesting to your research community.  There are two hacks I’ve found for doing this effectively:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Just like academic advisors hire grad students to augment their research efforts, you can do the same!  Hire a graduate student as a summer intern: they get access to some amazing datasets, and you benefit from having an immensely talented person to collaborate with on hard problems for a summer.  I was so lucky to work with &lt;a href="http://www.cs.berkeley.edu/~dhaas/"&gt;Daniel Haas&lt;/a&gt; from Berkeley when he joined us for a summer as an intern.  One of those in-submission papers I mentioned is thanks to the work he did with us one summer on automatically identifying crowd worker output that could stand to be reviewed by more experienced workers.  In addition to saving us money and improving work quality, it turned out to be one of my favorite papers to write!&lt;/li&gt;
&lt;li&gt;Collaborate with folks that are still in academia.  These are people who have the drive and external incentives to deliver meaningful research contributions, and at least in my field are quite interested in working with people embedded in industry.  &lt;a href="http://web.engr.illinois.edu/~adityagp/"&gt;Aditya Parameswaran&lt;/a&gt; and I just submitted a first draft of a book on Crowdsourced Data Management to our editor, and I can’t imagine either of us would have been able to do it without the other.  Plus, it’s a great excuse to hang out with some wonderfully cool folks like Aditya.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;The community might be interested in your work even if you don’t publish&lt;/h2&gt;

&lt;p&gt;Even if you don’t publish papers on your work, the research community might still be quite interested in you and your research.  Luckily, there are several ways to stay involved.&lt;/p&gt;

&lt;p&gt;One way to stay involved is to participate in program committees, where you review paper submissions and discuss which papers should be presented at conferences.  Greedily speaking, it’s a fun way to keep in touch with your research friends, but it’s also a nice way to stay in touch with what’s happening in the research world.  Reviewing papers also serves as a mentorship opportunity: find some coworkers that are thinking about research/grad school and mentor them in how to review papers.  They get to kick the tires on a new experience, and you get help reviewing your papers!&lt;/p&gt;

&lt;p&gt;Another way to stay involved is to participate in industry panels or submit industry track papers to conferences.  Most academic conferences want to learn what’s relevant to practitioners, and as someone that’s been in both worlds, you’re a perfect person to help bridge that gap!  One slightly frustrating problem we’ve run into is that our papers have a harder time getting accepted to purely academic research tracks at conferences.  But the reviewers always encourage us to submit to industry tracks, which seem a lot more welcoming to our line of work.&lt;/p&gt;

&lt;p&gt;There’s also a whole world of non-academic conferences that I didn’t really participate in before graduating.  You picked up all of those presentation skills in grad school, and these are nice opportunities to use them!  O’Reilly runs a set of conferences like &lt;a href="http://strataconf.com/"&gt;Strata&lt;/a&gt;.  There are also a bunch of smaller but more intimate communities like &lt;a href="http://craft-conf.com/2015"&gt;Craft Conference&lt;/a&gt;, or &lt;a href="http://bangbangcon.com/"&gt;!!con&lt;/a&gt; that might be nice venues for your work.  Strata was fun, and while I haven’t been brave enough to submit proposals to the tighter-knit conferences, I hope to join those communities one day and you should too!&lt;/p&gt;

&lt;p&gt;One word of warning: These conferences tend to be expensive to attend. By giving a talk, you generally don’t have to pay a registration fee, and the conferences will often fund travel/lodging, so make sure to ask!&lt;/p&gt;

&lt;h2&gt;A Ph.D. isn’t a perfect degree for startups&lt;/h2&gt;

&lt;p&gt;Your objectives and reward systems are different in academia and startups, and as a result, you have to hone a different set of skills.&lt;/p&gt;

&lt;p&gt;In academia, you optimize for clean, elegant, novel solutions to broad problems that you evaluate in a deep way.   In a Ph.D., you spend your time honing your question asking, answering, and presentation skills, and are critiqued on your clarity, generalizability, depth, and novelty.  If you can present an interesting question, answer, and evaluation mostly through papers and slides, people are willing to look past code that’s poorly documented, untested, runs on only a single machine, and would likely need to be reimplemented if it was commercialized.  (None of these comments are meant to come off as disparaging: researchers are simply optimizing for different objectives.)&lt;/p&gt;

&lt;p&gt;In startups, you’re building an ecosystem around some core technological or societal insight.  You’re not rewarded for novelty as much as you are for some combination of utility and revenue.  Early on, this means rapidly iterating with customers and dropping solutions that don’t work for ones that do.  People care less for why something works than for &lt;em&gt;if&lt;/em&gt; it works.  As you come upon a solution, you focus less on presenting it to your community and more on stabilizing it, automating it, scaling it, and reporting on it.&lt;/p&gt;

&lt;p&gt;The human aspects are quite different as well.  Whereas academia rewards the degree to which you establish your unique identity and build relationships across institutions, startups optimize for growing a product and a team.  Both academia and startups could stand to improve how they think about team health, professional growth, and people’s sense of self-worth, but that’s for another day.&lt;/p&gt;

&lt;p&gt;In academia, your initial time horizon for hitting something interesting is a bit longer than in startups, and as a result, you can afford to take the long road to your next experiment.  If you discover a tangentially interesting thing along the way, the reward might be your next research project.  In startup land, after an initial set of iterations and discovery, it’s your job to set up a process that will keep your company useful, growing, and relevant for years or decades, and only a small part of that involves coming up with something brand new or arguing for its novelty.&lt;/p&gt;

&lt;p&gt;Several times at Locu, I found myself short circuiting a tangent that, toward the end of grad school I would have identified as the start of a new project.  At the startup, we had to avoid these tangents because they would have significantly distracted from our core focus at the time.  I didn’t always ignore the tangents though, and some resulted in internships that released &lt;a href="http://chronology.github.io/"&gt;open source&lt;/a&gt; or &lt;a href="http://www.cs.berkeley.edu/~dhaas/papers/HCOMP2013ReducingTaskError.pdf"&gt;papers&lt;/a&gt; into the world.&lt;/p&gt;

&lt;p&gt;If your academic interests and the focus of a startup align, that might help motivate you to deliver good things in startup land.  But don’t confuse your interests for your skills.  You’ll have to learn a new set of objectives and approaches if you transition from grad school to a startup.&lt;/p&gt;

&lt;h2&gt;A Ph.D. is a useful degree for startups&lt;/h2&gt;

&lt;p&gt;Perhaps if I had gotten six years of experience in industry rather than going to grad school, I’d be in the same position professionally that I am in now.  For what it’s worth, I don’t think that I would be in the same position.  At both Locu and GoDaddy, I used the skills I picked up in grad school to solve problems and collaborate with and mentor other people.  I had to learn a ton beyond what I learned in grad school, but I’m grateful for the useful skills that the Ph.D. offered me.&lt;/p&gt;

&lt;p&gt;To start, here’s a list of things you do in grad school, biased toward systems builders: find a good way to state problems, identify solutions to those problems, work on certain problems for months or years, architect and build systems, identify reasonable algorithms, measure things that are hard to measure, mentor some undergrads, collaborate with humans, and communicate clearly in written, spoken, and visual forms.  Every single one of these skills is useful basically anywhere you will go, including startups.&lt;/p&gt;

&lt;p&gt;At Locu, I mentored and managed some amazing fresh-out-of-undergrad computer scientists.  It’s not an exaggeration to say that every single one of them was faster than me at solving well-stated problems.  That said, they needed help thinking through problems and solutions, keeping the higher level objective in their heads, and getting comfortable with uncertainty.  If there’s one thing grad school prepares you for well, it’s smacking your head and keyboard against an uncertain problem for several months on end until something meaningful falls out, all the while making sure you’re contributing to some cohesive story.  A combination of teaching, mentoring, problem-solving, and presentation experiences I picked up in grad school helped me team up with these amazingly talented builders so that we could do something nice.&lt;/p&gt;

&lt;p&gt;The other area grad school really helps with is in external communication.  At Locu, our founders were certainly the most active communicators.  After them, it seems like the more academic members of the team tended to put ourselves out there the most, both in terms of offering to make presentations and in finding paper- or blog post-writing opportunities.  These are skills you get comfortable with in academic life, and translate well to startups and beyond.&lt;/p&gt;

&lt;h2&gt;Fin.&lt;/h2&gt;

&lt;p&gt;Don’t listen to any one person’s advice on the ideal life after grad school.  Some of my friends from grad school love their lives as professors, and others quite enjoy their lives at larger corporations or industry labs.  For me, startups provided a nice way to keep pursuing my grad school interests while working in a different context and at a different scale, and I’m grateful for the experience.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Many thanks to Aditya Parameswaran, Arvind Thiagarajan, Jean Yang, Lydia Gu, Meredith Blumenstock, Michele Catasta, Neha Narula, Nitesh Banta, and Philip Guo for reading a rough draft of this.&lt;/em&gt;&lt;/p&gt;</description><link>https://blog.marcua.net/post/118748094982</link><guid>https://blog.marcua.net/post/118748094982</guid><pubDate>Mon, 11 May 2015 22:40:17 -0400</pubDate></item><item><title>Reproducibility in the age of Mechanical Turk: We’re not there yet</title><description>&lt;p&gt;There&amp;rsquo;s been increasing interest in the computer science research community in exploring the reproducibility of our research findings.  &lt;a href="http://reproducibility.cs.arizona.edu/"&gt;One such project&lt;/a&gt; recently received quite a bit of attention for exploring the reproducibility of 613 papers in ACM conferences.  The effort hit close to home: hundreds of authors were named and shamed, including those of us behind the VLDB 2012 paper &lt;a href="http://marcua.net/papers/qurk-vldb2012.pdf"&gt;Human-powered Sorts and Joins&lt;/a&gt;, because we did not provide instructions to reproduce the experiments in our paper.  I&amp;rsquo;m grateful to Collberg et al. for their work, as it started quite a bit of discussion, and in our particular scenario, resulted in us posting &lt;a href="https://github.com/marcua/qurk_experiments"&gt;the code and instructions for our VLDB 2012 and 2013 papers on github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In cleaning up the code and writing up the instructions, I had some time to think through what reproducibility means for crowd computing.  Can we, as Collberg et al. suggest, hold crowd research to the following standard:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Can a CS student build the software within 30 minutes...without bothering the authors?
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;My current thinking is a strong no: &lt;b&gt;not only can crowd researchers not hold their work to this standard of reproducibility, but it would be irresponsible for our community to reach that goal&lt;/b&gt;.  In fact, even if we opt for a different &lt;a href="http://cs.brown.edu/~sk/Memos/Examining-Reproducibility/"&gt;interpretation of reproducibility&lt;/a&gt; that requires an independent reconstruction of the research, making crowdsourcing research reproducible requires care.&lt;/p&gt;

&lt;p&gt;Reproducibility is a laudable goal for all sciences.  For computer science systems research, it makes a lot of sense.  Systems builders are in the business of designing abstractions, automating processes, and proving properties of the systems they build.  In general, these skills should lend themselves nicely to building standalone reproductions-in-a-box that make it easy to rerun the work of other researchers.&lt;/p&gt;

&lt;p&gt;So why does throwing a crowd into the mix make reproducibility harder?  It&amp;rsquo;s the humans.  Crowd research draws on human-oriented social sciences like psychology and economics as much as it does on computer science, and as a result we have to draw on approaches and expectations that those communities set for themselves.  The good thing is that in figuring out an appropriate standard for reproducibility, we can borrow lessons from these more established communities, so the solutions do not need to be novel.&lt;/p&gt;

&lt;h2&gt;How does crowd research challenge the laudable goal of reproducibility?&lt;/h2&gt;

&lt;p&gt;From here, I&amp;rsquo;ll spell out what makes crowd research reproducibility hard.  It won&amp;rsquo;t be a complete list, and I won&amp;rsquo;t pose many solutions.  As a community, I hope we can have a larger discussion around these points to define our own standards for reproducibility.&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;Humans don&amp;rsquo;t fit nicely into virtual machines&lt;/b&gt;.  You pay crowd workers to do work for you when you want to add a human touch: there&amp;rsquo;s some creativity or decisionmaking that you couldn&amp;rsquo;t automate, but a human could do quite nicely on your behalf.  Whereas you might package a system/experiment with a complex environment into a virtual machine for reproducibility&amp;rsquo;s sake, you can&amp;rsquo;t quite do the same with human creativity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Cost&lt;/b&gt;. Crowdsourcing is not unique in costing money to reproduce. Some research requires specialized hardware that is notoriously costly to acquire, install, and administer. Even when the hardware isn&amp;rsquo;t proprietary, costs can be prohibitive: some labs have horror stories of researchers that accidentally left too many Amazon EC2 machines running for several days, incurring bills in the tens of thousands of dollars.  Still, compared to responsibly spinning up a few tens of machines on EC2 for a few hours, crowdsourced workflows can bankrupt you faster.&lt;/p&gt;

&lt;p&gt;Each of our VLDB papers cost around $1000 to run: each paper saw about 1000 Turker IDs complete around 65,000 HIT assignments at 1.5 cents apiece.  This expense included errors we made along the way, but our errors were nowhere near what they could have been.  For example, accidentally creating too many pairwise comparison tasks could have easily increased our costs by an order of magnitude in just a few hours.  Reproducing crowdsourced systems research requires an upfront cost in the platform you’re using, but it also requires a nontrivial budget.&lt;/p&gt;

&lt;p&gt;This expense is not insurmountable in the way that replicating the recruiting strategy of a psychology experiment or the wetlab setup of a biology experiment might be, but it’s should at least make you wary of getting up and running in a half hour.  Whereas providing researchers with a single script to reproduce all of your experiments would be great for most systems, providing a single executable that spends a thousand dollars in a few hours might be irresponsible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Investing in the IRB process&lt;/b&gt;.  One of the warnings we put in our &lt;a href="https://github.com/marcua/qurk_experiments"&gt;reproducibility instructions&lt;/a&gt; was that you’d be risking future government agency funding if you ran our experiments without seeking Institute Review Board approval to work with human subjects.  Getting human subjects training and experiment approval takes on the order of a month for good reason: asking humans to sort some images seems harmless, but researchers have a &lt;a href="https://en.wikipedia.org/wiki/Unethical_human_experimentation_in_the_United_States"&gt;history of poor judgement&lt;/a&gt; when it comes to running experiments on other people.  Working with your IRB is a great idea, but it’s another cost of reproducibility.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Data sharing limitations&lt;/b&gt;.  We could save researchers interested in reproducing and improving on our work a lot of money if we released our worker traces, allowing other scientists to inspect the responses workers gave us when we sent tasks their way.  Other researchers could vet our analyses without having to incur the cost of crowdsourcing for themselves.&lt;/p&gt;

&lt;p&gt;There are many benefits to such data sharing, but in releasing worker traces, you risk compromising worker anonymity.  Turker IDs, while opaque, &lt;a href="http://crowdresearch.org/blog/?p=5177"&gt;are not anonymous&lt;/a&gt;.  As the &lt;a href="https://en.wikipedia.org/wiki/AOL_search_data_scandal"&gt;AOL search log fiasco shows&lt;/a&gt;, even if we obscured identifiers further, it’s still possible to identify seemingly anonymous users from usage logs.  IRBs are pretty serious about protecting personally identifiable information, and our IRB application does not cover sharing our data for these reasons. This limitation, like the others, is not unsolvable, but it will require the community to come together to figure out best practices for keeping worker identities safe.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Tiny details matter&lt;/b&gt;. Crowdsourced workflows have people at their core.  Providing workers with slightly different instructions can result in drastically different results.  When a worker is confused, they might reach out to you and ask for clarification.  How do you control for variance in experimenter responses or worker confusion?  What if, instead of requiring informed consent on only the first page a worker sees, as our IRB requested, your IRB asks you to display the agreement on every page?  These little differences matter with humans in the loop.  Separating the effects of these differences in experimental execution is important to understanding whether an experiment reproduced another lab’s results.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Crowds change over time&lt;/b&gt;.  When we ran our experiments for our VLDB 2012 paper, we followed the reasonably rigorous &lt;a href="https://amplab.cs.berkeley.edu/publication/crowddb-answering-queries-with-crowdsourcing/"&gt;CrowdDB&lt;/a&gt; protocol for vetting our results.  We ran each experiment multiple times during the east coast business hours of different weekdays, trusting only experiments that we could reproduce ourselves.  This process helped eliminate some irreproducible results.  Several months later, &lt;a href="http://sirrice.com"&gt;Eugene&lt;/a&gt; and I re-ran all of our experiments before the paper&amp;rsquo;s camera ready deadline.  No dice: some of the results had changed, and we had to remove some findings we were no longer confident in.  &lt;a href="https://www.ics.uci.edu/~jwross/pubs/RossEtAl-WhoAreTheCrowdworkers-altCHI2010.pdf"&gt;As Mechanical Turk sees changing demographic patterns&lt;/a&gt;, you can expect your results to change as the underlying crowd does.  These changes will compound the noise that you will already see across different workers.  This is no excuse for avoiding reproducibility: every experimental field has to account for diverse sources of variance, but it makes me wary of the one-script-to-reproduce-them-all philosophy that you might expect of other areas of systems research.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Platforms change over time&lt;/b&gt;. Even after all of the work we put into documenting our experiments for future generations, they won’t run out of the box.  Between the time that we ran our experiments and the time we released the reproducibility code, Amazon added an SSL requirement for servers hosting external HITs.  This is a wonderful improvement as far as security goes, but underscores the fact that relying on an external marketplace for your experiments is one more factor to compound the traditional &lt;a href="https://en.wikipedia.org/wiki/Software_rot"&gt;bit rot&lt;/a&gt; that software projects see.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Industry-specific challenges&lt;/b&gt;.  Our VLDB 2012 and 2013 research was performed solely in academia.  I&amp;rsquo;ve since moved to do crowdsourcing research and development &lt;a href="http://blog.locu.com/post/25389032496/the-locu-workflow-a-crawler-a-learner-and-a-crowd"&gt;in industry&lt;/a&gt;.  This new environment poses new challenges to reproducibility.  While most of the code powering machine learning and workflow design for crowd work in industry is proprietary, so is the crowd.  For our work on the Locu team, we&amp;rsquo;ve got a few hundred workers that we&amp;rsquo;ve established long-term relationships with.  We&amp;rsquo;ve had relationships with many crowd workers for over two years.  Open sourcing the code behind our tools is one thing, but imagining other researchers bootstrapping the relationships and workflows we&amp;rsquo;ve developed for the purposes of reproducibility is near impossible.  Still, I believe industry has a lot to contribute to discussions around crowd-powered systems: the mechanism design, incentives, models, and interfaces we develop are of value to the larger community.  If industry is going to contribute to the discussion, we&amp;rsquo;ll have to work through some tradeoffs, including less-than-randomized evaluations, difficult-to-independently-reproduce conclusions, and as a result, more contributions to engineering than to science.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;As crowd research matures, it will be important for us to ask what reproducibility means to our community.  The answer will look pretty different from that of other areas of computer science.  What are your thoughts?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thank you to Peter Bailis and Michael Bernstein for providing feedback on drafts of this piece, and to my coauthors for helping get our work to a reproducible state.&lt;/em&gt;&lt;/p&gt;</description><link>https://blog.marcua.net/post/82595316104</link><guid>https://blog.marcua.net/post/82595316104</guid><pubDate>Sun, 13 Apr 2014 13:05:25 -0400</pubDate></item><item><title>Web Scraping Tools for Non-developers</title><description>&lt;p&gt;I recently spoke with a resource-limited organization that is investigating government corruption and wants to access various public datasets to monitor politicians and law firms. They don&amp;rsquo;t have developers in-house, but feel pretty comfortable analyzing datasets in &lt;a href="https://en.wikipedia.org/wiki/Comma-separated_values"&gt;CSV&lt;/a&gt; form. While many public datasources are available in structured form, some sources are hidden in what us data folks call the &lt;a href="https://en.wikipedia.org/wiki/Deep_Web"&gt;deep web&lt;/a&gt;.  Amazon is a nice example of a deep website, where you have to enter text into a search box, click on a few buttons to narrow down your results, and finally access relatively structured data (prices, model numbers, etc.) embedded in HTML.  Amazon has a structured database of their products somewhere, but all you get to see is a bunch of webpages trapped behind some forms.&lt;/p&gt;

&lt;p&gt;A developer usually isn&amp;rsquo;t hindered by the deep web.  If we want the data on a webpage, we can automate form submissions and key presses, and we can parse some ugly HTML before emitting reasonably structured CSVs or JSON. But what can one accomplish without writing code?&lt;/p&gt;

&lt;p&gt;This turns out to be a hard problem. Lots of companies have tried, to varying degrees of success, to build a programmer-free interface for structured web data extraction. I had the pleasure of working on one such project, called &lt;a href="http://readwrite.com/2010/10/05/needlebase_get_this_diy_web_analysis_tool_before_g#awesm=~otZsWqX577hOPt"&gt;Needlebase&lt;/a&gt; at ITA before Google acquired it and closed things down. &lt;a href="http://davidhuynh.net/"&gt;David Huynh&lt;/a&gt;, my wonderful colleague from grad school, prototyped a tool called &lt;a href="http://simile.mit.edu/wiki/Sifter"&gt;Sifter&lt;/a&gt; that did most of what one would need, but like all good research from 2006, the lasting impact is his paper rather than his software artifact.&lt;/p&gt;

&lt;p&gt;Below, I&amp;rsquo;ve compiled a list of some available tools. The list comes from memory, the advice of some friends that have done this before, and, most productively, a &lt;a href="https://twitter.com/marcua/status/426783236132732928"&gt;question on Twitter&lt;/a&gt; that &lt;a href="http://twitter.com/hmason"&gt;Hilary Mason&lt;/a&gt; was nice enough to retweet.&lt;/p&gt;

&lt;p&gt;The bad news is that none of the tools I tested would work out of the box for the specific use case I was testing. To understand why, I&amp;rsquo;ll break down the steps required for a working web scraper, and then use those steps to explain where various solutions broke down.&lt;/p&gt;

&lt;h1&gt;The anatomy of a web scraper&lt;/h1&gt;

&lt;p&gt;There are three steps to a structured extraction pipeline:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;em&gt;Authenticate yourself&lt;/em&gt;. This might require logging in to a website or filling out a &lt;a href="https://en.wikipedia.org/wiki/CAPTCHA"&gt;CAPTCHA&lt;/a&gt; to prove you&amp;rsquo;re not&amp;hellip;a web scraper. Because the source I wanted to scrape required filling out a CAPTCHA, all of the automated tools I&amp;rsquo;ll review below failed step 1. It suggests that as a low bar, good scrapers should facilitate a human in the loop: automate the things machines are good at automating, and fall back to a human to perform authentication tasks the machines can&amp;rsquo;t do on their own.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Navigate to the pages with the data&lt;/em&gt;. This might require entering some text into a search box (e.g., searching for a product on Amazon), or it might require clicking &amp;ldquo;next&amp;rdquo; through all of the pages that results are split over (often called pagination). Some of the tools I looked at allowed entering text into search boxes, but none of them correctly handled pagination across multiple pages of results.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Extract the data&lt;/em&gt;. On any page you&amp;rsquo;d like to extract content from, the scraper has to help you identify the data you&amp;rsquo;d like to extract. The cleanest example of this that I&amp;rsquo;ve seen is captured in a &lt;a href="http://www.kimonolabs.com/"&gt;video for one of the tools below&lt;/a&gt;: the interface lets you click on some text you want to pluck out of a website, asks you to label it, and then allows you to correct mistakes it learns how to extract the other examples on the page.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;As you&amp;rsquo;ll see in a moment, the steps at the top of this list are hardest to automate.&lt;/p&gt;

&lt;h1&gt;What are the tools?&lt;/h1&gt;

&lt;p&gt;Here are some of the tools that came highly recommended, and my experience with them.  None of those passed the CAPTCHA test, so I&amp;rsquo;ll focus on their handling of navigation and extraction.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://chrome.google.com/webstore/detail/web-scraper/jnhgnonknehpejjnehehllkliplmbmhn"&gt;Web Scraper &lt;/a&gt; is a Chrome plugin that allows you to build navigable site maps and extract elements from those site maps. It would have done everything necessary in this scenario, except the source I was trying to scrape captured click events on links (I KNOW!), which tripped things up. You should give it a shot if you&amp;rsquo;d like to scrape a simpler site, and the &lt;a href="https://www.youtube.com/watch?v=PgIfLxfRYnc"&gt;youtube video&lt;/a&gt; that comes with it helps get around the slightly confusing user interface.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://import.io/"&gt;import.io&lt;/a&gt; looks like a clean webpage-to-api story. The service views any webpage as a potential data source to generate an API from. If the page you&amp;rsquo;re looking at has been scraped before, you can access an API or download some of its data. If the page hasn&amp;rsquo;t been processed before, import.io walks you through the process of building connectors (for navigation) or extractors (to pull out the data) for the site. Once at the page with the data you want, you can annotate a screenshot of the page with the fields you&amp;rsquo;d like to extract. After you submit your request, it appears to get queued for extraction. I&amp;rsquo;m still waiting for the data 24 hours after submitting a request, so I can&amp;rsquo;t vouch for the quality, but the delay suggests that import.io uses &lt;a href="https://en.wikipedia.org/wiki/Crowdsourcing"&gt;crowd workers&lt;/a&gt; to turn your instructions into some sort of semi-automated extraction process, which likely helps improve extraction quality. The site I tried to scrape requires an arcane combination of javascript/POST requests that threw import.io&amp;rsquo;s connectors for a loop, and ultimately made it impossible to tell import.io how to navigate the site. Despite the complications, import.io seems like one of the more polished website-to-data efforts on this list.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.kimonolabs.com/welcome.html"&gt;Kimono&lt;/a&gt; was one of the most popular suggestions I got, and is quite polished. After installing the Kimono bookmarklet in your browser, you can select elements of the page you wish to extract, and provide some positive/negative examples to train the extractor. This means that unlike import.io, you don&amp;rsquo;t have to wait to get access to the extracted data. After labeling the data, you can quickly export it as CSV/JSON/a web endpoint. The tool worked seamlessly to extract a feed from the Hackernews front page, but I&amp;rsquo;d imagine that failures in the automated approach would make me wish I had access to import.io&amp;rsquo;s crowd workers. The tool would be high on my list except that navigation/pagination is coming soon, and will ultimately cost money.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://open.dapper.net/dapp-factory.jsp"&gt;Dapper&lt;/a&gt;, which is now owned by Yahoo!, provides about the same level of scraping capabilities as Kimono. You can extract content, but like Kimono it&amp;rsquo;s unclear how to navigate/paginate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://eagereyes.org/data/scrape-tables-using-google-docs"&gt;Google Docs&lt;/a&gt; was an unexpected contender. If the data you&amp;rsquo;re extracting is in an HTML table/RSS Feed/CSV file/XML document on a single webpage with no navigation/authentication, you can use one of the &lt;a href="https://support.google.com/drive/table/25273?hl=en&amp;amp;rd=2"&gt;Import* functions&lt;/a&gt; in Google Docs. The &lt;a href="https://support.google.com/drive/answer/3093339"&gt;IMPORTHTML&lt;/a&gt; macro worked as advertised in a quick test.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://imacros.net/browser/cr/welcome"&gt;iMacros&lt;/a&gt; is a tool that I could imagine solves all of the tasks I wanted, but costs more than I was willing to pay to write this blog post. Interestingly, the free version handles the steps that the other tools on this list don&amp;rsquo;t do as well: navigation. Through your browser, iMacros lets you automate filling out forms, clicking on &amp;ldquo;next&amp;rdquo; links, etc. To perform extraction, you have to pay at least $495.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A friend has used &lt;a href="http://community.screen-scraper.com/"&gt;Screen-scraper&lt;/a&gt; in the past with good outcomes.  It handles navigation as well as extraction, but costs money and requires a small amount of programming/tokenization skills.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.winautomation.com/"&gt;Winautomation&lt;/a&gt; seems cool, but it&amp;rsquo;s only available for Windows, which was a dead end for me.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h1&gt;So that&amp;rsquo;s it? Nothing works?&lt;/h1&gt;

&lt;p&gt;Not quite. None of these tools solved the problem I had on a very challenging website: the site clearly didn&amp;rsquo;t want to be crawled given the CAPTCHA, and the javascript-submitted POST requests threw most of the tools that expected navigation through links for a loop. Still, most of the tools I reviewed have snazzy demos, and I was able to use some of them for extracting content from sites that were less challenging than the one I initially intended to scrape.&lt;/p&gt;

&lt;p&gt;All hope is not lost, however. Where pure automation fails, a human can step in. Several proposals suggested paying people on &lt;a href="https://www.odesk.com/"&gt;oDesk&lt;/a&gt;, &lt;a href="https://www.mturk.com"&gt;Mechanical Turk&lt;/a&gt;, or &lt;a href="http://crowdflower.com/"&gt;CrowdFlower&lt;/a&gt; to extract the content with a human touch. This would certainly get us past the CAPTCHA and hard-to-automate navigation. It might get pretty expensive to have humans copy/paste the data for extraction, however. Given that the tools above are good at extracting content from any single page, I suspect there&amp;rsquo;s room for a human-in-the-loop scraping tool to steal the show: humans can navigate and train the extraction step, and the machine can perform the extraction. I suspect that&amp;rsquo;s what &lt;a href="http://import.io/"&gt;import.io&lt;/a&gt; is up to, and I&amp;rsquo;m hopeful they keep the tool available to folks like the ones I initially tried to help.&lt;/p&gt;

&lt;p&gt;While we&amp;rsquo;re on the topic of human-powered solutions, it might make sense to hire a developer on oDesk to just implement the scraper for the site this organization was looking at.  While a lot of the developer-free tools I mentioned above look promising, there are clearly cases where paying someone for a few hours of script-building just makes sense.&lt;/p&gt;</description><link>https://blog.marcua.net/post/74655674340</link><guid>https://blog.marcua.net/post/74655674340</guid><pubDate>Sun, 26 Jan 2014 17:41:11 -0500</pubDate></item><item><title>Locu has a new home</title><description>&lt;div&gt;On Monday, we announced that &lt;a href="http://allthingsd.com/20130819/godaddy-acquires-merchant-finder-startup-locu-for-70-million/" title="Locu has been acquired by GoDaddy" target="_blank"&gt;Locu has been acquired by GoDaddy&lt;/a&gt;. As a friend, technologist, or researcher, the acquisition might initially surprise you.  Rather than repeat myself a thousand times, I figured I&amp;rsquo;d share some thoughts on the topic.  &lt;em&gt;Standard caveat: these words represent my thoughts, not my employer&amp;rsquo;s&lt;/em&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;&lt;li&gt;I&amp;rsquo;m personally excited about the acquisition.  We&amp;rsquo;ve been working with the folks from GoDaddy for several months now, and the team is sharp and energized about helping hundreds of millions of local merchants find their home on the web.&lt;/li&gt;
&lt;li&gt;Locu remains Locu as a team, a set of offices, a product, and a mission.  For the most part, Locu will be bringing new technology and design to the table, and GoDaddy will be bringing a level of scale that would take years to build up on our own.  Locu offers a healthy dose of data structuring and crowdsourcing technology alongside the design chops to make previously complicated things simple.  GoDaddy is the largest privately held company in the world that focuses on helping small businesses with their web presence, and brings years of sales and marketing experience to Locu&amp;rsquo;s products.  GoDaddy also has a deep understanding of scale both in terms of the tens of millions of people they work with, and the billions of dollars of revenue they bring in.&lt;/li&gt;
&lt;li&gt;Aside from the business side of things, we&amp;rsquo;re still very excited to be releasing open source projects and publishing more about our approach to structured data extraction and crowd work.  The open source and research communities have been so fundamental to what we do, and I&amp;rsquo;m excited we can continue to repay that debt.&lt;/li&gt;
&lt;li&gt;As a human being, I care a lot about the values of the company I work for.  It would be ignorant to ignore the fact that previous incarnations of GoDaddy have been responsible for sexist Super Bowl commercials, and have supported web-endangering efforts like SOPA.  We&amp;rsquo;ve been assured that the people who were behind these efforts are no longer working at GoDaddy.  In fact, an entirely new leadership team (including CEO, COO, CTO, Chief Architect, etc.) has been put in place since these controversies, and I count myself as one of the folks that expects a lot of them in the coming years.&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div&gt;From everything I&amp;rsquo;ve heard, I know that acquisitions are hard to execute well.  If we pull this off, we&amp;rsquo;ll be improving the lives of local merchants and crowd workers alike, and putting new force behind structured data.  I&amp;rsquo;m excited to give it a shot!&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;  &lt;/div&gt;
&lt;div&gt;&lt;em&gt;Many thanks to &lt;a href="http://twitter.com/followrene"&gt;Rene Reinsberg&lt;/a&gt; for giving me feedback on many things in life, including this post.&lt;/em&gt;&lt;/div&gt;</description><link>https://blog.marcua.net/post/59017844163</link><guid>https://blog.marcua.net/post/59017844163</guid><pubDate>Thu, 22 Aug 2013 12:15:00 -0400</pubDate></item><item><title>My N=1 Guide to Grad School</title><description>&lt;p&gt;A little delayed, but I put together a &lt;a href="http://marcua.net/writing/gradschool-guide/"&gt;guide of advice I&amp;rsquo;ve given other students in grad school&lt;/a&gt;.  Send feedback, or write your own!&lt;/p&gt;</description><link>https://blog.marcua.net/post/59015867990</link><guid>https://blog.marcua.net/post/59015867990</guid><pubDate>Thu, 22 Aug 2013 11:45:15 -0400</pubDate></item><item><title>Locu</title><description>&lt;p&gt;Life update: I&amp;rsquo;ve defended my thesis and I&amp;rsquo;m now the Director of Data at &lt;a href="https://locu.com/"&gt;Locu&lt;/a&gt;.  This doesn&amp;rsquo;t change much on the blog, as I&amp;rsquo;ll still periodically update it with random thoughts.  I&amp;rsquo;m also doing a bit of blogging on the Locu blog on topics like &lt;a href="http://blog.locu.com/post/25389032496/the-locu-workflow-a-crawler-a-learner-and-a-crowd"&gt;our technology workflow&lt;/a&gt;, &lt;a href="http://blog.locu.com/post/33643615645/crowd-task-decomposition-how-locu-breaks-it-down-for"&gt;designing for crowds&lt;/a&gt;, and the &lt;a href="http://blog.locu.com/post/34787851747/the-human-side-of-crowdsourcing"&gt;human side of crowdsourcing&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s an exciting and very different next step for me.  I&amp;rsquo;m still very excited about introducing new students to data and computer science, and will keep that up as well.&lt;/p&gt;</description><link>https://blog.marcua.net/post/37352883000</link><guid>https://blog.marcua.net/post/37352883000</guid><pubDate>Thu, 06 Dec 2012 16:18:36 -0500</pubDate></item><item><title>What Should be Included in a Data Science Curriculum? </title><description>&lt;p&gt;&lt;em&gt;(I recently wrote an answer to &lt;a href="http://www.quora.com/Data-Science/What-should-be-included-in-a-data-science-curriculum" target="_blank"&gt;What Should be Included in a Data Science Curriculum?&lt;/a&gt; on Quora.  Here&amp;rsquo;s a subset of that answer)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.sirrice.com" target="_blank"&gt;Eugene Wu&lt;/a&gt; and I recently taught a 6-day (3 hours per day) &lt;a href="http://dataiap.github.com/dataiap/" target="_blank"&gt;course on data literacy basics&lt;/a&gt; targeted at computer science undergraduates.  Our initial motivation was selfish: as databases researchers, we didn&amp;rsquo;t have a lot of experience with an end-to-end raw data-&amp;gt;data product pipeline.  After a few trial runs of our own, we realized certain data processing patterns kept showing up, and saw that we had a small course worth of content on our hands.  The important thing here is that even with undergraduate- and graduate-level machine learning, statistics, and database courses under our belts, we still had a lot to learn about working with honest-to-goodness dirty data.&lt;br/&gt;&lt;br/&gt;Each module of our course could have had an entire semester dedicated to it, and so we favored basic skills with lots of hands-on experience over intellectual depth and rigor.  We kept lectures to 20-30 minutes, giving students the remaining 2.5 hours to go through the labs we set up while we walked around answering questions.  Lectures allowed students to know what they were in for at a high level, and the lab portion allowed them to cement those concepts with real datasets, code, and diagrams.  All of the course content is available on github, and as an example, here is a direct link to &lt;a href="http://dataiap.github.com/dataiap/day1/" target="_blank"&gt;day 1&amp;rsquo;s lab&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;The syllabus we covered was:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Day 1: an end-to-end experience in downloading campaign contribution data from the federal election commission, cleaning it up, and programmatically displaying it using basic charts.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Day 2: visualization/charting skills using election and county health data.&lt;/li&gt;
&lt;li&gt;Day 3: statistics to take the hunches they got on day 2 and quantify them, learning about T-Tests and linear regression along the way.&lt;/li&gt;
&lt;li&gt;Day 4: text processing/summarization using the Enron email corpus.&lt;/li&gt;
&lt;li&gt;Day 5: MapReduce to scale up Day 4&amp;rsquo;s analysis using Elastic MapReduce on Amazon Web Services.  This felt a bit forced, but the students were clamoring for distributed data processing experience.&lt;/li&gt;
&lt;li&gt;Day 6: the students teach us something they learned on their own datasets using techniques we&amp;rsquo;ve taught them.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;While we set out to give computer science students with familiarity in python programming a dive into data, we ended up with folks from the physical sciences, doctors, and a few social scientists who had their own datasets to answer questions about.  The last day allowed them to experiment with their new skills on their own data.  Attendance on this day was lower than the previous days: the majority of the folks in attendance on day 6 were on the more experienced end, and I suspect that the undergrads, who were not yet exposed to data problems of their own, didn&amp;rsquo;t find it as engaging.  It would be interesting to see how to develop course content that allows self-directed data science for students who still need a bit more inspiration.&lt;br/&gt;&lt;br/&gt;I should also say that our attempt is not the first one to bring data to the classroom.&lt;a href="https://twitter.com/#!/hackingdata" target="_blank"&gt; Jeff Hammerbacher &lt;/a&gt;and &lt;a href="http://www.cs.berkeley.edu/~franklin/" target="_blank"&gt;Mike Franklin&lt;/a&gt; at Berkeley have a wonderful semester-length &lt;a href="http://datascienc.es/" target="_blank"&gt;course on data science&lt;/a&gt;.  The high-level outline of the course seems similar, but they get farther into data product design, and jump into each topic in more depth.  Their &lt;a href="http://datascienc.es/resources" target="_blank"&gt;resources page&lt;/a&gt; has a nice set of links to other educational efforts worth checking out.&lt;br/&gt;&lt;/p&gt;</description><link>https://blog.marcua.net/post/20914495752</link><guid>https://blog.marcua.net/post/20914495752</guid><pubDate>Wed, 11 Apr 2012 15:02:00 -0400</pubDate></item><item><title>One Gray Lady</title><description>&lt;p&gt;I consume content through many aggregators, but &lt;a href="https://www.nytimes.com/"&gt;The New York Times&lt;/a&gt; (&lt;em&gt;The Gray Lady&lt;/em&gt;) is the single source of content I go to directly at least daily to know what&amp;rsquo;s happening in the world.  While it&amp;rsquo;s good for news, what sets &lt;em&gt;The Times&lt;/em&gt; apart from other content sources is its depth of reporting.  There&amp;rsquo;s one problem, though: by default, longer NYT articles do not appear in &lt;em&gt;Single Page&lt;/em&gt; mode.  This has caused me problems in the past, ranging in severity from slightly annoying (having to click &lt;em&gt;Next Page&lt;/em&gt;) to pretty frustrating (loading articles for offline reading only to realize I only had the first page).&lt;/p&gt;

&lt;p&gt;So I created &lt;a href="https://github.com/marcua/onegraylady"&gt;One Gray Lady&lt;/a&gt;, a Greasemonkey plugin that loads all NYT content in single page mode.&lt;/p&gt;

&lt;p&gt;To install it in Google Chrome or Firefox with the Greasemonkey plugin, &lt;a href="https://github.com/marcua/onegraylady/raw/master/onegraylady.user.js"&gt;click here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I have only tested the code in Chrome, and while I did a bit of testing on various URLs, I&amp;rsquo;m sure I missed something.  Feel free to send updates or suggestions!&lt;/p&gt;</description><link>https://blog.marcua.net/post/20297275360</link><guid>https://blog.marcua.net/post/20297275360</guid><pubDate>Sun, 01 Apr 2012 14:07:42 -0400</pubDate></item><item><title>John Glaser on Healthcare Information Technology</title><description>&lt;p&gt;I recently sat in on a lecture for Professor Peter Szolovits&amp;rsquo;s &lt;a href="http://stellar.mit.edu/S/course/6/fa11/6.872/index.html"&gt;Biomedical Computing&lt;/a&gt; course.  The lecture was open to a greater audience, given the prominence of the speaker.  As a non-expert, I found it to be a useful look into the current state of healthcare IT and the coming legislative and technical challenges facing the industry.  My notes are below.&lt;/p&gt;

&lt;p&gt;John Glaser, Ph.D.&lt;br/&gt;
Formerly CIO of Partners/Brigham And Women&amp;rsquo;s Hospital&lt;br/&gt;
Currently CEO of Siemens Health Services&lt;/p&gt;

&lt;p&gt;Free advice: get a healthcare proxy and power of attorney set up.  Easier to do now than have someone else guess later how you want to live/die.&lt;/p&gt;

&lt;p&gt;Why does Health IT suck?&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Not for lack of money put into the system&lt;/li&gt;
&lt;li&gt;Not for lack of smart people working on the problem&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Current model&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Insurance companies/patients pay per volume (per birth, per surgery, etc.) almost regardless of quality&lt;/li&gt;
&lt;li&gt;Boards of directors are very conservative.  Don&amp;rsquo;t want to be the board that made an IT decision that made a huge hospital fail.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;U.S. Numbers to give context&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;60% of hospitals are &amp;lt;= 100 beds&lt;/li&gt;
&lt;li&gt;Of 500K physicians, majority work in 2-3-doctor practice (not IT-savvy, or modestly interested in IT at best)&lt;/li&gt;
&lt;li&gt;2/3 of medical decisions are heuristic/not scientific, and many have a difficult-to-verify outcome&lt;/li&gt;
&lt;li&gt;volatile knowledge domain: 700k academic articles have come out in the last (decade?)&lt;/li&gt;
&lt;li&gt;20% of doctors are a decade away from retirement, so perhaps newer doctors will bring IT mentality with them?&lt;/li&gt;
&lt;li&gt;PricewaterhouseCoopers survey: 58% of (independent?) doctors considering quitting, selling practice, or joining a larger practice&lt;/li&gt;
&lt;li&gt;various societies are discussing requirements: to become board (re-)certified (oncology, etc.), you have to show facility in technology.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Health IT Services&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;huge fragmentation: the 3rd largest health IT services company has 7% of market.  if they win every open engagement from now until (?), they will have 11% of the market.&lt;/li&gt;
&lt;li&gt;lots of players: 300 electronic health record providers in US, 25% exit and 25% enter per year&lt;/li&gt;
&lt;li&gt;engagements are long: bringing up a new hospital IT system takes 2-4 years.  from the moment you decide to change IT systems, you will continue to use your old one for the next 4-5 years as you transition.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Affordable Care Act (ACA)&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;costs are projected to go up 26% in the next decade.  ACA stipulates that govt. will compensate 12% more in the next decade: providers have to make up the difference.&lt;/li&gt;
&lt;li&gt;to incentivize quality care, govt. will hold on to 10% of payments until you prove treatment was effective (hard to define).&lt;/li&gt;
&lt;li&gt;currently, for a single procedure (e.g., total hip replacement) you might get 12 different bills (e.g., surgeon, materials, anesthesia).  new system: govt. pays a single provider one bill, with a fixed amount.  incentivizes a holistic view.&lt;/li&gt;
&lt;li&gt;risk: hospitals go out of business.  potential future doctors don&amp;rsquo;t enter medicine.  doctors &amp;ldquo;fire&amp;rdquo; bad patients to make their numbers look good.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Consolidation&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;doctors in small practices joining larger networks to avoid managing the ACA requirements.&lt;/li&gt;
&lt;li&gt;single payment requirement will cause groups of doctors to more tightly collaborate (contractually).&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Transition challenges&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;ACA is rolling out over the course of a decade.&lt;/li&gt;
&lt;li&gt;need to be careful, since some patients will be handled by old rules, and some by new rules.  so do you not apply decision support-based treatment to patients on old rules, or just do fee-for-service?  lots of mental overhead for doctors.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Fixed fee challenges&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;paying a fixed amount per treatment doesn&amp;rsquo;t work for everything.  Diabetes is sort of predictable, but a trauma might range from a broken toe to severe burns on 90% of body.&lt;/li&gt;
&lt;li&gt;(Adam&amp;rsquo;s note) perhaps large pools of insured patients will smooth over the individual spikes in cost of care.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Information Technology needs&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;systems must span inpatient, outpatient, emergency care, rehab&lt;/li&gt;
&lt;li&gt;need revenue cycle + contract management system that handles continuum of care.  this is complex: medicare + blue cross might pay diff amounts for &amp;ldquo;good&amp;rdquo; diabetes treatment, and &amp;ldquo;good&amp;rdquo; might be defined differently.&lt;/li&gt;
&lt;li&gt;systems should manage individuals and populations: how did all 100 people w/ respiratory problems do last month?  which patients strayed from predicted path?  what should have happened?  why/why not?&lt;/li&gt;
&lt;li&gt;sophisticated business intelligence + analysis: predict who will get worse, etc.&lt;/li&gt;
&lt;li&gt;interoperability w/ different providers&lt;/li&gt;
&lt;li&gt;rules+workflow engines to ensure followups/next steps/help primary care doctors coordinate care, manage exceptions, follow up properly.  also allow this in collaborative care environment w/ lots of specialists checking in and out.&lt;/li&gt;
&lt;li&gt;high availability + low total cost of ownership&lt;/li&gt;
&lt;li&gt;engage patients&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;New challenges for primary care physicians (PCPs)&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;At the moment, PCP moves from one patient to the next every 15 minutes, sees 100s of lab results per day&lt;/li&gt;
&lt;li&gt;Only 25% of data from specialists comes back to a PCP within a month&lt;/li&gt;
&lt;li&gt;In future, PCPs will be responsible for closing the loop on specialists, tests, etc., with more accountability, but still be given just as much or more information, with similar delays.  Workflow management systems are key here!&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Interesting technical challenges&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;filtering patient care notes: 10s of pages of patient care history.  No doctor can read them all before seeing patient. how to help doctors find relevant notes across different doctors, annotations, etc.&lt;/li&gt;
&lt;li&gt;supporting collaboration between multiple providers&lt;/li&gt;
&lt;li&gt;parsing notes to remind providers. e.g., &amp;ldquo;Ask about patient&amp;rsquo;s daughter next time.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;cleaning up conflicting medical record data: was it type 1 or type 2 diabetes?  was it a heart attack, or just a test for one?&lt;/li&gt;
&lt;/ul&gt;</description><link>https://blog.marcua.net/post/14265051674</link><guid>https://blog.marcua.net/post/14265051674</guid><pubDate>Thu, 15 Dec 2011 11:21:00 -0500</pubDate></item><item><title>Human-powered Sorts and Joins</title><description>&lt;p&gt;(Cross-posted on the &lt;a href="http://crowdresearch.org/blog/?p=2168"&gt;Crowd Research Blog&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;There &lt;a href="http://db.csail.mit.edu/qurk/"&gt;has&lt;/a&gt; &lt;a href="http://www.crowddb.org/"&gt;been&lt;/a&gt; a &lt;a href="http://www-cs-students.stanford.edu/~adityagp/scoop.html"&gt;lot&lt;/a&gt; of excitement in the database community about crowdsourced databases.  At first blush, it sound like databases are yet another application area for crowdsourcing: if you have data in a database, a crowd can help you process it in ways that machines cannot.  This view of crowd-powered databases misses the point.  The real benefit of thinking of human computation as a databases problem is that it helps you manage complex crowdsourced workflows.&lt;/p&gt;

&lt;p&gt;Many crowd-powered tasks require complicated workflows in order to be effective, as we see in algorithms like Soylent&amp;rsquo;s &lt;a href="http://projects.csail.mit.edu/soylent/"&gt;Find-Fix-Verify&lt;/a&gt;.  These custom workflows require &lt;a href="http://code.google.com/p/soylent/source/browse/turkit/library/find-fix-verify.js"&gt;thousands&lt;/a&gt; of lines of code to curry data between services like MTurk and business logic in several languages (1000-2000 in the case of Find-Fix-Verify!).  If we provide workflow developers with a set of common operators, like filters and sorts, and a declarative interface to combine those operators, such as SQL or &lt;a href="https://pig.apache.org/docs/r0.7.0/piglatin_ref1.html"&gt;PigLatin&lt;/a&gt;, we can reduce the painful crowdsourced plumbing code while focusing on a set of operators to improve as a community.&lt;/p&gt;

&lt;p&gt;This is not an academic argument: Find-Fix-Verify can be implemented with a FOREACH-FOREACH-SORT in PigLatin, or a SELECT-SELECT-ORDERBY in SQL, resulting in several tens of lines of code.  All told, we can get a two order-of-magnitude reduction in workflow code.  The task at hand is thus to make the best-of-breed reusable operators for crowd-powered workflows.  In our &lt;a href="http://db.csail.mit.edu/qurk/qurk-vldb2012.pdf"&gt;VLDB 2012 paper&lt;/a&gt;, we look at two such operators: Sorts and Joins.&lt;/p&gt;

&lt;h2&gt;Sorts&lt;/h2&gt;

&lt;p&gt;Human-powered sorts are everywhere.  When you submit a product review with a 5-star rating, you&amp;rsquo;re implicitly contributing a datapoint to a large product ranking algorithm.  In addition to rating-based sorts, there are also comparison-based ones, where a user is asked to compare two or more items along some axis.  For a particularly cute example of comparison-based sorting, see &lt;a href="http://thecutest.info/"&gt;The Cutest&lt;/a&gt;, a site that identifies the cutest animals in the world by getting pairwise comparisons from heartwarmed visitors.&lt;/p&gt;

&lt;p&gt;The two sort-input methods can be found in the image below.  On the left, users compare five squares by size.  On the right, users rate each square on a scale from one to seven by size after seeing 10 random examples.&lt;/p&gt;

&lt;div&gt;&lt;a href="http://db.csail.mit.edu/qurk/comparison-rating.png"&gt;&lt;img src="http://db.csail.mit.edu/qurk/comparison-rating.png" alt="Comparison- and Rating-based Sort" style="width: 500px;"/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;In our paper, we show that comparisons provide accurate rankings, but are expensive: they require a number of comparisons quadratic in the number of items being compared.  Rating is quite accurate, and cheaper than sorts: it&amp;rsquo;s linear in the number of items rated.  We also propose a hybrid of the two that balances cost and accuracy, where we first rate all items, and then compare items with similar ratings.&lt;/p&gt;

&lt;p&gt;These techniques can reduce the cost of sorting a list of items by 2-10x.  Human-powered sorts are valuable for a variety of tasks.  Want to know which animals are most dangerous?  From least to most dangerous, a crowd of Turkers said:&lt;/p&gt;

&lt;pre&gt;flower, ant, grasshopper, rock, bee, turkey, dolphin, parrot, baboon,
rat, tazmanian devil, lemur, camel, octopus, dog, eagle,
elephant seal, skunk, hippo, hyena, great white shark, moose,
komodo dragon, wolf, tiger, whale, panther&lt;/pre&gt;

&lt;p&gt;The different sort implementations highlight another benefit of declaratively defined workflows.  A system like Qurk can take user constraints into account (linear costs? quadratic costs? something in between?) and identify a comparison-, rating-, or hybrid-based sort implementation to meet their needs.&lt;/p&gt;

&lt;h2&gt;Joins&lt;/h2&gt;

&lt;p&gt;Human-powered Joins are equally pervasive.  The area of &lt;a href="http://en.wikipedia.org/wiki/Identity_resolution"&gt;Entity Resolution&lt;/a&gt; has captured the attention of researchers and practitioners for decades.  In the space of finance, is IBM the same as International Business Machines?  Intelligence analysis runs into a combinatorial explosion in the number of ways to say &lt;a href="http://en.wikipedia.org/wiki/Muammar_Gaddafi"&gt;Muammar Muhammad Abu Minyar al-Gaddafi&lt;/a&gt;&amp;rsquo;s name.  And most importantly, how can I tell if Justin Timberlake is the person in the image I&amp;rsquo;m looking at?&lt;/p&gt;

&lt;p&gt;We explored three interfaces for solving the celebrity matching problem (and more broadly, the human-powered entity resolution problem).  The first is a simple join interface, asking users if the same celebrity is displayed in two images.  The second employs batching, asking Turkers to match several pairs of celebrity images.  The third interface employs more complex batching by asking Turkers to match celebrities arrayed in two columns.&lt;/p&gt;

&lt;div&gt;&lt;a href="http://db.csail.mit.edu/qurk/simple-naive-smart.png"&gt;&lt;img src="http://db.csail.mit.edu/qurk/simple-naive-smart.png" alt="Simple Joins, Naive Batching, and Smart Batching" style="width: 500px;"/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;As we batch more pairs to match per task, cost goes down, but so does Turker accuracy.  Still, we found that we can achieve around a 10x cost reduction without significantly losing in result quality.  We can achieve even more savings by having workers identify features of the celebrities, so that we don&amp;rsquo;t, for example, try to match up males with females.&lt;/p&gt;

&lt;h2&gt;We&amp;rsquo;re Not Done Yet&lt;/h2&gt;

&lt;p&gt;We now have insight into how to effectively design two important human-powered operators, sorts and joins.  There are two directions to go from here: bring in learning models, and design more reusable operators.&lt;/p&gt;

&lt;p&gt;Our paper shows how to achieve more than order-of-magnitude cost reductions in join and sort costs, but this is often not enough.  To further reduce costs while maintaining accuracy, we&amp;rsquo;re looking at training machine learning classifiers to perform simple join and sort tasks, like determining that Cambridge Brewing Co. is likely the same as Cambridge Brewing Company.  We&amp;rsquo;ll still need humans to handle the really tricky work, like figuring out which of the phone numbers for the brewing company is the right one.&lt;/p&gt;

&lt;p&gt;Sorts and joins aren&amp;rsquo;t the only reusable operators we can implement.  Next up: human-powered aggregates.  In groups, humans are surprisingly accurate at estimating quantities (&lt;a href="http://thebernoullitrial.wordpress.com/2008/12/19/the-wisdom-of-gummy-bears/"&gt;jelly beans in a jar&lt;/a&gt;, anyone?).  We&amp;rsquo;re building an operator that takes advantage of this ability to count with a crowd.&lt;/p&gt;

&lt;p&gt;For more, see our full paper, &lt;a href="http://db.csail.mit.edu/qurk/qurk-vldb2012.pdf"&gt;Human-powered Sorts and Joins&lt;/a&gt;.&lt;br/&gt;&lt;em&gt;This is joint work with &lt;a href="http://www.mit.edu/~eugenewu/"&gt;Eugene Wu&lt;/a&gt;, &lt;a href="http://people.csail.mit.edu/karger/"&gt;David Karger&lt;/a&gt;, &lt;a href="http://db.lcs.mit.edu/madden/"&gt;Sam Madden&lt;/a&gt;, and &lt;a href="http://people.csail.mit.edu/rcm/"&gt;Rob Miller&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</description><link>https://blog.marcua.net/post/13925039897</link><guid>https://blog.marcua.net/post/13925039897</guid><pubDate>Thu, 08 Dec 2011 11:53:55 -0500</pubDate></item><item><title>I'm a (STEM) Graduate Student: Please Tax Me</title><description>&lt;p&gt;Over the past month, a &lt;a href="https://wwws.whitehouse.gov/petitions#!/petition/reinstate-tax-exempt-status-graduate-student-stipends/rXJf6HlP"&gt;petition&lt;/a&gt; has been circulating asking the Obama administration to bring graduate student stipends back to their pre-1986 tax-exempt status.  I urge you to &lt;em&gt;not&lt;/em&gt; sign this petition, as it is misguided and damaging to our image.  If you believe graduate student researchers are more valuable than their compensation, then demand more compensation, not a tax loophole.&lt;/p&gt;

&lt;p&gt;First, the caveat: I can only speak for the &lt;a href="http://en.wikipedia.org/wiki/STEM_fields"&gt;STEM fields&lt;/a&gt;.  In these fields, a combination of government, corporate, and university grants support research-track students in the lab and classroom.  This compensation usually comes in the form of full tuition coverage and a stipend in the range of $1500-$2500 per month, and sometimes includes health coverage.&lt;/p&gt;

&lt;p&gt;Our stipends put our yearly income at $18,000-$30,000/year.  Compare this to a &lt;a href="http://aspe.hhs.gov/poverty/11poverty.shtml"&gt;poverty threshold&lt;/a&gt; of $18,530 for a family of three, or $29,990 for a family of six.  In computer science, you can double your income with a summer internship, placing you above the &lt;a href="http://www.census.gov/hhes/www/income/data/historical/household/H06AR_2009.xls"&gt;median 2009 household income&lt;/a&gt;.  At first glance, it seems like we are reasonably compensated before we take into account the education, advising, networking, and travel opportunities our life decision has earned us.&lt;/p&gt;

&lt;p&gt;Of course, the argument in the petition is more nuanced than one of unreasonable taxation.  The petition speaks to the value of our &amp;ldquo;innovative, cutting-edge thinking&amp;rdquo; relative to &amp;ldquo;bankers, lobbyists, or hedge-fund managers.&amp;rdquo;  The comparison is certainly timely, but sweeps under the rug other valuable fields, like &lt;a href="http://www.bls.gov/oes/current/oes291111.htm"&gt;Nursing&lt;/a&gt; or &lt;a href="http://www.bls.gov/oes/current/oes472031.htm"&gt;Carpentry&lt;/a&gt;.  Both of these fields earn more than the median graduate student in STEM, but optimistically, we are in a position of higher upward mobility once we graduate.&lt;/p&gt;

&lt;p&gt;Perhaps a better comparison is what we could earn if we had not chosen graduate studies.  With a B.S. in Computer Science, my undergraduate colleagues at large technology firms and startups are earning 3-5x what I earn through my stipend.  Am I more valuable as a researcher than I would be in their shoes?  This seems like a good conversation to have.&lt;/p&gt;

&lt;p&gt;This is a discussion one of &lt;em&gt;relative value&lt;/em&gt;.  In the absolute sense, graduate students in STEM are not poor, and should pay taxes in whatever tax bracket we fall.  Perhaps we&amp;rsquo;re not compensated enough for what we provide to society.  I would like to believe that STEM&amp;rsquo;s contribution to social and economic development is significant.  If we&amp;rsquo;re seeing a dirth of STEM researchers and our value to society is high, the market failure should be supplemented by the government.  Not in the form of yet another tax break, but as an increase in the number of stipends or the amount of compensation distributed per researcher.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.nytimes.com/gwire/2011/05/26/26greenwire-sen-coburn-sets-sight-on-waste-duplication-at-55538.html"&gt;STEM is under attack&lt;/a&gt;.  We should elevate its image by discussing how valuable our work is, not by asking for pity.  Demand what you are worth, but remember how lucky you are.&lt;/p&gt;</description><link>https://blog.marcua.net/post/12926808877</link><guid>https://blog.marcua.net/post/12926808877</guid><pubDate>Thu, 17 Nov 2011 10:43:21 -0500</pubDate></item><item><title>Database papers at CHI</title><description>&lt;p&gt;There is little I like more than a fine cheese and fresh-baked bread.  Still, to fill the rest of my day without expanding my waistline, I go for a mix of databases and human-computer interaction.  That&amp;rsquo;s why I was excited to see several database-oriented papers presented at &lt;a href="http://chi2011.org/"&gt;CHI&lt;/a&gt;.  While many papers contained some amount of data, I&amp;rsquo;ll stick to the three that are unquestionably of interest to the databases community.&lt;/p&gt;

&lt;p&gt;The first paper was for the social scientist in all of us.  Amy Voida, Ellie Harmon, and Ban Al-Ani presented &lt;a href="http://www.ics.uci.edu/~amyvoida/Site/Whats_New/Entries/2011/2/7_Homebrew_Databases_Research_at_CHI_files/homebrewDatabases-chi11.pdf"&gt;Homebrew Databases: Complexities of Everyday Information Management in Nonprofit Organizations&lt;/a&gt;.  Nonprofits are arguably some of the most difficult database users to design for.  They have minimal resources, rarely employ fulltime technical staff, and solve non-core problems as they show up.  This practice leads to homebrew, just-functional-enough solutions to many data management problems.  The authors provide an interesting qualitative study of how nonprofits manage volunteer demographic and contact information.  They provide descriptions of the homebrewed, often fractured collections of data stored in several locations.  Reading this paper, I couldn&amp;rsquo;t help but think of how perfectly these homebrewed databases resembled Franklin, Halevy, and Maier&amp;rsquo;s &lt;a href="http://en.wikipedia.org/wiki/Dataspaces"&gt;dataspaces&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Sean Kandel presented &lt;a href="http://vis.stanford.edu/papers/wrangler"&gt;Wrangler&lt;/a&gt;, a project he&amp;rsquo;s been working on with Andreas Paepcke, Joe Hellerstein, and Jeff Heer.  Wrangler lets users specify transformations on datasets by example.  Each time a user shows Wrangler how to modify a record (or line of unstructured text), Wrangler updates its rank-ordered list of potential transformations that could have led to this modification.  Wrangler borrows concepts such as interactive transformation languages from Vijayshankar Raman and Joe Hellerstein&amp;rsquo;s &lt;a href="http://control.cs.berkeley.edu/abc/"&gt;Potter&amp;rsquo;s Wheel&lt;/a&gt;.  Its interface has a taste of David Huynh and Stefano Mazzocchi&amp;rsquo;s &lt;a href="http://code.google.com/p/google-refine/"&gt;Refine&lt;/a&gt; as well as Huynh&amp;rsquo;s &lt;a href="http://people.csail.mit.edu/dfhuynh/research/papers/iswc2007-potluck.pdf"&gt;Potluck&lt;/a&gt;.  Wrangler&amp;rsquo;s novelty comes in combining the interfaces and transformation languages with an inference and ranking engine.  Since Wrangler is hosted, it is also capable of learning which transformations users prefer and improving its rankings over time!&lt;/p&gt;

&lt;p&gt;The last slot goes to our own Eirik Bakke, who presented &lt;a href="http://www.mit.edu/~ebakke/research/related_worksheets_chi2011.pdf"&gt;Related Worksheets&lt;/a&gt; along with David Karger and Rob Miller.  Related worksheets make foreign key references a first-class citizen in the world of spreadsheets.  Just as spreadsheets secretly made every office worker capable of maintaining a single-user, single-table relational database, Eirik has secretly enabled those workers to make references between spreadsheets without having to program.  While adding foreign key references to a spreadsheet requires a simple user interface modification, its implications on how to display multi-valued cells in the spreadsheet are significant.  Read the paper to see Eirik&amp;rsquo;s hierarchical solution to this problem!&lt;/p&gt;

&lt;p&gt;Keep it up, data nerds!  Soon we&amp;rsquo;ll be able to start a data community at CHI!&lt;/p&gt;</description><link>https://blog.marcua.net/post/5885111801</link><guid>https://blog.marcua.net/post/5885111801</guid><pubDate>Thu, 26 May 2011 22:05:10 -0400</pubDate></item><item><title>Evening Project: What Would Hacker News Say?</title><description>&lt;p&gt;&lt;a href="https://github.com/marcua/wwhns"&gt;What Would Hacker News Say&lt;/a&gt; (WWHNS) is a bookmarklet that allows you to see
if there is a &lt;a href="http://news.ycombinator.com/"&gt;Hacker News&lt;/a&gt; (HN) discussion about
a page you are currently viewing.&lt;/p&gt;

&lt;p&gt;I often find a link through a feed reader or Twitter and want to know if there is an HN thread discussing the link.  This happens more often now that I have moved over to following
&lt;a href="http://twitter.com/#!/newsyc20"&gt;@newsyc20&lt;/a&gt; on Twitter rather than visiting the HN website directly.  I batch up a bunch of stories to read at once, and lose context of which HN thread pointed to that page.&lt;/p&gt;

&lt;p&gt;The WWHNS bookmarklet, when clicked, looks the current page up in &lt;a href="http://api.ihackernews.com/"&gt;Ronnie
Roller&amp;rsquo;s wonderful HN API&lt;/a&gt;, and
adds a link to the top right of the current page to any existing HN comment
threads.&lt;/p&gt;

&lt;p&gt;I tested it in Chrome and Firefox.  Let me know if it works in other browsers.&lt;/p&gt;

&lt;p&gt;Caveat: This bookmarklet will work for links you followed by way of HN or
another source which replicates it.  It may not work if you arrived at a
page from a source outside of HN, since that link might be slightly
different from the one posted to HN.&lt;/p&gt;

&lt;h1&gt;To use WWHNS&lt;/h1&gt;

&lt;p&gt;Easy&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Drag this 
&lt;a href="javascript:(function(e,a,g,h,f,c,b,d)%7Bif(!(f=e.jQuery)%7C%7Cg&amp;gt;f.fn.jquery%7C%7Ch(f))%7Bc=a.createElement(%22script%22);c.type=%22text/javascript%22;c.src=%22http://ajax.googleapis.com/ajax/libs/jquery/%22+g+%22/jquery.min.js%22;c.onload=c.onreadystatechange=function()%7Bif(!b&amp;amp;&amp;amp;(!(d=this.readyState)%7C%7Cd==%22loaded%22%7C%7Cd==%22complete%22))%7Bh((f=e.jQuery).noConflict(1),b=1);f(c).remove()%7D%7D;a.documentElement.childNodes%5B0%5D.appendChild(c)%7D%7D)(window,document,%221.4.2%22,function(%24,L)%7B%24.get(%22http://api.ihackernews.com/getid%22,%7Bformat:%22jsonp%22,url:window.location.href%7D,function(b)%7Bvar%20c=%22&amp;lt;div%20id='__wwhns__'%20style='margin:%205px;%20padding:%205px;%20text-align:left;%20font:%2014px%20Helvetica;display:block;%20position:absolute;%20height:300px;%20top:0;%20right:0;%20width:350px;%20background:#FFFFFF;%20border:1px%20solid%20#ddd;%20z-index:1000;'&amp;gt;%22;c=c+%22&amp;lt;a%20href='#'%20id='__wwhns_close__'&amp;gt;Close&amp;lt;/a&amp;gt;%22;if(b.length&amp;gt;0)%7Bc=c+%22&amp;lt;ul&amp;gt;%22;for(var%20a=0;a&amp;lt;b.length;a++)%7Bc=c+%22&amp;lt;li&amp;gt;&amp;lt;a%20href='http://news.ycombinator.com/item?id=%22;c=c+b%5Ba%5D+%22'&amp;gt;Thread%20%22+(a+1);c=c+%22&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;%22%7Dc=c+%22&amp;lt;/ul&amp;gt;%22%7Delse%7Bc=c+%22&amp;lt;br&amp;gt;No%20threads%20found%22%7Dc=c+%22&amp;lt;/div&amp;gt;%22;%24(%22body%22).append(c);%24(%22#__wwhns_close__%22).click(function()%7B%24(%22#__wwhns__%22).remove();return%20false%7D)%7D,%22jsonp%22);%7D);"&gt;WWHNS&lt;/a&gt; bookmarklet to your bookmark toolbar.&lt;/li&gt;
&lt;li&gt;For any page, click on the &lt;code&gt;WWHNS&lt;/code&gt; button in your bookmark toolbar.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Hard&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Check out the &lt;a href="https://github.com/marcua/wwhns"&gt;WWHNS git repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;make&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;wwhns.html&lt;/code&gt; in a browser&lt;/li&gt;
&lt;li&gt;Copy the &lt;code&gt;WWHNS&lt;/code&gt; link to your bookmark toolbar&lt;/li&gt;
&lt;li&gt;For any page, click on the &lt;code&gt;WWHNS&lt;/code&gt; button in your bookmark toolbar&lt;/li&gt;
&lt;/ul&gt;&lt;h1&gt;To edit the bookmarklet&lt;/h1&gt;

&lt;ul&gt;&lt;li&gt;Fork this git repository&lt;/li&gt;
&lt;li&gt;Edit &lt;code&gt;wwhns.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;make&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Open &lt;code&gt;wwhns.html&lt;/code&gt; in a browser&lt;/li&gt;
&lt;li&gt;Copy the &lt;code&gt;WWHNS&lt;/code&gt; link to your bookmark toolbar&lt;/li&gt;
&lt;li&gt;For any page, click on the &lt;code&gt;WWHNS&lt;/code&gt; button in your bookmark toolbar&lt;/li&gt;
&lt;li&gt;Push the changes back to me.  I&amp;rsquo;d love to see what you do with it!&lt;/li&gt;
&lt;/ul&gt;&lt;h1&gt;License&lt;/h1&gt;

&lt;p&gt;BSD&lt;/p&gt;

&lt;h1&gt;Shoutouts&lt;/h1&gt;

&lt;p&gt;&lt;a href="http://benalman.com/projects/run-jquery-code-bookmarklet/"&gt;Ben Alman&lt;/a&gt;&amp;ndash;For the jQuery bookmarklet HOWTO&lt;br/&gt;&lt;a href="http://twitter.com/#!/ronnieroller"&gt;Ronnie Roller&lt;/a&gt;&amp;ndash;For an awesome &lt;a href="http://api.ihackernews.com/"&gt;HN API&lt;/a&gt;&lt;br/&gt;&lt;a href="https://developer.yahoo.com/yui/compressor/"&gt;YUI Compressor&lt;/a&gt;&amp;ndash;Makes JavaScript small&lt;br/&gt;&lt;a href="http://news.ycombinator.com/"&gt;Hacker News&lt;/a&gt;&amp;ndash;For having comment threads worth reading&lt;/p&gt;</description><link>https://blog.marcua.net/post/3096216094</link><guid>https://blog.marcua.net/post/3096216094</guid><pubDate>Thu, 03 Feb 2011 20:16:00 -0500</pubDate></item><item><title>Comments as content: The medium hinders the message</title><description>&lt;p&gt;When articles were published in hard-copy newspapers, reader response was left to the ultimate in asynchronous communication: letters to the editor for differences of opinion, and corrections when a mistake was discovered.  As brick-and-mortar newspapers moved into the digital realm, the static publishing model initially stuck, albeit with an easier method for correcting mistakes.&lt;/p&gt;

&lt;p&gt;When we digest a story published by a large newspaper, be it in digital or dead tree form, we assign the strongest signal to the content of the article.  In exchange for giving the journalist our full attention, we expect that the news organization has put significant effort to researching, writing, and editing the story.  Newspapers rarely put uncurated content front-and-center because they trust their own vetted content more, and in part to justify the expense that went into their refined content.&lt;/p&gt;

&lt;p&gt;Along the path from single-source hard copies of stories to the everyone-gets-a-voice world of microblogging, we got comments.  Blogs frequently display discussion threads following each entry, and sites such as Digg, Reddit, and Hacker News provide us with another forum to chat with the community about articles we find interesting.&lt;/p&gt;

&lt;p&gt;Many blogging outfits, including those run by organizations as large as the New York Times, now employ comment systems beyond their purpose as a meta-article discussion medium.  One often finds blog entries that end with prompts such as &amp;ldquo;What has your experience been?  Let us know in the comments!&amp;rdquo;  Or &amp;ldquo;If you know more about this late-breaking story, leave a comment below!&amp;rdquo;  In the same way that live-blogging has taken blog entries from static entities to up-to-the-minute documents, comments sometimes become a necessary part of the stories which they adjoin.  Slashdot sometimes takes this one step further: when a &lt;a href="http://news.slashdot.org/article.pl?sid=08/11/05/134208"&gt;topic of wide interest&lt;/a&gt; appears, the editors open an essentially content-free story with the express purpose of leaving a place for comments.&lt;/p&gt;

&lt;p&gt;If comments can sometimes be the content of a story, then why are they always relegated to the bottom of the story?  What is the user interface for displaying articles where readers are assigned a reporter&amp;rsquo;s role?  How do we assign prominence to the most informative fragments of story and user-generated content?  Flickr and Facebook have figured this out to some extent&amp;ndash;you can annotate photos and witness the result &lt;em&gt;in situ&lt;/em&gt;.  Youtube lets users &lt;a href="http://www.youtube.com/t/annotations_about"&gt;embed annotations in videos&lt;/a&gt;.  How do we apply this concept to text media?  What tools already do this, and what ideas do you have for improvement?  Leave your comment below!&lt;/p&gt;</description><link>https://blog.marcua.net/post/680148158</link><guid>https://blog.marcua.net/post/680148158</guid><pubDate>Wed, 09 Jun 2010 09:33:40 -0400</pubDate></item><item><title>Twitter Papers at the WWW 2010 Conference</title><description>&lt;p&gt;This past week at WWW 2010 has resulted in quite the spread of  Twitter papers.  Topic included systems, novel uses, and studies of  tweets and users.  I’ve made an attempt to provide a taste of each  paper/presentation I experienced.  Feel free to comment if I missed  anything!&lt;/p&gt;
&lt;p&gt;At the web science conference on Monday, we saw two presentations on  Twitter.  &lt;a href="http://www.devingaffney.com/"&gt;Devin  Gaffney&lt;/a&gt; presented a paper entitled &lt;a href="http://journal.webscience.org/295/2/websci10_submission_6.pdf"&gt;#iranElection:  quantifying online activism&lt;/a&gt;.  Devin collected around 766,000 worth  of tweets across nearly 74,000 users around the time of the  #iranElection.  He first showed that there was a spike in signups around  the time that #iranElection became a trending topic with the seeming  purpose of adding #iranElection updates to the tweet stream.  A retweet  analysis showed that as more users became interested in the  #iranElection, users with influence (as measured by follower count or  retweet count) lost influence relative to the entirety of relevant  users.&lt;/p&gt;
&lt;p&gt;Panagiotis Metaxas presented the other paper at the Web Science  workshop, entitled &lt;a href="http://journal.webscience.org/317/2/websci10_submission_89.pdf"&gt;From  Obscurity to Prominence in Minutes: Political Speech and Real-Time  Search&lt;/a&gt;.  In this work, the authors studied the recent Massachusetts  special election between Scott Brown and Martha Coakley through the lens  of Twitter.  Metaxas presented the notion of twitterbombing, where,  similar to googlebombing, sneaky twitter users abuse various mechanisms  to appear in the relatively prominent real-time search results that  search engines have recently added.  32% of tweets were repeated several  times by the same account, presumably in an attempt to increase the  ranking of their tweets’ content by naive real-time ranking algorithms.   The authors described how they identified Republicans and Democrats  through follower and retweet analysis, and showed an example where  twitterbombing was used to lead searchers to a page designed to dissuade  voters from voting for Coakley.&lt;/p&gt;
&lt;p&gt;Next, at the Linked Data Workshop, &lt;a href="http://fortytwo.net/"&gt;Joshua  Shinavier&lt;/a&gt; presented &lt;a href="http://events.linkeddata.org/ldow2010/papers/ldow2010_paper16.pdf"&gt;Real-time  #SemanticWeb in &amp;lt;=140 characters&lt;/a&gt;.  Joshua’s goal is to extract  structured data from tweets using his &lt;a href="http://twitlogic.fortytwo.net/"&gt;TwitLogic&lt;/a&gt; system.  Instead of extracting data from all tweets, Joshua’s system  looks for tweets that follow a format called &lt;a href="http://microformats.org/wiki/microblogging-nanoformats"&gt;nanotations&lt;/a&gt; and are identified by hashtags.  It is unclear what sort of adoption  this format will see, but the value in such annotations (as well as  those in the up-and-coming twitter &lt;a href="http://groups.google.com/group/twitter-api-announce/browse_thread/thread/fa5da2608865453"&gt;annotation&lt;/a&gt; system) is that with precise structure, the extracted data can be a far  more rich data source for the linked data web.&lt;/p&gt;
&lt;p&gt;Moving into the main WWW2010 presentation tracks, Yi Chang and his  colleagues at Yahoo! presented &lt;a href="http://labs.yahoo.com/node/354"&gt;Time  is of the essence: Improving Recency Ranking using Twitter Data&lt;/a&gt;,  which studied how to turn relevant and popular tweets into search  results.  Crawling for real-time content is typically resource-intensive  on search engines which have to frequently revisit many sources of such  content, and belabors the servers of the content providers if recrawled  too frequently.  The authors of this paper studied how to use streaming  Twitter results to discover URLs and avoid having to actively recrawl  for new content.  In a 5-hour sampling of tweets, Chang and team found  1M URLs, and after cleaning these results to avoid spam, adult content,  or self-promoting tweets, approximately 5.9% of the URLs remained.  From  here, the authors describe how various features including tweet  content, retweets, and social network topology can be used to rank the  discovered URLs.  Finally, the authors found that they can use the tweet  text describing a URL in much the same way that search engines  traditionally use the contents of anchor text linking to a webpage to  index discovered URLs.&lt;/p&gt;
&lt;p&gt;Next, &lt;a href="http://an.kaist.ac.kr/%7Ehaewoon/"&gt;Haewoon  Kwak&lt;/a&gt; presented &lt;a href="http://an.kaist.ac.kr/%7Ehaewoon/papers/2010-www-twitter.pdf"&gt;What  is Twitter: Social Network or News Media?&lt;/a&gt; One impressive  contribution of this work is the &lt;a href="http://an.kaist.ac.kr/traces/WWW2010.html"&gt;large  dataset&lt;/a&gt; that the authors collected, featuring 41.7M user profiles,  1.47B following relations, 4262 trending topics, and 106M tweets  mentioning these trending topics.  The authors presented some  interesting network structure statistics.  Twitter has an asymmetric  following model, and only 22% of user pairings are symmetric, compared  to a symmetric follower rate of around 70-85% on other asymmetric social  networks.  This should not suggest that Twitter is more a news medium  than a social network.  For example, Twitter may be a different medium  to different users, and the high rate of updates might discourage users  from following everyone that follows them.  Other interesting factoids  presented by the authors included that 96% of retweet trees are of  height 1, 35% of retweets occur within 10 minutes of the original tweet,  and 55% occur within 1 hour.&lt;/p&gt;
&lt;p&gt;Finally, Takeshi Sakaki presented &lt;a href="http://ymatsuo.com/papers/www2010.pdf"&gt;Earthquake Shakes Twitter  Users:&lt;br/&gt; Real-time Event Detection by Social Sensors&lt;/a&gt;, which described how to  build an earthquake detection and location system with the tweetstream  as its input.  The authors passed all tweets with the term ‘earthquake’  or ’shaking’ to a classifier, and showed which  features of tweets  helped classify positive and negative instances of tweets relating to an  earthquake.  They then built a temporal model to identify when the  earthquake-positive tweets strayed from the norm.  Finally, they  compared several spatial methods for using geotagged tweets to determine  the epicenter of an earthquake.  The authors point out one weakness in  their location logic: their algorithms have a hard time identifying an  accurate location of earthquakes which have an epicenter in the ocean.&lt;/p&gt;
&lt;p&gt;A summary of the Twitter analysis papers would not be complete  without a hat tip to &lt;a href="http://www.danah.org/"&gt;danah  boyd&lt;/a&gt;, who gave a wonderful keynote which touched on the  intersection of big data analysis and privacy.  boyd pushed researchers  with access to content outside of the context in which it was created,  such as a message sent to a friend or a tweet directed at a tight social  network, to be ethical with their handling of that data.  Doing her  talk  justice would take a blog post of its own, so I will just mention  one point that danah made toward the beginning of her talk.  When  confronted with a large dataset, big data hackers sometimes equate  aggregate statistics to facts that need not be backed or understood by  social models, and sometimes fail to think about the limitations of  their population samples.  Little things matter: sampling 5% of all  tweets biases toward users that tweet more frequently.  Similarly,  sampling 5% of twitter accounts does not properly account for people  with multiple accounts/identities or lurkers with no accounts.  Social  streams are a wonderful data source for data scientists, but we should  ford the streams responsibly.&lt;/p&gt;</description><link>https://blog.marcua.net/post/566480920</link><guid>https://blog.marcua.net/post/566480920</guid><pubDate>Sun, 02 May 2010 16:54:25 -0400</pubDate></item><item><title>256 colors in your xterm!</title><description>&lt;p&gt;Have you ever used emacs or vim from the command line in GNU/Linux and been offended by the horrible color scheme you saw?  I&amp;rsquo;m embarrassed to admit that I&amp;rsquo;ve been through tons of vim color schemes and have never been able to understand why the colors did not show up as desired.&lt;/p&gt;

&lt;p&gt;Yang&amp;rsquo;s &lt;a href="http://yz.mit.edu/wp/2010/03/26/256-color-xterm/"&gt;blog post&lt;/a&gt; has changed my life.  See &lt;a href="http://www.frexx.de/xterm-256-notes/"&gt;here&lt;/a&gt; for more notes on which color schemes work well for vim.  I&amp;rsquo;ve been enjoying &lt;a href="http://www.vim.org/scripts/script.php?script_id=2465"&gt;wombat256&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On Ubuntu on my laptop, I added &amp;ldquo;export TERM=xterm-256color&amp;rdquo; to the end of my &amp;ldquo;~/.bashrc&amp;rdquo;&amp;ndash;You will have to re-open another terminal to see the results after saving your bashrc, or type &amp;ldquo;source ~/.bashrc&amp;rdquo; in your current terminal if you&amp;rsquo;re too antsy.&lt;/p&gt;</description><link>https://blog.marcua.net/post/481943878</link><guid>https://blog.marcua.net/post/481943878</guid><pubDate>Mon, 29 Mar 2010 12:25:00 -0400</pubDate></item></channel></rss>
