Sunday Selection 2013-05-24

It’s graduate week here at Cornell and over the last few week the Internetz have started to fill up various forms of commencement speeches (and excerpts thereof). It’s also been just over two years since I graduated from college. In keeping with that here are some Selections with the general theme of “Just What The Hell Should I Do With My Life?”. I’ll keep short, though it’s probably not sweet.

Around the Web

Dear Jr Creative, Earn Your Place, You’ll Be Better For It 

I have to admit that I’m only a recent convert to the school of hard work. And while I do think that hard work alone does not necessarily get you to a successful life and career, I also firmly believe that hard work definitely increases your chances.

Daniel Dennett’s seven tools for thinking

As we increasingly live in an information economy and replace manual human labor with machines, thinking will be what we’re paid for. If being good at our jobs means being better thinkers, then we could do worse than to learn from an expert cognitive scientist and philosopher.

Video

Why 30 is not the new 20

The TED blurb about this video says it best: “Contrary to popular belief, your 20s are not a throwaway decade. In this provocative talk, Jay says that just because marriage, work and kids are happening later in life, doesn’t mean you can’t start planning now.”

Spam and user responsibility

Twitter, like any communication medium (physical or electronic) has a spam problem. They’ve been able to mostly keep it under control, but it surfaces every now and then. I was talking to a friend about this recently and he noted that certain kinds of spam are easier to detect than others. For example, a tweet full of suspicious URLs may very well be spam. But is an account that never tweets but follows lots of people a spam account? Part of this is an perception issue. I personally don’t care about being followed by (possibly) spam accounts. I get more annoyed if I get a tweet from one of them. However, I do know people who are really careful about who follows them. For Twitter, the question is how to tell spam tweets and spammers apart from legitimate traffic and users.

Getting users to report spammers is perhaps the first line of defense. If a large enough group of people report an account as a spammer, there’s a high probability that it actually is a spammer. But on the users side, what is my incentive to report an account as spam? Unfortunately, I feel that Twitter’s nature plays against it in this regard. In particular, a spam tweet is much less annoying than a spam email. Tweets and the Twitter stream are, by design, ephemeral and temporary. You see something and a few hours later it’s gone. You’re not expected to read each and every tweet and you’re certainly not expected to reply to everything and everyone (unless you’re  a self-styled social media guru, but that’s another matter altogether). Reporting a spammer is a pretty high overhead activity, especially with the current web interface. As far as I can tell, you can’t directly report a tweet, you have to click on the user image, click on the profile button and only then do you see the option to report spam. If I see a spam tweet, the easiest thing for me to do is shrug my shoulders and move on — it’ll be out of sight and out of mind in a while anyway.

Contrast this with email: I don’t reply to each and every email, but I do read most of it and I reply to a lot. Reading and answering emails (especially if they’re technical in nature) are fairly high load activities and my inbox definitely isn’t as ephemeral as my Twitter stream. Consequently, getting spam in my email inbox is correspondingly more annoying, especially if it’s more sophisticated spam (like a phishing attempt). It’s in my own best interests to report spam so that I have less to deal with in the future. Furthermore Gmail (and I would hope, most email interfaces) make it easy to report spam — generally just one click (two if you need to open a menu first, sometimes there’s a confirmation request).

(Aside: Note that Twitter associates “spam-ness” with the user, while email conventions associate it with the email itself. Objectively the two are isomorphic: the sender of spam message is very likely a spammer and a spammer account very likely sends out mostly spam. I find the difference is interface and convention interesting from an HCI point of view.)

An argument could be made that reporting spam is the users’ best interest, irrespective of quality of interface and immediate overhead. But I wonder if even this argument doesn’t quite work in Twitter’s case. Twitter is, and has always been, a largely public medium. Private accounts exist and you can block followers, but by and large you use Twitter to share everything with everyone. Email by contrast has always been more personal and private. But this means that reporting spam on Twitter is a lot like picking up litter off the street — it is bothersome, and you know that at some level you should do it, but is it really your problem? What’s really in it for you, and if you don’t do it someone else surely will, right? By contrast, spam email is pretty much exactly  like getting junk mail delivered right to your home.

While Twitter’s image as a public space has probably been key to its success, I do believe that it’s hard to get people interested in taking care of something they don’t have any ownership over (as far as I can tell the only way to pay for Twitter is to buy ads and it’s becoming increasingly harder to hook up non-official clients). To its credit, I haven’t found spam to be much of a problem — most days I don’t see (or at least don’t notice) any spam at all. Whatever they’re doing, it seems to be working. I don’t have any suggestions, just the above ruminations. But if you’re in the process of creating (or interacting with) any sort of user platform, it’s worth spending some time thinking about how to deal with spam.

Sunday Selection 2013-05-05

Happy Cinco de Mayo and Orthodox Easter everyone. Last week has been a bit quiet as far as reading is concerned. I have a hefty backlog in my RSS that probably won’t get cleared till next week. But here’s the pick of what I did read and discover:

Around the Web

10 Rules of  a Zen Programmer I’ve been doing meditation on a regular basis over the past few weeks and it’s been an interesting experience. I definitely feel calmer throughout the day and it’s getting easier to sit down and focus on tasks I would normally procrastinate on. This article agrees closely with both what I’ve been experiencing while meditating and as a programmer. I’m not a Zen practitioner, but you don’t have to be one to use the information this article provides.

I’m still here: back online after a year without the Internet This is the last (I think) in a series of articles by a journalist who spent a year offline. It’s an interesting read, though it ends on a very weak note. The author’s experience seems to agree with my own views on the matter: the Internet (and technology in general) is a tool and it’s up to us to use it best. Using it, or not using, is not suddenly going to make us a better or worse person. It’s up to us to use these tools according to our desires and help realize our potential.

Star Wars: Online review culture is dotted with black holes of bad taste This articles looks at the rise of popular review sites (focusing on Yelp and Amazon) and discusses how the reviews on these sites are often less then helpful to the point of negating the importance and usefulness of a review. There’s research going on at Cornell on better analyzing online reviews and review systems so this article was particularly interesting to me. While there’s something to be said for the usefulness of multiple opinions from different viewpoints, sometimes you just want an authoritative answer from an expert about the quality of a service and product, and that’s increasingly difficult to come by.

Software

Tomato.es As the end of the semester approaches and the amount of stuff I have to get done explodes, I’ve been starting to use the Pomodoro technique to keep on top of things. Tomato.es is a simple timer that counts off 25-minutes intervals. If you sign in using Twitter or Github, you can keep a record of what you’ve been doing in those intervals.

Rust to OCaml via FizzBuzz

Last month fellow PL grad student Lindsey Kuper wrote a post about the Rust programming language and used the FizzBuzz problem as a running example to demonstrate Rust’s pattern matching features. While reading the post what was struck me was the resemblance to the OCaml language. After reading the post I sat down and ported Lindsey’s code to OCaml. The resulting code is on Github as a gist, feel free to take a look and fork away.

Lindsey’s Rust code and my OCaml code look practically identical (modulo syntactic differences like braces and semicolons). Both languages seem to support similar basic types and matching on them. I haven’t looked into Rust into any detail, but it seems like an interesting language. I’ve been using OCaml a fair amount over the past few months and I’ve come to miss its type system and pattern matching when working in other languages. I’m looking forward to seeing those features in a systems programming language and am particularly curious about how it will interact with an object syntax. There’s a big tutorial with lots of interesting stuff, so I’m looking forward to more exploring.

For your convenience, here’s the OCaml code: