Fighting with Algorithms

October 23rd, 2011

When I was young, whenever me and my brother would play video games and either of us would lose, we’d immediately accuse the game itself of cheating. Most of the time this was just us expressing our frustrations, but sometimes game creators give their AI all-knowing powers, which can seem supernatural and unfair. Eventually, after playing a game long enough, I’d start to predict the AI’s behavior and play it against itself. No program is omniscient, because it can’t truly understand what I, the user, am thinking.

I’m noticing lately that a lot of the services I use online are starting to cheat me out of what I wanted. It is getting to the point where a good third of my Google searches return results for things I did not search for. They’re close, sure, but that extra keyword or seemingly misspelled word was intentional. It used to be that the “did you mean” link at the top was as far as Google would go to manipulating the keywords themselves, time passed and they started sending me straight there if my search yielded no results, then later they started sending me straight to the alternative results with a reverse “did you mean” link to my actual results. Now they oftentimes they don’t even let me know they’re selectively changing my results.

Still, I could always add a + in front of keywords. Like the AI in games I’d play, I’m manipulating the system to get what I want. This is exactly what Google shouldn’t want me to do, I’m not playing a game, I’m searching for something, I’m supposed to get exactly what I want with the least amount of work. Recently, in their ongoing fight to give me less relevant results, they “deprecated” the + symbol, encouraging the use of double quotes instead.

Facebook is possibly the most guilty of this problem. It is best expressed in this TED Talk by Eli Pariser. In the video he talks about how friends with differing opinions from him slowly disappeared from his news feed, even though he didn’t specifically unsubscribe from them. I’m aware of this effect, so I try to visit profiles of friends who I don’t want to disappear. Facebook’s ability to predict what I want to read is pretty good, but it is flawed enough that I wouldn’t want it to make decisions for me, but it does anyway.

I know why Google and Facebook do this. They are constantly testing the success of their services and constantly trying to improve these metrics. These results undoubtedly show things like, if a user misspells a word in a search they are more likely to find what they are looking for if Google automatically corrects their spelling. This comes at the expense of the minority, who intended to search for the misspelled word, or hear the opinions of people they don’t agree with.

Basically, I want services like this should stop making implicit assumptions about my explicit interactions. No matter how advanced their ability to predict my needs are, it can never be perfect. In the end I searched for what I searched for, I subscribed to friends that I want to hear from. Google could, for example, give me the option to disable these kinds of presumptions. Facebook could still prioritize friends who it thinks I am interested in, but limit this to a certain number of users (which are clearly identified) so I can skip past its predictions and start seeing news from all my friends instead of just some of them.

A predictive algorithm is ultimately only as good as the data it has, and there is never enough data. This problem should be assumed to exist, even when it seems like it doesn’t, and accounted for in the UI design of services like Google and Facebook.

…and we're back.

December 4th, 2010

So, this blog was located on a shared host, and one guy on the host had the wrong version of some software, so one thing leads to another. and a script kiddie to replaces the index.php of this blog. I’ve moved to another host (a vpn), and it looks like I’ve got everything working now. Sorry for any confusion, it turns out configuring wordpress on a temporary domain configures it permanently for that domain, leading to some interesting problems. I think it might be time for a change, maybe I should drop wordpress as well.

EDIT: Looks like my email has been down for a while, the MX record was invalid. It should be working but it will take a bit longer to propagate.

actionjson 1.1

November 11th, 2010

There’s only one real change — support for whitespace. I was under the wrong impression strict JSON didn’t allow whitespace. Considering how much time I spent ensuring 100% compatibility, I feel pretty silly.

Download actionjson 1.1 here

Broken for 5 years

May 26th, 2009

Almost forgot, yesterday was the fifth anniversery of the day I registered To celebrate, I renewed it for another 5 years!

Some combined stats for and over the full five years:

  • Page hits: 5.6 million
  • Data transferred: 1684 GB

I like how high it seems but it’s not really that high when you remember this is over 5 years. It’s roughly 2 page hits and .65 MB downloaded per minute. Feel free to be impressed anyway though.

Update: My guide here is quickly becoming outdated. See what Ben has to say in the comment section.

I really love Opera. It was one of the pieces of software I felt bad about leaving behind during my switch to Linux. Unfortunately on Linux it ran much slower and looked awful, me being a Gnome/GTK kind of guy, and Opera using Qt3.

Well, Opera seems to have gotten some speed boosts lately, plus there’s this project called qgtkstyle which makes Qt4 applications look like GTK applications. I figured out how to combine all this to make Opera integrate pretty well with the visual style I’m using. Here’s how I pulled it off.

