Build Engineer

Location: Moscow, Russia

Network Optix (Nx) is a successful IT-company that specializes in IP Video Management Systems.
Nx makes powerful, exciting, easy-to-use network video management software that enables everything from recording IP Cameras on a Raspberry Pi to capturing Rocket launches.

We are headquartered in California with subsidiaries in several countries (Australia, Germany, Spain, Russia, Sweden, Taiwan).
Seven years of constant development helped us in being recognized as #7 fastest growing software company (rated by Inc.5000 – 2016).
Our product is video management system Nx Witness. You can download the free version from our website and try it.

  • Maintain cross-platform (Linux x86 and ARM, Windows, MacOS, iOS, Android) CMake-based build system of a huge C++ project (>1 million lines of code).
  • Analyze requirements for the CI team and implement their requirements for the build system.
  • Keep track of CI build failures. Collaborate with the CI team on investigating failed builds.
  • Maintain artifact build/sync system (currently Python-based in-house tool).
  • Support distribution package building (MSI/WixSetup, DEB, etc.).
  • Support build system of Nx SDKs and their samples; assist in developing and testing SDKs.
  • Investigate compiler issues (like incomplete C++ support), handle migration to new compiler versions.
  • Fix C++ compile/link errors introduced by programmers.
  • Investigating crashes as a tier 1, dispatching to programmers.
  • Investigate customer issues with Nx SDK as tier 2 (after an issue is identified as potentially related to SDK/sample code or build system).
  • Deep understanding of at least one build system (e.g. CMake, Qmake, Maven, Gradle, Ant, automake, MSBuild).
  • Linux administration skills for at least one Debian-based Linux distribution: working with command-line (ps, grep, redirection), services (init.d, upstart, systemd), package managers (dpkg, apt).
  • Some Bash scripting experience: loops, functions, escaping/quotes/globs, file descriptors.
  • Some Python programming experience (ability to implement a simple algorithm without googling).
  • Understanding of Linux C/C++ toolchain processes of compiling and linking: dynamic libraries (rpath/rpath-link), exported symbols control (attribute-visibility), C++ name mangling, ldd/readelf.
  • Basic C++ knowledge: C subset, extern “C”, namespaces, unnamed namespaces and “static”, classes.
  • Visual Studio and Windows programming experience.
  • Strong knowledge of at least one general-purpose programming language (e.g. C, C++, C#, Java, Python, Delphi).
  • Some experience with distributed version control systems (e.g. Git, Mercurial).
  • Advanced Bash scripting: local variables and variable types, arrays, variable substitutions (“${}”), regex, error handling (“set -e”, exit status, traps).
  • Windows administration skills: services, file system permissions, Cygwin, MSI installers.
  • Some MacOS/iOS programming.
  • MacOS administration skills (knowing differences from Linux).
  • Expert Python knowledge, including Python 3.
  • Expert C++ knowledge: SFINAE, atomics, C++17 features, STL.
  • Debugging with gdb/strace; analyzing crashes.
  • Distributed C++ compiling/linking: ccache/distcc.
  • Using Qt in C++ programs.
  • Building projects with Qt.
  • Some experience with embedded Linux and cross-compiling for ARM.
  • Expert CMake knowledge: cmake_parse_arguments, configure_file, GLOB, find_package, lists, regex.
  • Using Conan.