All Authors

Aditya Srinivasan
Most recent post:

Computations that differentiate, debug, and document themselves

One of the problems we wrestle with at Jane Street is how to understand and manage the costs associated with the positions we hold: things... Read full post

See all posts by this author
Andrew Ray
Most recent post:

Accelerating zk-SNARKs - MSM and NTT algorithms on FPGAs with Hardcaml

In 2022 a consortium of companies ran an international competition, called the ZPrize, to advance the state of the art in “zero-knowledge” cryptography. We decided... Read full post

See all posts by this author
Andy Myers
Most recent post:

This is not the performance you were looking for: the tricks systems play on us

It’s often surprising just how much software performance depends on how the software is deployed. All the time and effort you’ve invested in optimization can... Read full post

See all posts by this author
Benjamin Devlin
Most recent post:

Accelerating zk-SNARKs - MSM and NTT algorithms on FPGAs with Hardcaml

In 2022 a consortium of companies ran an international competition, called the ZPrize, to advance the state of the art in “zero-knowledge” cryptography. We decided... Read full post

See all posts by this author
Carl Eastlund
Most recent post:

Quickcheck for Core

Automated testing is a powerful tool for finding bugs and specifying correctness properties of code. Haskell’s Quickcheck library is the most well-known automated testing library,... Read full post

See all posts by this author
Chris Hardin
Most recent post:

How to shuffle a big dataset

At Jane Street, we often work with data that has a very low signal-to-noise ratio, but fortunately we also have a lot of data. Where... Read full post

See all posts by this author
Chris Perl
Most recent post:

rsync rounds timestamps to the nearest second

I’m not sure how I’ve managed to use rsync for so many years without ever noticing this, but hey, you learn something new every day!... Read full post

See all posts by this author
Craig Falls
Most recent post:

We're sponsoring SoME3

Jane Street is excited to announce our sponsorship of SoME3, Grant Sanderson and James Schloss’s third Summer of Math Exposition. SoME is a contest that... Read full post

See all posts by this author
David House
Most recent post:

How to fail -- introducing Or_error.t

There are a bunch of different ways of handling errors in OCaml. If you’ve just started learning about functional programming, you’ll no doubt have come... Read full post

See all posts by this author
David Powers
Most recent post:

Unraveling of the tech hiring market

Recruiting talented people has always been challenging. Read full post

See all posts by this author
Emily Berger
Most recent post:

Introducing the Jane Street Graduate Research Fellowship

We are excited to announce the launch of the Jane Street Graduate Research Fellowship! Read full post

See all posts by this author
Fu Yong Quah
Most recent post:

Accelerating zk-SNARKs - MSM and NTT algorithms on FPGAs with Hardcaml

In 2022 a consortium of companies ran an international competition, called the ZPrize, to advance the state of the art in “zero-knowledge” cryptography. We decided... Read full post

See all posts by this author
Greta Yorsh
Most recent post:

Research internships in our Tools and Compilers group

We are excited to announce research internships in our Tools and Compilers group. Read full post

See all posts by this author
James Somers
Most recent post:

What if writing tests was a joyful experience?

At Jane Street we use a pattern/library called “expect tests” that makes test-writing feel like a REPL session, or like exploratory programming in a Jupyter... Read full post

See all posts by this author
Jeremie Dimino
Most recent post:

Goodbye Core_kernel

We recently restructured our standard libraries at Jane Street in a way that eliminates the difference between Core_kernel and Core and we’re happy with the... Read full post

See all posts by this author
John Kilburg
Most recent post:

Speed Up

Sometimes we need to inspect a lot of systems at once and its annoying to have to wait a long time for a result. What... Read full post

See all posts by this author
Jun Furuse
Most recent post:

OCaml in Japan, and its Meeting in Tokyo

It might be surprising to hear that there are a significant number of OCaml users in Japan, but it is true. OCaml has been used... Read full post

See all posts by this author
Laurent Mazare
Most recent post:

Using Python and OCaml in the same Jupyter notebook

The cover image is based on Jupiter family by NASA/JPL. Read full post

See all posts by this author
Leo White
Most recent post:

Do applied programming languages research at Jane Street!

As our Tools & Compilers team has grown, the kinds of projects we work on has become more ambitious. Here are some of the major... Read full post

See all posts by this author
Loren Puchalla Fiore
Most recent post:

Of Pythons and Camels

Welcome to another post in our series of how to use OCaml for machine learning. In previous posts we’ve discussed artistic style-transfer and reinforcement learning.... Read full post

See all posts by this author
Luke Maurer
Most recent post:

Finding memory leaks with Memtrace

Memory issues can be hard to track down. A function that only allocates a few small objects can cause a space leak if it’s called... Read full post

See all posts by this author
Mark R. Bannister
Most recent post:

Chrome extensions: Finding the missing proof

Web browsers have supported custom plug-ins and extensions since the 1990s, giving users the ability to add their own features and tools for improving workflow... Read full post

See all posts by this author
Max Slater
Most recent post:

Oxidizing OCaml: Data Race Freedom

OCaml with Jane Street extensions is available from our public opam repo. Only a slice of the features described in this series are currently implemented.... Read full post

See all posts by this author
Michael Bacarella
Most recent post:

Bootstrapping OCaml/async on the Raspberry Pi

On Friday morning I discovered a Raspberry Pi on my desk. The Raspberry Pi is a small single-board computer powered by a 700MHz ARM CPU.... Read full post

