Matt Hackmann

MattHackmann

The thoughts and goings-on of some programmer dad.

Star Trek: 25th Anniversary - A Retro Game Review

Sometime in the mid 90s (I'm inclined to say 1996), garage sale-ing was a popular past time for middle class Americans. It might still be, but I haven't been in forever. Seems like it'd be fun. But, I digress.

As stated, somewhere in (probably) 1996, we hit up a garage sale a few blocks up from our house. To my kid mind, it was probably the greatest garage sale ever, for there was a veritable treasure trove of old NES games. We wound up leaving that garage sale with three games (and some extra cases), one was Gauntlet II, one was some other game I can't remember, and the third was Star Trek: 25th Anniversary. I grew up on a steady diet of Next Generation growing up, but somehow I was aware of what the original series was and the characters in it. Granted, anything with the name Star Trek in it had to be cool, so I was excited.

And enjoy it I did. It became one of the very few games I played to completion on our old machine, a fact that I was proud of at the time. So, as I've been slowly watching TOS at the behest of my boss boss boss, I remembered this game and the feeling of enjoying it quite much. A quick trip to eBay, and I found not only a copy, but a copy with box and manual. That's a big deal for one who has the tendencies of a collector. For once, though, I actually played the game instead of let it sit and collect dust. And now that I'm done with my long ass intro, the review.

Continue Reading

2013 Anime Boys Bracket - A Postmortem

Today wound up the anime boys bracket I ran as a precursor to the big girls bracket, testing out some new rules and a much needed overhaul for the administrative side. All in all, it was a roaring success.

Code Changes

On the whole, I had developed out the system to be fairly robust on the user facing side by the end of the last bracket. The only real issue remaining there was that the bracket overview was a set of enormous images. This year I fixed that by rendering everything client side as a standard page, with a tiny bit of interactivity sprinkled in (that's what I linked above). The real work was done on the backend, moving all the administrative code into the model/controllers and out of CLI scripts I had quickly hammered out. That part was an absolute godsend because all I had to do was login and click "advance bracket". Granted, this could be done on a cron job, but I have to be present to write the recap post anyways. Also, there were almost no technological hiccups this year which made everything so much less stressful.

Curbing Abuse

Last year, there were some groups of users hell bent on getting their character voted in no matter the cost. Because of the rush I was in to get the code out the door, the system was pretty easy to get around in terms of flooding votes. All votes were tied to IP, so you could either get friends to help, go to the library and vote again, or just power cycle your phone. Because everything was IP based, I can't say how much abuse there was, but I suspect there was a fair amount.

This year, everything was tied to reddit user accounts, using OAuth for authentication. A user would have to have a valid account and that account needed to be at least a month old. I still recorded IPs with the registrations to keep track of multiple users under a single IP. Out of the 660 users who voted, only about a dozen had more than one user to an IP and never more than two. So, another big win.

Stats

In all, 19841 votes were cast and daily views (seen above) were in the hundreds per day. This really doesn't even hold a candle to the bracket last year which had ~264000 votes and thousands of views per day. Now, the vote thing can be partially attributed to the above abuse but also the fact that that bracket ran a lot longer. It was 256 characters as opposed to 64. Still, I'm pleased with the turnout. Most voting happend at 5a CDT at 11% of all votes, 6a came in second with 7%, and 2p and 3p were tied for third with 5%. 3a was the quietest time at 2%.

In all, running this bracket was pretty stress free and very much enjoyable. Granted, I wasn't totally invested being a heterosexual male. But still, everybody else seemed to enjoy it as well and what shit slinging there was was conducted in a civil manner.

I'm not so optimistic for the girls bracket which starts in three weeks...

Edge Cases

I'm grasping at straws on what I should post, especially given that I have thirty minutes to write something. I thought I was doing well by actually having a post whereas my dear sweet mother had not, but a quick check reveals that she's on top of her game, probably with quality.

Browsing through my pictures folder, I came across a few things involving redditbooru's reverse image search. At this point, the thing is an essential tool for the /r/awwnime sub, and when it doesn't work, I get notified. I've mentioned before that the image analysis is entirely color based, no edge or corner detection or anything like that. So, when somebody brings up something and my human mind is all "huh, it seems like that should have matched", I'm invariably sent down a rabbit hole of figuring shit out.

This was the first one I had to deeply investigate. The one on the left was the original, repost on the right. It should be noted that the right picture was also animated. The images are squashed because all images are resized to 256x256 to help normalize things, especially useful for taking into account resized pictures. But, the image search failed to pick up on this for a couple reasons: A) the gif is ever so slightly brighter, probably due to the color quantization. Actually, that's really the only thing. The ever so slight facial expression difference would almost certainly be picked up if the color space was the same.

We had some discussion on the thread about whether testing against greyscale would be any help, but the difference was enough that it didn't bring the matches any closer.

This one was fun. The above picture is the original, the repost I have no idea where it is, but I have some explanation images.

The left side in this case is the repost and you can tell that there are some slight differences in both form and colors, certainly enough to throw off the image search. What I had trouble wrapping my mind around was that these were clearly two different images, but which one was the original and why was there one slightly different.

Turns out, the slightly shittier left version (not saying it's shitty, it's certainly kicking my ass and most of my other body parts at art) was somebody copying the original in an attempt to improve their art skills.

That's cool. I've been there too.

Novels, Novels, Novels

I thought I'd post today about what novels I am currently reading. I’ll also include the read-alouds I'm doing with the four hundred college kids since I am actually reading those.

School Read Alouds:

A Presentation on Web Development at LinkedIn (for Full Sail)

Personal Reading:

Attack on Titan Game of Thrones Puella Magi Oriko Magica

Books I've Finished Reading:

Boys of Summer (an unpublished novel written by my old boss, good shit)

So that’s what's in piles around the house. What I'm really missing right now is a good, solid nap. The only sleeping I do is about five hours overnight and my daily nap and that makes me sad. I miss those toddler/preschool/teenager days of sleeping till noon.

What about you – sleeping well?

Are the robots getting smarter?

I was going to talk about how I used nodejs to move redditbooru off of crontab and prevent crazy CPU spikes I was seeing, but then I received this crazy recruiter email that I'm still wrapping my mind around. Ever since I made the jump to Winnercomm, I've been bombarded by a goodly number of people trying to recruit me every month. Since moving to the Valley, nothing's changed except now the companies are ones I've heard of. But today... I received perhaps one of the more bizarre ones I've seen yet:

SUBJECT: You're an anime fan - I am Monica w/ [Redacted] :)

Hi Matt,

I am Monica, a community manager at [Redacted], a platform for finding companies that fit you. I saw that you're an anime fan-- what are your favorite shows? Are you watching anything good right now? I just finished watching Free! and really enjoyed it.

Also I saw that you worked at LinkedIn and did web development on the LinkedIn profile pages, emails, and horizontal JS framework migration efforts. That’s awesome! But, if you are ready for something new (along with a 25%+ salary bump) we know that JobVite needs help doing JS development along with Java backend services development. You may not have direct experience with that but I saw that you were endorsed for Java on LinkedIn and I thought it would be worth asking. :)

