Uncategorized

The Complete Guide to a Kick-ass Videoconferencing Setup

We all cope with COVID differently – my coping mechanism of choice is to obsess, research, and then buy things – my mind recently decided to zoom in on re-doing my videoconferencing setup. I learned a lot during said obsession period, and since I work for Red Hat, I’ve been indoctrinated to share what I learn, so here we are.

Why Bother?

Recent research shows confirms my intuition – people are attracted to good audio – they’ll want to have longer conversations with you. Conversely, we subconsciously try and cut conversations short if we can’t properly understand what the other side is saying, and we certainly can’t hope to replace the value we get from lengthy in-person collaborative work sessions with poor audio or video.

End Result

Please excuse the wanting amount of headphones, this picture was taken after selling off 6 pairs

Starting Position

The initial challenge was moving my workstation from a sizable room with plenty of natural light to a nook that’s a good 20 meters from a window. My USB webcam (a Logitech StreamCam) just couldn’t deal with the darkness – the video was grainy and choppy. The nook has 2 spotlights directly overhead that do a fantastic job of highlighting my receding hairline.

Solving the lightning situation quickly devolved to a “money is but for an arbitrary concept!” type deal and so I ended up buying (and this is also in recommended priority order!)

  • Deity video mic
  • Philips Hue lights
  • Canon m200 camera and an HDMI capture card
  • Airpods

The rest of the post will explain those choices as well as alternatives in each category. There’s a summary at the end if you don’t like reading (no judgement! well… a little bit of judgement).

USB Microphones

Good audio is the most important factor of a pleasurable video call. Bad video is fixable – just turn it off. Bad audio is cause for ending the call early. We all have better things to do than try to decipher the echoy audio coming off your webcam or laptop, so quit that shit and buy a $50 USB mic. My research strategy of late is to buy 5-6 popular options, evaluate them, and return what didn’t survive what can only be described as a sad battle royale.

Of the options above I recommend the Razer Seiren Mini. The audio quality was comparable to the offerings from Yeti that’s 4 times as expensive. The Razer is cheaper, smaller, comes in a selection of colors, and is available through all major retailers. Remember that video call apps compress audio to hell and back — if you’re looking into content creation on YouTube and such, a higher end mic may well be worth it, but for video calls, the Seiren is the best $50 you can spend.

But, strange internet person, you may be asking, why is the Seiren not in that the picture of the nook of sadness you shared above?

Generally speaking, mics sound best when they’re a fist away from your mouth. Even the Seiren makes you sound like you’re on a podcast if you hold it close to your mouth — by putting it on the desk stand, you lose the bassy, velvety goodness that your voice naturally exudes. The solution is to put it on a desk clamping boom arm, but that means that you’ll end up looking like this guy:

A very handsome man to be sure, but we’re not creating a podcast, we’re just trying to complain about COVID on a call or ignore whatever the person ahead of us on the standup is saying, so assuming you don’t want your microphone in shot, you have to either settle on mediocrity like some oddly apt symbolization of my philosophy on life, or buy a shotgun mic.

Shotgun Microphones

Shotgun mics, otherwise known as video mics, are typically mounted to the top of a video camera and are used in outdoors situation where the audio source is a few meters away from the mic. As you can understand they’re intended for longer range audio pickup – perfect! I put a Deity V-Mic D3 Pro on a desktop stand, hooked it up to my laptop’s aux output, a USB C cable to a power outlet, and viola! Marginally better audio for five times the cost!

Headsets

Alternatively, you can use a headset such as the Jabra Evolve 65 – super comfortable and lightweight, wireless via a USB dongle (so you avoid Linux Bluetooth oddities), and charges via the included stand, so you don’t have to remember to plug it in. The microphone audio quality is very clear, it’s just a thin sound that you don’t get via either the USB mic or shotgun mics I recommended. Also, nobody can pull off a headset.

PulseEffects

