First, a quick explanation of what Level 5 Networks does. We make network cards that can filter packets into per-process buffers and we provide a TCP/IP stack that allows I/O on a bound socket to be done in-process, saving the overhead of system calls. This is similar to what Myrinet does, but has the benefit of working with ordinary Ethernet switches and applications that use the standard socket API.
I was rather hoping to be getting away from Windows, but currently most of my time is spent on automation of Windows testing! Our test framework is quite complicated: it needs to switch between various operating systems, each in x86 and x86-64 versions; load and unload drivers and libraries; cope with the unpleasant failure modes that drivers can have; and work around the foibles of numerous third-party test suites and benchmarks. Unfortunately it was also written using a lot of Linux or Posix-specific features.
Along the way I've run into a whole bunch of obstacles Windows puts in the way:
- Windows has no native SSH server, so the Windows test systems were running the Cygwin port of OpenSSH as a means of remote control. However, that can't reliably run all Windows programs. I actually had to write another SSH server! Thankfully about 90% of that was already included in Twisted and I made the rest as simple as possible. I also had to write a Python extension to disable the ghastly compatibility kluge included in 64-bit Windows that hides the real system directory from 32-bit programs.
- Command-line parsing is neither standardised nor well-documented. The cmd shell is quite powerful, but has backward-compatibility kluges that make it hard to use that power.
- Windows takes a very unpredictable time to shut down, making it hard to tell whether it really is rebooting or whether to reset the machine using a power relay.
- When you install a new Windows Socket Provider, processes that already had listening sockets can't accept new connections, so you have to restart them. This is problematic when you're using remote control, and the server can't fork off connections because Windows doesn't support fork...
Despite all these, I and the original author of the test framework have got it into a state where we can run several test programs on Windows quite reliably.
Some things I like about working at Level 5:
- All my colleagues (so far as I can tell) are intelligent and knowledgeable.
- We have weekly status meetings that provide useful information and don't go on for too long.
- I can run Linux on my workstation (not Debian yet, but it may happen).
- It's close to town, so I can easily do shopping or other chores in my lunch break.
- We use well-known tools like Bugzilla and Moinmoin rather than deciding that the lack of some small feature necessitates building our own and then having to make do without for months or years because there isn't time to do that. Not that I'm comparing with any particular past employer, of course.
- Sitting my desk and turning my head, there's glass through about 180 degrees. Some of it doesn't even look out onto more offices.