Recoset creates sophisticated artificial intelligence for marketing platforms. We’re based in Montreal and funded so we can grow our team (six and counting….) and prove our mettle.
We’re hiring a senior systems programmer who’s looking for a challenging job developing our real-time machine learning pipeline. Our machines deal with the aggregation of tens of thousands of network events per second, updating complex internal data structures, and scheduling and executing machine learning models. All of this in real-time on 16 or more CPU cores with hard real-time constraints. We are pushing the limits of what a machine can do in both memory size and processing capacity and we need someone who can help us push them further.
You’ll need to be comfortable with the major concurrency and distributed processing patterns and know how to make the correct trade-off between them. You’ll be adept at network programming from the system call level up and know how to identify and fix all kinds of bottlenecks. Ideally, you’ll have experience in writing lock-free algorithms and/or the implementation of software transactional memory. Experience with real-time programming and statistics or machine learning would also be a plus. You’ll have had extensive experience with a lowish-level language and you’ll instinctively design data structures to avoid memory allocations and improve cache coherency.
There will be mentoring provided as appropriate for the candidate, but we expect you to be able to both both independently and as part of a team depending upon the circumstances. We pride ourselves on developing insane technology within a sane working environment.
We value personal initiative. We build a world class team for your benefit as much as ours. We do, however, offer four weeks of paid vacation (and two optional weeks unpaid) because we put our money where our mouth is when we say “work/life balance”. And if it pays off like crazy, you’ll be be happy you got stock options. Either way, we promise you’ll walk out the door a better programmer than when you walked in and appreciate how data can be useful as well as beautiful.
Technologies you will be working with:
C++-0x with Boost/ACE threading and networking primitives
Linux system calls, glibc
Multiple concurrency paradigms: multithreading, multiprocessing, mutexes, lock-free algorithms, message passing, shared memory, coroutines
potentially x86 assembler as required
we love being shown how to do the job better using other technologies, but be prepared to make a case for them!
To apply, email firstname.lastname@example.org