See all posts by this author
Michael O'Connor
Most recent post:

Generic mapping and folding in OCaml

Haskell has a function fmap which can map over a number of different datatypes. For example, fmap can map a function over both a List... Read full post

See all posts by this author
Nathan Linger
Most recent post:

A trick: recursive modules from recursive signatures

Stephen taught me a neat trick a while back. Suppose you want to define a some mutually recursive types Read full post

See all posts by this author
Pascal Zimmer
Most recent post:

The dangers of being too partial

This article deals with some not well-known dark corners of the OCaml compiler and how to get around them to produce more efficient code. The... Read full post

See all posts by this author
Patrick Hahn
Most recent post:

Iterative email problem solving with python, Part 2

Once we’d fixed up all our message IDs (see part 1) we let imapsync loose on the first few beta testers who noticed that the... Read full post

See all posts by this author
Pavel May
Most recent post:

What's 2013 + 50? 1969, of course!

What happens when the latest CentOS 6.4/RHEL/FreeBSD GnuTLS certtool gets used to generate a TLS certificate with a 18250-day validity period? Time travel back in... Read full post

See all posts by this author
Pavel Senchanka
Most recent post:

Building reproducible Python environments with XARs

Our traders and researchers love Python for its agility and for its huge open-source ecosystem, especially when it comes to machine learning. But the heavy... Read full post

See all posts by this author
Rahul Yesantharao
Most recent post:

Accelerating zk-SNARKs - MSM and NTT algorithms on FPGAs with Hardcaml

In 2022 a consortium of companies ran an international competition, called the ZPrize, to advance the state of the art in “zero-knowledge” cryptography. We decided... Read full post

See all posts by this author
Ralph Douglass
Most recent post:

Reverse web proxy in ~50 lines of BASH

In the spirit of reinventing the wheel for fun, I hacked this together as a quick challenge to myself last week. It’s a little rough... Read full post

See all posts by this author
Ricson Cheng
Most recent post:

Visualizing information propagation in markets

The Dojima rice market, established around 1716, is widely considered to be the world’s first organized futures exchange. Instead of directly exchanging money for rice... Read full post

See all posts by this author
Robert Sclater
Most recent post:

Disabling Chrome's x-webkit-speech vulnerability

It’s been a busy couple of weeks for Internet security! Almost unnoticed amongst the ‘Heartbleed’ fallout was a post on Guy Aharonovsky’s blog detailing how... Read full post

See all posts by this author
Roshan James
Most recent post:

Core_bench: better micro-benchmarks through linear regression

This post is meant to be an introduction to Core_bench, our micro-benchmarking library for OCaml. Core_bench is similar to Haskell’s micro-benchmarking library, Criterion, in that... Read full post

See all posts by this author
Sam DeFabbia-Kane
Most recent post:

The Jane Street Interview Process — 2020 Edition

We’re busy preparing for our software engineering fall hiring season. Over the years we’ve done our best to make our interview process more transparent to... Read full post

See all posts by this author
Sebastian Funk
Most recent post:

What a Jane Street software engineering interview is like

Are you thinking about applying to Jane Street for a software engineering role? Or already have a phone interview scheduled but unsure what to expect?... Read full post

See all posts by this author
Spiros Eliopoulos
Most recent post:

Jane Street Tech Talk, Verifying Network Data Planes

After a summer hiatus, the Jane Street Tech Talks series is back on for the fall! Last we left it, our very own Dominick LoBraico... Read full post

See all posts by this author
Stephen Dolan
Most recent post:

Memory allocator showdown

Since version 4.10, OCaml offers a new best-fit memory allocator alongside its existing default, the next-fit allocator. At Jane Street, we've seen a big improvement... Read full post

See all posts by this author
Stephen Weeks
Most recent post:

A module type equivalence surprise

I usually think of two module types S1 and S2 as being equivalent if the following two functors type check: Read full post

See all posts by this author
Summer Project
Most recent post:

Presenting the 2009 JSSP projects

This year’s JSSP projects have been selected. We think it’s an exciting list of projects, and we’re pleased that this year the projects support a... Read full post

See all posts by this author
Sydney Mitchell
Most recent post:

How Jane Street Pairs Interns to Projects and Teams During the Software Engineering Internship

Software engineering intern candidates often ask how team placement works and how much input incoming interns have over their teams and projects. We know team... Read full post

See all posts by this author
Todd Lubin
Most recent post:

When Bash Scripts Bite

There are abundant resources online trying to scare programmers away from using shell scripts. Most of them, if anything, succeed in convincing the reader to... Read full post

See all posts by this author
Tristan Hume
Most recent post:

Magic-trace: Diagnosing tricky performance issues easily with Intel Processor Trace

Intel Processor Trace is a hardware technology that can record all program execution flow along with timing information accurate to around 30ns. As far as... Read full post

See all posts by this author
Vladimir Brankov
Most recent post:

CPU Registers and OCaml

Even though registers are a low-level CPU concept, having some knowledge about them can help write faster code. Simply put, a CPU register is a... Read full post

See all posts by this author
Xavier Clerc
Most recent post:

Proofs (and Refutations) using Z3

People often think of formal methods and theorem provers as forbidding tools, cool in theory but with a steep learning curve that makes them hard... Read full post

See all posts by this author
Yaron Minsky
Most recent post:

What the interns have wrought, 2023 edition

We’re once again at the end of our internship season, and it’s my task to provide a few highlights of what the dev interns accomplished... Read full post

See all posts by this author