Unbreaking comments on tiny sites and tech blogs

March 24, 1:49 p.m. | thoughts

I'm going to start with a fairly well understood, slightly boring truth here: Comments online are fundamentally broken. Big surprise. It's been the trend of the last few years to say that, and then propose various fixes, like:

  • Facebook commenting
  • Gamified commenting
  • Message board style commenting
  • Commenting with vote up/down systems

...none of which have seemed to measurably fix this problem of comments being fundamentally broken. Sure, with Facebook comments you get less hateful spam, with gamified comments you end up with knee-jerk or funny comments at the top of a post, etc, etc, but very few people are satisfied with these systems, as insight and community are lost in the mix. 

Which, to me, is absolutely ridiculous. If the Internet is supposed to be this revolutionary platform to help people communicate, why the hell can't we figure out how to actually use it for that? It's massively disappointing that you have to either follow a professional or semi-professional blog/news-site/etc or dig massively deep into the stack of boring user-produced crap to get anything resembling decent content.

I've been running StoriTell, a site for anonymous story-sharing, for about a year and a half now. While the quality of the stories themselves have wavered between great and not-so-great, I've been fairly impressed with the comments on the site. Why is that? StoriTell is not a popular site, I'll definitely be the first to admit that, especially looking at the somewhat abysmal traffic lately. This tiny number of users might give it a more community-oriented vibe. Nick Denton realized the same thing at his SXSWi talk on commenters, suggesting that Gawker might create isolated groups of commenters to foster a similar atmosphere. But why does that particular feeling lend itself to better comments, even in stories about controversial topics like abortion and mental disorders

I'm thinking it has something to do with ownership and purpose. People need to feel like the content they provide is giving value to the site as whole, that they own a 'share', so to speak, of the site itself. If people believe their contributions have value, I think you can entice them out of mediocrity. Even if they have completely opposite viewpoints to one another on the subject. Another site that frequently has high-quality discussions is The Verge. They have an excellent forums section which allows people to write their own articles, ask questions, and build community around that. It's encouraging valuable contributions, without just being a "look at these cool gadgets I have" or "should I buy this" type of thing (link to gdgt). Then, every so often, the members of the Verge staff on Twitter (mostly @joshuatopolsky) will post links back to that content, featuring it like they would a news story. The commenters have a feeling that they're helping build this great source of information on a topic. The site's status as sort of a new player in the tech-blog sphere might help this too; people want to be there at the beginning, contributing valuable content to help build up their new favorite tech site.

Vote-up systems don't really help with this; they encourage personal point-gathering for the sake of points rather than contributing to some greater whole. It's less about providing content that is inherently valuable than it is about providing content people agree with. I'd also like to point out that anonymity doesn't have to be sacrificed for the type of ownership I'm talking about here. It's not about having a name attached to an individual piece of content, it's about collectively identifying with a site or section within a site. 

I don't have any specifics for how to build a commenting system that can help enforce this kind of thinking. Right now, these are just general ideas for what works and what doesn't. StoriTell was a great experiment for running a community, but it has fairly limited appeal and, when faced with lots of users, will probably run into the same problems as any other big site. I'd be interested to see how commenting systems mature over the next few years though, and maybe I'll be able to contribute at some point.





Duck Hunt, mini

March 18, 10:08 p.m. | project

I cannot paint to save my life.
I'm a pretty big fan of Duck Hunt. I remember going over to a friend's house down the street when I was five and being totally enamored by the idea of using an actual object (the NES Zapper) to play a video game on a screen. That was some pretty crazy high tech stuff back then. My little-kid mind was intensely amazed.

For my Gadgets project, we were given an 8x8 LED matrix and an Arduino Nano and told to make a game. So, I made Duck Hunt. I took a photoresistor, built an (admittedly terribly-painted) NES Zapper replica out of balsa wood, and wired it up with the matrix, a button, and the Arduino, running this code. Basically, the way this game (and the original Zapper) works is through a light sensor making two different readings of the screen. In the first reading, the entire screen is either on or off, to establish a baseline reading. In the second, it turns it all on or off again, except for the pixels which represent the "target". If there's a difference between the first and second reading, you've hit the duck. There's a pretty good explanation of the whole process here.

This was my first big Arduino project (big meaning: anything that's not basically turning a light on or off based on one other sensor), so the code probably looks terrible to anyone who's spent a lot of time doing embedded systems. I'm a noob, I'll admit it :). But it was definitely lots of fun to put this whole thing together, and see something that I built from components actually working.

My version runs through two modes. The first has just one duck, the second has two. I tried to do the Duck Hunt dog at the end (you know, the one that would mock you when you sucked at the game), but it ended up mostly looking like an alien cause 64 pixels is surprisingly little to work with. Oh well. Enjoy this video of me playing, and please tell me what you think!







ORLY

January 24, 5:39 p.m. | gadgetry

I love Apple earnings call transcripts.

"Cook: We're going to continue to compete with anyone currently shipping tablets."

Oh really? We thought you were going to discontinue the iPad and tout the Grid10 as the best hope for the tablet industry. Thanks for clarifying.





Making robots happy

January 18, 6:07 p.m. | OpenWeb

Machine learning is super-cool. I've spent some free time over the last year trying to write a good way to analyze sentiment on Twitter. I started by picking out positive and negative words, but that didn't work too well, especially without any corpus of positive and negative words to go off of. So, before winter break last semester, I wrote a tool that used a naive Bayesian classifier to do the sentiment analysis.

Which sounds pretty intense if you're not into CS, but it really isn't.

Basically, what it does is look at tweets that people have already categorized as positive or negative to learn from them. It then makes a guess for a new tweet based on how holistically similar it is to those old tweets. There's a lot more to it than that, of course (for the technically-inclined, I took a lot of ideas from this guy's suggestions, which were AWESOME), but that's basically how it works.

So, here's an example. It gets weird data points from time-to-time, but is mostly pretty accurate. I chose to look at SOPA sentiment on Twitter, so I expected pretty negative results.







AirSample

January 14, 3:34 p.m. | project



So, this has been a long time coming. I bought a Kinect over break and wanted to do a little project to mess around with it. AirSample is that little project.

Originally, I was planning to do a synthesizer that created square waves with a frequency that depended on the position of each hand. I actually wrote some new classes for a C# audio library for it to work. It was okay, but ended up crackling really badly and having a terrible response time. C# is just not good for dynamic audio synthesis like that.

After that, I decided to just use samples. I found some samples online from an ARP Solina and decided to run with that. The system works with an arbitrary number of samples (right now, they're hard-coded, but I plan on changing it so it knows what samples to load from an XML file soon). You can move each hand upward to make it louder, or downward to make it softer. Each hand is independent. There is a dead-zone at the bottom of the tracking area (about 1/4 of the total area) which will result in silence. The notes are displayed on the screen, as are the positons of each hand. You can pick your note by moving it to the dead-zone, then to the correct x-coordinate, then moving it upwards out of the dead zone.

I'm thinking about porting this to Processing using the OpenNI and NITE Kinect drivers so I can make it cross platform. As of now, I just wanted to get started with Microsoft's SDK.

I'll be posting the code soon, when it's in a more usable state.