NeoGAF Meme Viewer
by Andres on March 20, 2013
As usual, I create a blog or whatever, and eventually I get distracted and I disappear for a few months. In the time since my last post, I’ve been kept rather busy not only by work, but by the rest of life.
In any case, this post isn’t about any of that. That may, or may not, come later.
Earlier today, in lieu of lamenting with my friends over the seemingly imminent ending of the Miami Heat’s winning-streak, I opted to browse through my Twitter feed, and I spotted this one from an old friend:
It had been several months since I’d even started to look into making my first extension as part of the B/S/T Feedback project I started several months ago. However, it occurred to me that Jonny’s dilemma up there would only take two or three lines of jQuery to resolve.
So, I opened the laptop and tried it, and it worked! In the most hacky, kludgy way possible, but it worked.
I’ve since cleaned it up a smidge, added all the niceties like a basic browser icon to toggle the filter on and off, and have published it. I’m sure there will be something or other I’ll have to fix, or want to add, but for now, it’s nice to get from idea to execution in short order.
If you happen to share Jonny’s plight, give NeoGAF Meme Viewer a whirl, and let me know about it.
I’m enjoying Scala (Surprise!)
by Andres on November 1, 2012
I’ve never been a fan of Java.
I grew up with BASIC and C in the early 90s, so my initial foray into the world of programming was within the imperative/procedural style. Aside from a few brief stints in Pascal (and eventually Delphi), I eventually stumbled my way into object-oriented stuff with C++. While it took a while for me to completely understand some of the concepts (oh pointers, I strangely miss you sometimes), I eventually did end up preferring it to the old procedural ways, particularly for larger projects. My only issue was the verbosity of it all. Well, that and the fact that C++ was so flexible you had to be careful that you didn’t tie all that handy rope into a noose around your neck.
Eventually, Java came along. Maybe it was because it was still early days for the language (and the JVM). Maybe it was because I resented memory allocation being wrested from my grasp just as I was getting comfortable with it. Maybe it was a lot of things. Ultimately though, I think I just felt like it was a hamstrung, slow version of C++. It left a bad taste in my mouth, and I didn’t revisit it in any real way until I was forced to in a university course. By that time, I had made my peace with the idea that most modern languages looked awfully similar to C++, and that managing memory was largely a thing of the past.
However, my exposure to so many different languages taught me to be slightly distrustful of any language that makes a simple Hello World application look like this:
public class HelloWorld {
public static void main (String[] args) {
System.out.println("Hello, world!");
}
}
It’s an old complaint, and one I know a lot of old pros are tired of hearing, but it’s no less valid for it. Over the years I’ve come to feel that verbosity does not always equate to clarity. More lines of code just means more busy work when I’m writing, and more unimportant crud to sift through to find the important bits when I’m going through someone else’s code. A lot of the design decisions inherent to Java seem to just compound this problem. I’m not exactly looking for the all-encompassing uber-flexibility of Perl here, but I also don’t see the benefit of the completely opposite approach.
Scala does a pretty wonderful job of taking Java and cutting to the chase, without sacrificing a lot of the great reasons to use Java in the first place. I haven’t even touched on the even more interesting functional programming side of the language. And yet, I was enjoying myself even before Scala started to remind me of my brief time with Haskell. Even if I only ever stuck to the OOP side, Scala won me over already by addressing my main problem with Java. So, despite feeling like I’ve been thrown into the deep end by work forcing me into completely unfamiliar territory, I’m enjoying my time with Scala so far.
I mean, who doesn’t get tingly at the thought of never having to write accessor methods again?
Finally?
by Andres on October 15, 2012
So, the newish bigwigs are saying we should be focusing on Java and Scala for everything.
So be it, I guess. I wonder how much, if any, of the concurrency side we’ll be using. In any case, I have a lot of Java to refresh on, and an entire new language to grok.
Fun times ahead.
What’s wrong with GAF’s feedback?
by Andres on October 9, 2012
A bit of history for the uninitiated
For the past few years, NeoGAF has hosted a Buy/Sell/Trade thread. Other than hosting the singular thread, the site offers no guarantees on any transactions made via the forum. As such, the users took it upon themselves to note feedback for each other.
Eventually, someone had the bright idea to keep track of all the feedback in a public Google Doc. This Google Doc has been updated and maintained manually by some user or another for the past few years now. Last I checked, it boasted entries for well over a thousand people. Over the years, the torch of document maintenance has been passed from trusted user to trusted user. A few times, there’s been some minor drama over who or how the feedback should be maintained*. Thankfully, the hubbub always seems to eventually settle down to some sort of status quo.
That being said, there are definitely some issues with the system as is. Off the top of my head:
Maintenance Is a Chore
Ultimately, someone has to be the one to go through each and every post since the last document update, and check for any feedback left by any user for any user. This is no small task, as evidenced by the rotating door of maintainers that inevitably find that at some point they lack the time to devote to it. Worse still, the workload will only continue to grow as the user base increases over time.
Accuracy
Human error is inevitable. Users leaving feedback sometime misspell names (e.g. Eddie for Ettie) or use commonly accepted nicknames (e.g. KoreanBBQ for KoreanBarbecue). On top of that, you have the issue of the occasional user getting his nickname changed (e.g. Mileena, formerly known as corkscrewblow). Again, the document maintainer already has enough to do, so the simple thing is just to go by whatever the poster said, and to hell with duplicate entries and misspellings.
Now, let’s be clear here: for all of the inherent problems and annoyances with the system as is, it’s been working extremely well. Even after running the document through my importer and running corrections for typos and name changes, I’ve only found issues with about 11% of the entries in the document. And a solid majority of those issues are very minor typos that are completely self-evident to anyone bothering to look up that user’s feedback. It’s a credit to the maintainers in particular that they’ve managed to keep the document as clean as it is.
The other big issue might just be a personal peeve of mine. It simply isn’t user-friendly to have to go and look up the feedback for a user in the document. It’d be nice if the info was more readily apparent while browsing the thread. And god forbid it is one of the small percentage of users with a difficult to discern typo, or who has feedback under a completely different username or nickname that I’m unaware of.
And yet, it works. Every now and then, someone has a bright idea on how to do it better, and there’s some arguments back and forth, but it almost always settles back to what it was, with little (often no) change. Trying to change the whole system obviously doesn’t work, and honestly, even if you could automate the whole thing (and there are third-party services for just this sort of thing), you’d likely lose some things along the way. The ideal would be to provide some tools to help alleviate some of the problems and hopefully provide some nice features for the users that want them.
So, between these things being on my mind and my desire to have something to practice with, I started working on some tools related to solving these issues. My next post will go over the handful of tools I’ve built so far, and what I might work on next.
* Full disclosure: early on, I attempted to get people to funnel feedback posts to a separate thread for a while — big failure.
Let’s get things rolling
by Andres on October 8, 2012
So, I finally started a job where I’d actually be expected to code things. So far, it’s been a couple of months of almost coding things. I’ve had the inklings that I’d need to know everything from Perl to Rails to Zend PHP to jQuery to Drupal to whatever else. The only solid ground that hasn’t moved seems to be a MySQL backend. Woo.
At the very least, I guess I’m learning a lot.
In any case, in between reading a lot and writing a lot of small test snippets, I’ve tried to actually develop a thing or two. A scraper in Perl here, a parser in PHP there, and a jQuery powered Chrome extension later, and I’ve started on something to do with NeoGAF‘s feedback system on their Buy/Trade/Sell threads.
I’ll go over what’s actually done, and what I hope is to come in a later post.

