Careers / Carrières
English version follows.
Programmeur Système Senior
Recoset développe des algorithmes d’intelligence artificielle pour les plateformes de publicité en ligne. Nous sommes une startup située au centre-ville de Montréal et nous sommes financés. Nous désirons agrandir notre équipe de six pour faire nos preuves au prochain niveau.
Nous sommes présentement à la recherche d’un programmeur système senior pour travailler sur notre système d’apprentissage machine temps réel. Nos serveurs traitent des dizaines de milliers d’évènements réseau par seconde tout en mettant à jour de complexes structures de donnée internes en plus d’effectuer la planification et l’exécution de modèles d’apprentissage machine. Tout est effectué en temps réel sur des serveurs d’au moins 16 coeurs avec des contraintes temporelles très serrées. Nous repoussons les limites de ce qu’un serveur peut réaliser, autant en termes de contraintes mémoires que de capacité de calcul. Nous cherchons quelqu’un qui serait passionné par le défi de les pousser encore plus loin.
Vous devez être confortable avec les principaux modèles de conceptions d’accès simultanés ainsi que de traitement distribués et être en mesure de faire les bons compromis entre eux. Vous êtes aussi un expert en programmation réseau, des appels systèmes de bas niveau en montant, et savez aussi bien identifier que réparer plusieurs types de goulots d'étranglement. Idéalement, vous avez de l’expérience dans le développement d’algorithmes non bloquant et/ou qui utilisent la mémoire transactionnelle logicielle. Vous avez de l’expérience avec un langage de bas niveau et vous concevez instinctivement vos structures de données pour éviter les allocations mémoires et pour améliorer la cohérence de cache. Toute expérience en programmation temps réel, en statistiques, en apprentissage machine ou en préparation d’espresso est aussi un atout.
Du mentorat vous sera fourni si nécessaire, mais nous nous attendons que vous serez en mesure de travailler de manière indépendante ou en équipe, dépendant de la situation. Notre fierté est de développer de la technologie inédite dans un environnement de travail sain et agréable. Nous valorisons la prise d’initiative et le développement personnel. Nous sommes en train d'assembler une équipe de calibre international, pour notre bénéfice autant que pour le vôtre. Preuve que nous croyons fermement en la conciliation travail/vie personnelle, nous offrons quatre semaines de vacances payées (et deux non payées optionnelles). Si nous réussissons dans cette aventure et que les coffres débordent, vous serez heureux d’avoir des options sur nos actions. Mais quoi qu’il arrive, nous vous promettons que vous repartirez un meilleur programmeur capable de jongler avec des tonnes de données les yeux fermés, le tout en ayant bu du café de qualité supérieure et en ayant côtoyé des collègues vous auront permis d’élargir vos horizons.
Technologies avec lesquelles vous travaillerez:
- C++-0x avec primitives réseau et threading Boost/ACE
- Compilateur g++
- Appels système Linux, glibc
- ZeroMQ
- Plusieurs paradigmes d'accès simultanés: multithreading, multiprocessing, mutexes, algorithmes non bloquants, message passing, mémoire partagée
- coroutines v8 (JavaScript) et node JS pour le scripting
- Potentiellement de l’assembleur x86, comme requis
- Nous adorons nous faire montrer de nouvelles technologies qui peuvent améliorer notre productivité, tant que vous êtes en mesure de les défendre
Pour postuler, envoyez un email a careers@recoset.com
Senior Systems Programmer
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 work 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 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
- g++ compiler
- Linux system calls, glibc
- ZeroMQ
- Multiple concurrency paradigms: multithreading, multiprocessing, mutexes, lock-free algorithms, message passing, shared memory, coroutines
- Some v8 (JavaScript) and node JS for scripting
- 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 careers@recoset.com