Install checkinstall.

$ sudo apt-get install checkinstall

Install qgtkstyle.

See this guide for any details on packages you may need to compile the source.

$ mkdir qgtkstyle-0.1~custom
$ cd qgtkstyle-0.1~custom
$ svn co svn:// .
$ qmake && make
$ sudo checkinstall make install

Install Opera 9.60 Beta (Snapshot 2436).

The only apparent version of Opera that uses shared libraries, rather than statically-linked versions is available here. Download this version. It’s a beta of 9.60 (9.62 being the most current version as of this writing), but I haven’t really had any problems with it

Some visual improvements.

Start Opera. The titlebar should look like a GTK toolbar. Go to Tools->Appearance->Skin, change the color scheme to “System color scheme”. You can try changing the skin to “Qt Native”, but I think it looks awful, so I’m sticking with Opera’s standard theme. Finally, go to Tools->Preferences->Web Pages, and change the normal font to a more reasonable size (14 looks pretty nice on my computer). Do the same for the monospace font, and you’re done!

This is ultimately a hack, just out there for the impatient like me. Hopefully the Opera people will figure out whatever problem is causing them not to used shared libraries with Qt, and hopefully they’ll do it around the time next version of Qt arrives that includes qgtkstyle, making all of this obsolete.

Large Hadron Collider Apocalypse

September 11th, 2008

To find out if the Large Hadron Collider has destroyed you and everyone you love, be sure to visit

The site comes with an atom feed for those inclined.

Final Fantasy V

August 24th, 2008

So yeah, I’ve been on an old-school SNES RPG kick lately. I was gonna play Dragon Quest VI, but apparently no full translation exists. Unable to just not play anything, I decided to play Final Fantasy V. Like Dragon Quest V, it wasn’t released in the US at a time I would’ve cared. I was very skeptical of the game, since my love for the series had long-since faded away after playing VIII, X, and Tactics Advance. I disliked all three of them, but then again I’m usually in the minority when it comes to Final Fantasy (excluding VII).

Anyway, despite my bias, Final Fantasy V grew on me quickly. The story is standard Square BS, but it’s still done very well. As always they manage to create some pretty good bad guys and interesting worlds. (Is that the difference between Square and Enix RPGs? Square makes great bad guys, Enix makes great good guys?) Playing this one didn’t change my life, it felt like any other Square RPG, but it was fun. There’s a heavy focus on a job system in the game, something I usually don’t like, but that grew on me too. It did extremely well in one area I despise about modern RPGs, you don’t suffer for your mistakes.

When you pick a character’s job you aren’t leaning their stats in one direction or the other, forcing say, your magic guy to forever suck at anything else. In other RPGs where you can’t choose a class there’s often some way of permanently screwing with their stats anyway. And there’s the always loved, “I devoted all my time towards these 3/4 characters, ignoring the rest, and now its come back to bite me in the ass since I am forced to use my neglected characters at the hardest part of the game”. In Final Fantasy V the characters are essentially blank slates, allowing them to be taken in any direction, and more importantly, experimenting and changing that direction is painless. You don’t really lose anything if you make a bad decision because it only gains your character abilities and bonuses.

So, yeah, Final Fantasy V is another great SNES RPG. It wasn’t perfect, but it was fun and reminded me why I liked Square RPGs in the first place. It’s been re-released in English, but I played the RPGe-translated SNES version.


June 10th, 2008

I’ve been so busy I haven’t blogged much lately, due to a large number of factors, the most important of which is that I am now an intern at friggin’ Google. I’m really not sure what I’m allowed to say and not say (and besides I never considered this blog to be about my personal life anyway), but suffice to say Google is seriously cool. Especially to a poor college student who’s never been to the west coast. I’ll be programming again (yay!) something I don’t do much of in college because college is silly, so hopefully that’ll produce more topics for this blog. Assuming Google is cool with that I guess?

I reviewed a boatload of Linux media players a few weeks ago and the consensus was they all either lack key features, or were meant for KDE.

Anyway, I started following Banshee, which I had tried before but left me unimpressed. Recently though, the Banshee people went all out in improving the player for its 1.0 release. It’s got everything I need, except a file browser, but it’s odd little file system queue feature does the trick. It looks fantastic, and most of its unnecessary features can be disabled because they’re plugins.

They’ve just officially released Banshee 1.0 yesterday. Unless you’re perfectly content with Amarok, try Banshee, it’s probably better than what you’re using.