C++ Networking Engineer - Remote Desktop Software
We're a VC-backed, early stage startup in Toronto putting the PC into the cloud.
Through our downloadable application we can turn old or underpowered computers into powerful workstations. Similar to how Netflix streams movies to your screen, we stream a powerful computer.
We’ve got several paying customers within our beachhead market of 3D modeling in Architecture, Engineering, and Construction.
Softdrive is looking for a driven C++ networking software engineer to refine the core of the world’s best remote desktop software.
Softdrive’s custom UDP-based remote desktop software aims to make the experience of controlling a remote computer essentially indistinguishable from having it right in front of you. We’re achieving this through ultra-low latency in the range of 10-40 ms, support for over 144 FPS, crisp visual quality with high bitrate encoding and HDR support, all while supporting up to 4 monitors.
- Understanding of networking concepts such as TCP/IP, NAT, and congestion control.
- Networking APIs: BSD Sockets or Boost.Asio.
Nice to have
- Video streaming.
- Video encoding: H.264/H.265/AV1, P-frames vs I-frames, quality control algorithms.
- Network condition simulations.
- Software architecture.
Working at Softdrive
As an early member of the team, you'll be able to grow with us and shape the future of our company and industry. You will work on critical, high-performance code that serves as the core of the PC of the future. Softdrive uses C++ best practices, bleeding edge C++ revisions/standards, with linting and static analysis. We’re aiming to build a code base we love and to push ourselves to learn and grow as engineers.
Our key networking insight is that congestion control and reliability should be handled as a collaborative effort between the video encoding and networking layer. Instead of varying send-rate as TCP would, Softdrive handles congestion by tweaking encoding parameters. And instead of purely retransmitting data, Softdrive can choose to bake in redundancy into the data by selecting between I/P frames or macroblocks or respond to packet loss by dropping frames and restarting with a new IDR frame.
Working on this code challenges you to understand the networking possibilities available for video streaming and design powerful algorithms. You will use C++ to write high-performance code with advanced concepts such as multi-threading and pipelining.
Something looks off?