So you got a USB or shotgun mic, plugged it in, and you’re still getting an echoy sound, or picking up noise from a nearby computer fan. What gives? Enter PulseEffects. Setup echo and noise cancellation, close the app, and forget about it.

Audio

So you got the mic working, great! I understand that some people are interested in what the other people on the call are saying or whatever, so you’ll be forced to find some sort of audio solution. I ended up going with Airpods because they:

  • Are unobtrusive and less distracting to the other party – I figured in-ears would work better than over-ears in this regard
  • They charge wirelessly, so you can just plop them on a puck in-between calls — you don’t have to remember to charge them, they just… do
  • They’re ridiculously comfortable – they are not in-ears, in the sense that they don’t plug your ear canal – they have a fit more like earbuds, so you can hear the sound of your own spectacular voice, which is the interesting portion of most calls anyway, and your surroundings – for example, the sound of your wife yelling from the other room “I’M POOPING IF THE BABY DIES IT’S YOUR FAULT” which is totally not something that actually happened
  • They’re useful outside of work too, for example when walking said baby that totally didn’t die that one time
  • For Android users I can recommend the Galaxy Buds Live, the only other True Wiresless but-not-in-ear in existence

Lights

Aww, common, internet stranger, when do we get to the fun part? (That’d be the camera, dumdum). Well, soon, but first we have to talk about something that actually matters as far as video calls – lighting. You could use a $50,000 professional film camera but if your background is overexposed because the camera is facing a window, or if your face is just not lit enough, you will look like ***Insert an admittedly slightly funny but otherwise super distracting joke. Seriously, Assaf, don’t forget to put the joke here!***

Most commonly, people stick a ring light on a desk clamp stick, or 2 x key lights, one slightly to the left of your face, and other slightly to the right, either mounted to your monitor, or to the desk. Elgato makes products well suited for streamers and content creators, certainly for video calls.

Indirect Lighting

If your eyes are bothered by direct lighting, for example, if you’ve spent years working as an instructor staring down a projector, causing permanent eye damage (a totally made up scenario that has no basis in reality), ask your doctor if indirect lighting is for you.

Assuming your workstation is facing a wall, the goal is to throw light against the wall and let it bounce back against your face. The result is a pleasant and diffused light that is very flattering on camera and doesn’t bother your eyes. I ended up in the Philips Hue ecosystem. I bought:

  • Hue Bridge – Hue devices speak Zigby to the bridge, which is then connected via a wired connection to your router. In our case we use a modem and an Eero router in our living room, that has a backchannel to a 2nd Eero router near my workstation, that is then connected via a physical wire to the Hue bridge
  • Hue Dimmer switch – Hue lights can be controlled via the app or Alexa and her friends, but ultimately I’d rather just push a button. Both color temperature and light intensity are easily controlled via the remote. The dimmer switch controls all 4 lights simultaneously.
  • 3 x Play Light Bars (technically a 2 pack, and an additional single pack) – 2 x are glued to the back of the monitor, and one on a shelf facing up
  • Signe table light – I still wasn’t getting enough light, so I got this table lamp facing the corner

Video

There’s a few problems with built-in laptop webcams:

  • The video quality is, to use a scientific term, poopy
  • The angle is way too low – we don’t need to see your noise hair. Literally nobody looks good from a down-angle. Ideally the lens would be level with your eyes, or from a slight up-angle

The easiest and most cost effective solution is a USB camera. I recommend these:

Mirrorless and DSLR Cameras

But what if you want to look really, really, really ridiculously good looking? Well then, that’s where mirrorless and DSLR cameras come into play! You’re looking for an entry level one (they start at $500) that has “clean HDMI output”, that is, one that does not overlay grey rectangles and other oddities on HDMI output, and one that doesn’t have an auto turn off (for thermal reasons), and finally you’re going to need quick and silent auto focus. Again we can look to the streaming world to guide us, here are the recommended models:

Both will do great, and the stock adjustable lenses are superb for video calls – they let you adjust the field of view, depending on your distance from the camera and your desired shot width.

