About the role
SamKnows is the global leader in internet performance measurement. We’ve been collecting data since 2008 on all manner of metrics, from how good Netflix performance is to figuring out why Fortnite isn’t working for gamers. We work with the most influential internet regulators, internet service providers, and router manufacturers in the world, and we're constantly developing new and exciting ways to test internet performance.
To help us with this, we're looking for a highly talented Embedded Devices Software Engineer to focus on integrating the SamKnows software agent into third-party routers. Our software is already running on over 30 million routers worldwide, and the demand for integrating our measurements directly into routers is continuing to grow rapidly. The SamKnows SDK includes metrics that focus not only on quality of service (such as throughput and latency), but also on quality of experience (such as video-streaming stall frequency). However, our SDK can always be improved upon, and the successful candidate will be keen to suggest and implement improvements to the SDK, its documentation, and the integration process.
For this role, you must enjoy solving complex problems using clean, efficient, and performant methods, as well as implementing solutions while working as part of a team. Your knowledge of Linux and C development should be deep and broad, and you should have at least 4 years of industry or equivalent experience. Experience in working on embedded systems, where memory and CPU is constrained, is essential. You will also have experience working on various network connected hardware devices, and you should also be comfortable gathering requirements, estimating task sizes, and managing expectations.
A firm understanding of networking concepts is essential. All our measurements interact with the network in some way, and terms such as "active measurements" and "passive measurements" should be familiar to you. It is also important to have an awareness of how traffic is routed through the Internet, including knowledge of protocols such as DNS, TCP and UDP is important. Similarly, an understanding of in-home networking concepts, such as the different Wi-Fi standards and low-level operation of both wired and wireless networks is beneficial.
Essential Technical Skills
- Professional experience writing C
- Professional experience working on embedded devices
- Good grounding in networking concepts, including TCP and UDP
- Comfort with working with the Linux shell and writing scripts
- Experience using manufacturers toolchains
- Professional experience using Git/Github
Desirable Skills / Experience
- Experience developing with C++
- Familiarity with SQL
- Automated testing (functional, integration and unit testing)
- Grounding in mathematics/statistics