Home  
     
  mental images  
     
           
 
   

R&D Networking Software

     



  Job Profile

This job involves the design and implementation of software that runs on large network clusters, and performs shared storage, manipulation, and processing of very large data sets. Candidates should have experience with parallel processing, high-workload server architectures, and implementation using low-level protocols relating to TCP/IP such as socket APIs. Experience with high-level application tools and protocols such as mySQL, PHP, Apache, and HTTP is a plus but not required. This job does not involve rendering or computational geometry.

Required Skills and other Prerequisites

Candidates should understand, and preferably have worked on, the following items:

  fast communication of rapidly changing large datasets (eg. bandwidth/latency tradeoffs)
  client/server and peer-to-peer systems
  scalability on large networks
  load balancing
  solid knowledge of C and C++
  low-level networking, sockets, TCP/UDP, multicast/broadcast
 

Candidates will also work on problems like these:

  data affinity, scheduling strategies, dynamic cluster forming
  shared-memory systems, distributed-memory systems, caching systems
  large networks (tens of gigabytes of rapidly changing data, up to thousands of CPUs)
  pthreads, critical sections, and other low-level MP constructs (as opposed to middleware like OpenMPI, Corba, RPC, RMI, COM, etc.)
  HTTP (but not any form of web design)
  fault tolerance, self-healing networks, network partition recovery
  soft realtime programming
  data versioning, transactions, checkpointing, redundancy