USB vs. HDMI

How do you get the video feed to show up in video conferencing software? Typically via either USB or HDMI. Canon offers the free EOS Webcam Utility, that conveniently only works on Windows and Mac. There are solutions to capture USB video output on Linux, and I was able to get it to work but could never get a decent frame rate. I finally broke down and bought an Elgato Camlink – a plug and play “HDMI capture card”, or to put it another way, a converter from the camera’s HDMI output to USB. This works flawlessly on Linux, I encountered no issues whatsoever; both the video quality and frame rate were sublime.

Power

The Canon m200, Sony a5100, and similar models are intended to be used out and about. They come with a battery but surprisingly, they don’t come with anything that allows them to be charged as you’re using them. An even bigger surprise is that their USB interfaces don’t charge them either. The solution are affectionately nicknamed dummy battery packs – a device that plugs into the camera’s battery on one end and to AC power on the other end. I bought an off brand one for my Canon m200 – there are those that suggest to only buy the (3-4x more expensive) name brand, but uhh… YOLO. Also note that you need to be careful and to buy a dummy pack that is compatible with your particular model – they do not use a universal sized battery.

Summary

BudgetSplurge
MicrophoneRazer Seiren MiniDeity V-Mic D3 Pro + stand + PulseEffects
AudioApple earbuds, or any free wired in-earsApple Airpods or Samsung Galaxy Buds Live (open wireless in-ears with wireless charging)
Lights2 x key lights or ring light + desk clamps, stands, or monitor clamps (with color temperature and dimmer control)Philips Hue or other smart lights, blasting light against the wall with a dimmer and color switch
CameraRazer Kiyo ProCanon m200 mirrorless camera + desk clamp stand + HDMI adapter + dummy camera pack + Elgato HDMI capture card
Standard
Uncategorized

Python Appreciation Day

Every once in a while I have to recognize the beauty that is a high level language.

Consider this code snippet:

def square(x):
 return x**2

l = [1, 2, 3, 4]
for x in map(square, l):
 print(x)

And this one:

from multiprocessing import Pool

def square(x):
 return x**2

l = [1, 2, 3, 4]
for x in Pool().map(square, l):
 print(x)

Discounting the import line (Because I’m trying to make a point here, dammit!), the diff is a total of 7 characters. Of course, if you recall your Computer Science operating systems 101, the complexity that is hidden here is breath taking. And yet, Python multiprocessing exposes an API that is identical to Python’s good old ‘map’. It does so and manages to keep it boring, without exposing the caller to messy internals and endless complications that are usually involved whenever we dive in to the world of multi processing.

Even more impressive is the fact that I exploited this abstraction in a real world app that does honest to Zeus useful things, and it “just worked”. The processing time was cut by half and I didn’t need to worry about forking, sockets, PIDs, creating and managing processes or any of that mess. All I had to do was focus on the subject matter and not the underlying code. That is the beauty of a high level language. You don’t have to use up cognitive load thinking about memory management, the syntax of templates meta programming, or the depth of pointer dereferencing required, instead you can focus on getting something useful done.

* Herein lies a vim vs. Emacs type disclaimer: Every tool has its place. I would never dream of using Python for a demanding mobile game (Or a cloud operating system, for that matter), but wow is Python fun when you’re parsing and processing tens of thousands of JSON files.

Standard
Uncategorized

The OpenStack PTL Elections are Happening!

Tomorrow morning, February 1st, OpenStack contributors will receive emails to elect their new PTLs. OpenStack Networking is having an interesting election this cycle. Please, have some fun with your morning coffee, spend a few minutes and read Ihar and Kevin’s nomination emails.

Ihar: http://lists.openstack.org/pipermail/openstack-dev/2017-January/110744.html

Kevin: http://lists.openstack.org/pipermail/openstack-dev/2017-January/110664.html

Both are incredible developers and some of the finest Engineers I’ve had the pleasure of working with. I have immense respect for both, which if anything makes this a fascinating spectator sport.

