Developer Position at Play Magnus (Computer Chess)

We’re looking to hire a few new full-time developers at Play Magnus, the software company of reigning World Chess Champion Magnus Carlsen.

Play Magnus is a small company using a wide variety of technology, so it is an advantage if you are someone with a broad range of skills or are willing to learn new things without prejudice. We have user-facing web and apps in Swift, Kotlin, C# and JavaScript, with a little bit of ClojureScript and Elm. We have server-side software and content generation tools in Julia, Clojure and TypeScript, and a chess engine in C++.

One of the new developers we are seeking is someone to assist me in my own tasks; primarily maintaining and improving internal software in Clojure/ClojureScript as well as chess AI work. For chess AI, I hope to be using Julia along with C, C++ or Rust (our current old and outdated chess engine will be rewritten from scratch).

This is not primarily a Julia job, but you will probably be able to use at least some Julia, and I think the skillset and interests of many members of the Julia community would fit the job perfectly.

An interest in chess is advantageous, but not a requirement. Chess playing skills don’t matter at all.

Ideally we would like someone living in or willing to move to Oslo, Norway, but due to the somewhat unusual skills desired and the current difficulties of international travel, remote work is probably an option.

If this sounds interesting, please drop us an e-mail at jobs@playmagnus.com.

25 Likes

Going for an Alphazero like architecture?

Going for an Alphazero like architecture?

We’re still at a very early stage and the plans are still far from complete, but probably not. It’s more likely that we’ll do something NNUE-like, for faster training and better mobile-friendliness (since we’re making iOS/Android apps).

1 Like

Where and why do you think you’d need to use C/C++ or Rust along with Julia?
I ask, because when I first learned Julia (almost 6 years ago) I thought I’d need to write some of the code in C for performance. After I was shown a few simple “tricks” (like using @inbounds when I knew it was safe to do so, checking for type stability, being careful about allocations), I was able to match the performance of my C code (and I’d had 3 decades of experience C/C++/Assembly, specifically in the area of optimizing code).
So far, although I’d like to learn Rust in case I ever do need to make a nice shared library (to be called from Julia, of course!), I’ve not once actually needed to, Julia has given me all the performance I needed, and was easier to write and maintain.

On a different note: have you heard of Quantum Chess? ;-). I hadn’t played chess in almost 50 years, until we played Quantum Chess over lunch at Zapata Computing, it was a lot of fun!

3 Likes

Where and why do you think you’d need to use C/C++ or Rust along with Julia?

Because it’s not going to be possible any time in the near future to compile Julia to a static library that can be linked in an iOS or Android app.

The engine itself will be written entirely in whatever low-level language we decide to use. Julia will be used for machine learning and various parameter tuning and testing tasks.

So far, although I’d like to learn Rust in case I ever do need to make a nice shared library (to be called from Julia, of course!), I’ve not once actually needed to, Julia has given me all the performance I needed, and was easier to write and maintain.

Sure, I also prefer to use Julia (or other Lisps) wherever possible, but for mobile apps, it is sadly not an option at the moment.

On a different note: have you heard of Quantum Chess?

I’ve heard the name, but I haven’t played it or looked up the rules. But since I love chess variants, I may decide to have a look. Thank you for the suggestion.

3 Likes

I forgot, yes AlphaZero has slow training, but I believe you only need it once (as is typical for neural-networks). So I’m also intrigued by that you’ll do some actual training on a mobile phone, I thought usually you only do inference, that can be much faster. For AlphaZero I don’t know if that’s slow too, the network could be huge (I’m not sure), but the work on neural networks I find intriguing is about scaling networks down (may or may not work for AlphaZero).