Software Development Engineer
Role details
Job location
Tech stack
Job description
Our team is responsible for a large part of the server-side development - camera integration and support. We work with a wide variety of camera manufacturers, each using different protocols (IP-based, TCP/UDP, HTTP, SOAP, ONVIF, and various proprietary text and binary protocols).
The integration team investigates and supports these protocols, often performing reverse engineering. A significant part of the work involves debugging issues on local and remote devices using tools like Wireshark.
Our software runs on a wide range of hardware and operating systems. We build efficient, portable solutions using modern C++ (C++20/23), along with CMake, Conan, and Git.
- Examine various camera APIs and develop plugins for different vendors
- Add support for new cameras and devices (NVRs, DVRs, intercoms, IP speakers, etc.)
- Implement support for new camera features and capabilities
- Maintain and improve camera support on the server side
- Collaborate with the core server team to enhance camera-server interaction
- Investigate Wireshark logs and server logs to diagnose and resolve issues reported by technical support
- Troubleshoot complex problems, including server crashes and device-specific issues
- Interact with device manufacturers to improve and stabilize integrations
- Refactor existing code and increase unit and functional test coverage
- Participate in code reviews
- Assist the Support team in analyzing complex field issues
Each integration typically involves working across multiple protocols and includes:
- Camera discovery
- Capability detection
- Configuration management
- Device control
- Media stream handling
- Video analytics data processing
Camera Features You'll Work With
- Audio/video sources and encoders
- PTZ (pan-tilt-zoom)
- Advanced hardware features (wipers, heaters, etc.)
- Speakers and IO ports
- Security features (doorbells, locks, alarms)
Advanced Video Analytics
- Event detection (line crossing, loitering, etc., 50+ types)
- Object tracking and classification
- Recognition (license plates, faces, etc.)
- Analytics configuration (regions of interest, rules, etc.)
Requirements
- Experience working with large codebases and maintaining existing systems
- Strong experience in C++17/20, including multi-threaded and asynchronous programming
- Experience with Windows and Linux C++ toolchains
- Experience analyzing network traffic (e.g., Wireshark)
- Solid understanding of OOP and software design patterns
- Strong debugging and problem-solving skills
- Experience writing unit and functional tests
- Experience with web services, SOAP, and ONVIF (desirable)
- Experience with Qt 6 (desirable)
Technical Skills
- Ability to write efficient, portable C++ code in a multi-threaded environment
- Strong understanding of asynchronous programming
- Ability to work with and evolve an existing codebase
- Experience with CMake and Git
- Basic system administration skills
- Experience working with issue tracking tools (e.g., Jira)
Knowledge
-
Strong knowledge of C++17/20 and STL (C++23/26 is a plus)
-
Understanding of algorithms and data structures
-
Knowledge of concurrent programming
-
Solid understanding of memory management (low-level and high-level)
-
Understanding of Windows and Linux internals
-
Deep understanding of OOP and design patterns
-
Strong understanding of networking fundamentals and HTTP
-
Cross-platform development experience (Windows/Linux, including embedded systems)
-
Familiarity with Boost
-
Understanding of device-level integrations and video systems
-
Experience working with analytics from vendors (e.g., Uniview, Vivotek)
-
Familiarity with modern AI-assisted development tools (e.g., code generation, static analysis, or developer productivity tools)
Benefits & conditions
- Competitive compensation
- Paid time off
- Flexible working hours
- Hybrid work in our brand-new comfortable office
- Employer-sponsored health coverage
- Working with top industry experts in our international team
The position is ideally a hybrid role in one of our offices located in Taipei, Taiwan; Hague, Netherlands; Burbank, CA; Walnut Creek, CA and Portland, OR; Belgrade, Serbia.