September 22, 2015

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.

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.

September 11, 2015

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.

About Me

Currently Sr. Software Engineer in Test at Netflix. Formerly Sr. Quality Engineer on Firefly at Amazon, QA Manager at Ritual Entertainment, Software Test Lead at Microsoft Game Studios, Director of IT for Meeting Professionals International.

Opinions expressed are my own and do not necessarily represent those of any current, former, or future employer.