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.






Anona-what?

January 13, 8:52 p.m. | OpenWeb

Yet another person is harassed by a sleazy business-owner after posting a negative review on Yelp:

http://boingboing.net/2012/01/13/lawsuit-store-owner-tried-to.html

I'm sick of hearing people claim that we need full accountability for the things we say online. While that's an admirable goal in a perfect world, the reality is that we often post things that may be unintentionally dangerous. If it's a company trying to destroy a woman's online reputation or someone posting critiques of the Chinese government, our actions and words online often have consequences that go far beyond what we expect when we post them. 

Some people may be comfortable with authenticating themselves online. That's great. But any service that relies on some degree of personally identifiable information being shared should also offer an option to hide that information, or at least disguise it via a pseudonym. And when authentication is served up via an API, the API itself should offer the same ability to hide information. 

Google+ drew this issue into the spotlight a few months ago when it forbade pseudonyms on the service. However, Facebook is an even more dangerous offender when it comes to this. When you use a Facebook platform application (like Facebook comments or any game or site that uses Facebook auth), you're automatically sharing your identity with that application. No matter what. Anything you post using that application can easily share that identity with the public. 

I'm not sure if the person here used Facebook to connect with Yelp for her account, but I know I do. And that worries me. I know I also use it to post comments on certain sites. To play certain games. Etc.  If I ever posted something that could be dangerous on a site that required Facebook authentication, I would have no way to disguise that post. Which is a problem. I'd suggest that Facebook implement MUCH more granular authentication permissions (something which I happened to do a semester research project about recently). From the users I talked to, people want this kind of control. Something like this Chrome extension would work.

Even if your site isn't using the Facebook API, the solution is simple (even simpler, probably). Sites can continue asking people for their names, but allow an option to hide that from the public. Or do what Twitter does and just let the user post under a handle. Not hard. If your site DOES use the Facebook API (which is totally fine, lots of mine do), then let the user know what information you have, why you have it, and how they can control what you do with it. Give them a "hide this from the public" option too.

I'm sick of people being punished for things they say online. The web lets us be more open and honest with businesses, governments and each other than anything has ever done before; let's not let that go to waste.





Second best

January 11, 12 p.m. | hacking

I am really, really liking Visual Studio. Been working on some Kinect stuff (will post soon!) and it's definitely one of the best IDE's I've ever used. The only one I like more is Xcode.

Definitely improved since the last time I used it. VS6 was sort of awful. Also, I was like 13, so... that could've had something to do with it.