Best of luck to both candidates, and as Gandalf so eloquently put in those X-Men movies of his: “May the force live long and prosper, Harry.”

Standard
Uncategorized

Do you want to work on OpenStack networking?

The position has been filled, thank you for all of the applications!

I’m looking for a Software Engineer to join the Red Hat OpenStack Networking team. I am presently looking to hire in Europe and Israel. The candidate may work from home or from one of the offices listed here. The team is globally distributed and comprised of talented, autonomous, empowered and passionate individuals with a healthy work/life balance. The candidate will work on OpenStack networking projects such as Neutron and LBaaS. The candidate will write and review code while working with upstream community members and fellow Red Hatters. If you want to do open source, Red Hat is objectively where it’s at. We have an institutional culture of open source at all levels and this has a ripple effect on your day to day and your career at the company.

Please email me CVs at assaf@redhat.com.

The ideal candidate is familiar with some or all of the following subjects:

  • Python
  • Networking knowledge and terms such as L2, L3, ARP and IP
  • Cloud networking knowledge. For example VXLAN tunneling, network namespaces and OVS
  • Familiarity with virtualization technology, cloud and infrastructure as a service and OpenStack in particular

Responsibilities:

  • Write a bunch o’ code
  • Review code
  • Resolve bugs
  • Draft design documents
  • Implement features
  • Lead and participate in design discussions
  • Attend conferences
  • Improve our testing infrastructure
  • Assist in RPM packaging
  • Resolve customer issues

Required skills:

  • Bachelors Degree in Computer Science or equivalent
  • 3 years of significant software development experience
  • Excellent English verbal and written communication skills
  • Comfortable communicating and collaborating with upstream community members outside of the team and company

 

Standard
Uncategorized

I’m looking for someone to join my team and work on OpenStack networking and service function chaining

EDIT: The position has been filled, thank you everyone.

I lead a globally distributed engineering team at Red Hat, working on OpenStack’s networking projects. I’m looking for someone to be a part of the team with a focus on the SFC project. The candidate will:

  • Become the subject matter expert on all matters SFC
  • Review code
  • Participate in upstream development
  • Resolve bugs
  • Draft design documents
  • Implement features
  • Lead and participate in design discussions
  • Attend conferences
  • Improve the project’s testing infrastructure
  • Own the project’s RPM packaging
  • Resolve customer issues

If you want to do open source, Red Hat is objectively where it’s at. We have an institutional culture of open source at all levels and this has a ripple effect on your day to day and your career at the company. You will work with a talented, autonomous, empowered and passionate team of people with a healthy work/life balance.

The ideal candidate is familiar with cloud, networking, Linux, Python, open source, or some combination of the above. You may work from home or from one of our offices listed here: redhat.com/en/jobs/locations.

Please email me CVs at assaf@redhat.com.

Standard
Uncategorized

“But I’m not a networking person!”

I hear that a lot, as if networking is this insurmountable mountain you could not possibly claim. Here’s how you become a networking person: You go to bed after a full day of work, overworked and frustrated with networking lingo. You have the craziest dream! It’s filled with streams of binary numbers, but you’re somehow able to convert them to ASCII instantly. You suddenly not only know that the first half of a MAC address designates the vendor of the NIC, you somehow also know that Qumranet‘s is 00:1A:4A. The seven layer model appears before you, every layer stacked upon the one before it like some perfectly formed Jenga tower from Cisco’s version of hell. Just as you’re breaking a sweat (This is getting too weird, you think), you wake up. Suddenly, Richard M. Stallman comes back from wherever it is he’s hanging around these days, networking cable in hand. He lays it on your shoulder, and then the other, like some sort of perverted Knighthood ceremony. You wake up from this dream within a dream and whisper: “I know networking.”

That’s how it usually works, anyway. Other people are not so lucky and have to learn the basics like they learn anything else: Read a book, then another one. Meet with some people, ask some questions. Practice it, learn it on the job, wing it. It’ll be alright.

Standard