September 22, 2015

Electric Eye - The Post Postmortem

If you haven't read the Netflix tech blog yet today, you might want to wander over there before reading this post.  Yep, the project I created and am acting as lead on at Netflix is called Electric Eye.

The project started ~6 months ago as a one-off experiment and has exploded beyond anything I thought could happen because the damned thing kept working even when I thought it wouldn't.  It has repeatedly triggered my Impostor Syndrome, making it ramp up to 11 from time to time, because while I had to test computer vision projects before, and had even written a few, I felt that I was at sub-novice level for most of what I've been doing.

I don't want to talk about the project in this post, though.  I would like to talk about why this post was written the way that it was.

First, you may be asking why there isn't any code yet.  Well, we've been working with legal on the code release.  Almost all of the code is going to be open sourced except perhaps one item that I can't talk about yet and some code to hook this into our backend for test reporting.  However, that will include my highly optimized frame transformation system, all of the CV and audio DSP helpers I've developed, and possibly ~25 full CV test cases.  There's still some refactoring and code cleanup to be done, but I'd expect a code release either late next spring or summer.

Second, you may be wondering why I link to libraries and, specifically, certain functions in the libraries.  This is actually a direct result of interactions with a former employer.  No, they didn't make me not release code.  They showed me that not every employer will let their test teams use open source unless the code is released under a BSD license or something even more lenient.  I intentionally wrote the post so that a tester in a restricted environment could find the information necessary to implement a variation on what I'm doing on their own.  After all, if I can tell you how to detect a pattern and transform the image to get you a testable frame, that's most of the challenge right there and if you do it on your own, your legal department will have no issues outside of vetting your library licenses.  If I give you the code to do it at the same time, then your legal department may freak out.

Finally, you may be wondering why the blog post is out before the code.  We're trying to hire some great SDETs and every candidate we've spoken with has been extremely excited by this project.  Showing off some cool testing tech is a great way to grow awareness of QA inside Netflix and does wonders to raise interest levels.  The sooner we get some great SDETs in here, the better.

We got the final logo (the blue eye) yesterday morning, but I've been pulling screenshots all through the development process.  The screenshots in the article range from 1-4 months old.

Well, back to work.  Who knows...we might end up doing an AMA somewhere about it.

September 20, 2015

First Episode of Terraria Inverted Live

This series uses RomTerraria 4 v0.9.

Preview of RomTerraria 4 v0.10

Right now, I've got about 2/3rds of the UI properly respecting these widgets (everything in the new UI added post-1.2 and everything right/bottom docked) so I might miss some, but get ready...

September 19, 2015

RomTerraria 4 v0.9 Released

Main post here.

Two updates in less than two weeks.  What the hell is going on here?

In this build:
  • Most common complaint about Terraria from left-handed players is that Re-Logic didn't give them the ability to swap mouse buttons.  I've given you that ability now.

    Toilet Oddity

    I was at the airport earlier today and needed to use the restroom.  There was a single stall open, and when I went in, I noticed that the seat was soaked.  "Damn," I thought, "I hate it when people piss on the seat."

    I grabbed a lot of toilet paper and cleaned off the seat as best I could.  I did my business, stood up, and noticed that when the auto-flush triggered, it caused a ton of water to splash up out of the bowl onto the seat.

    I simultaneously felt three things.  First, I felt guilty for blaming the previous occupant for pissing on the seat.  Second, I felt disgusted because it was obviously a lot worse on the seat.  Third, I felt astonished that a toilet could fail that spectacularly at doing what it was supposed to do: dispose of waste.

    To keep this from happening to you and your fellow man in the future, lift the seat before flushing.

    There's your moment of WTFery for the day.

    September 17, 2015

    No Posts Until Saturday

    You'll hear very little from me until sometime in the afternoon of September 19.

    Oh, and I'm going to have a post go up on the Netflix Tech Blog sometime on September 22.

    September 14, 2015

    Hosting Issues

    Of course...I upload a new version of RomTerraria, and my hosting provider takes a shit.

    Things should be corrected by morning.  If they aren't, I'll set up a mirror on a different server.

    Sorry for the inconvenience.

    (Update: Hosting is back up.)

    September 12, 2015

    RomTerraria 4 v0.8 released.

    Main post here.

    Exactly two months since the last update, here's an update.

    In this build:
    •  If you were having problems with RomTerraria finding your copy of Terraria, guess what?  You're in luck.  If I can't find it, I'll pop up a file browser now.
    • Like the Gravity Globe, but don't want to have it taking up an accessory slot?  You can turn the Gravity Globe on all the time now.  Thanks to GamingWithRyan for the idea.

      A Little Sneak Peek

      If you like Gravity Globes but don't like losing the accessory slot, the next RomTerraria release will interest you.

      September 11, 2015

      End in Sight

      Today is the final demo of my project at work.

      I've been working on a computer vision project at Netflix where we're now able to point a standard, consumer grade webcam at an off-the-shelf TV and with less than 10 seconds of calibration, I can convert the image in real-time into something that you can run bog-standard, computer vision algorithms against, with the camera off by up to 45 degrees in any direction..  In other words, you can point your camera at a TV from above and to the right, and I'll still be able to perspective-correct it back to normal and give you something to work with.

      That was fun enough, but the really fun part was getting it so that I could do the same with curved televisions regardless of curvature without being told that the television has a curve.

      A ton of extra work has been done to ensure the returned frames are of good quality.  Emissive screens are a beast, and LED-lit screens have a flicker that you don't notice otherwise.

      I'm working on a blog post for the Netflix tech blog that'll have a lot more information and we'll be open-sourcing it sometime next year, but I'm feeling awesome about this and can't wait to tell people more information.

      I've got the afternoon of September 12 set aside for RomTerraria.  Can't wait to be finish it.