Programming

For purely user-level components we always evaluate the requirements for the language taking into account for example efficiency, stability and available tools and libraries. Some of the programming languages we have previous experience with are:

Kernel space components usually mandate using C or assembly as the programming language, but we have also seen operating systems using other languages for kernel programming.

Parallel and distributed programming is a skill all its own and takes a different mindset from normal programs with a single thread of execution. In this domain we are able to provide multiple facets of expertise: shared memory parallel programming within a single machine (multithreading) and distributed programs spanning several nodes. The latter can be used to create fault tolerant systems with high availability and build distributed systems which take the performance beyond what is possible using only a single node.