[Redacted corporate shill because they don't get free advertisement from me]

If I bothered you and you don't want to be contacted in the future, let me know and I will make sure we don't reach out again. I will also be happy to say I am sorry with a beer (we are partial to porters) or a coffee (black!) :)

This has all the hallmarks of being both a handwritten letter and also one generated by a cold and unfeeling robot (though, being the Bay Area, probably a sexy one).

So it opens up by declaring I am an anime fan, not something like "I see that you're an anime fan", just "YOU ARE ANIME FAN!" This is not untrue, but probably the oddest way to open a recruiting email I've yet seen. I had originally written a sentence here about how people would know I like anime (blog/reddit account), but it's essentially plastered all over my LinkedIn profile. Still, stranger than the fact that anime was the opener was the fact that a super recent show was mentioned (Free! just wrapped its twelve episode run last Thursday).

Okay, one point for not being a bot. But that all comes into question with the first sentence of paragraph two where basically every word is lifted right out of my profile. Verbatim. That's super bot like (or incredibly lazy). The rest of the paragraph is too well crafted to be a bot, especially the mention of the Java endorsement (which has a story behind it that I find rather humorous).

The damning piece of evidence against this being a robot (outside of the fact that it was obviously written by a human), is that GMail was kind enough to link to her Google+ account in the right rail. And, I must say, I like what I see. If what she's saying about anime and the various other nerd type things she posts on her... whatever Google+ calls a "wall"... are true, perhaps I should take her up on that beer/coffee offer.

That date will have nothing to do with future employment.