Yet again, we’re at the end of our internship season, and so it’s time to summarize whatthe interns were up to!| Jane Street Blog
At Jane Street, we care a lot about code review. We think that high qualitycode, and in particular, readable code, helps us maintain the safety of oursystems...| Jane Street Blog
It’s the end of another dev internship season, and this one marked something of a transition, since halfway through the season, NY-based interns were invited back to the recently reinvigorated office. Which means that many more of us got the chance to meet and hang out with the interns in person than we did last year. And hopefully the interns were able to get a better sense of Jane Street and how it operates.| Jane Street Blog
Jane Street’s intern program yet again is coming to an end, which is a nice opportunity to look back over the summer and see what they’ve accomplished.| Jane Street Blog
In a previous blog post we detailed how we used OCaml to reproduce some classical deep-learning results that would usually be implemented in Python. Here we will do the same with some Reinforcement Learning (RL) experiments.| Jane Street Blog
Yet again, intern season is coming to a close, and so it’s time tolook back at what the interns have achieved in their short time withus. I’m always impress...| Jane Street Blog
We recently ran across a strange higgs-bugson that manifested itself in a critical system that stores and distributes the firm’s trading activity data, calle...| Jane Street Blog
At Jane Street, we’ve been actively making improvements to OCaml for a long time. Over thelast few years, we’ve started to build some fairly ambitious extens...| Jane Street Blog
Advent of Code is an annual Advent calendar| The OCaml Planet
Advent of Code is an annual Advent calendarfeaturing small programming puzzles created by Eric Wastl, which has been runningevery December since 2015. Being ...| Jane Street Tech Blog
As anyone who has looked into functional reactiveprogramming (FRP)knows, there are lots of competing approaches to it, and not a lot of conceptualclarity abo...| Jane Street Blog
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 result. The new layout should reach the open source world before the end of the year.| Jane Street Tech Blog
I am pleased to announce that we have recently released a slew of new Hardcaml libraries!| Jane Street Tech Blog
When we set up a schedule on a computer, such as a list of commands to run every day at particular times via Linux cron jobs, we expect that schedule to execute reliably. Of course we’ll check the logs to see whether the job has failed, but we never question whether the cron daemon itself will function. We always assume that it will, as it always has done; we are not expecting mutiny in the ranks of the operating system.| Jane Street Tech Blog
Now that OCaml 4.08 has been released, let’s have a look at what was accomplished, with a particular focus on how our plans for 4.08 fared. I’ll mostly focus on work that we in the Jane Street Tools & Compilers team were involved with, but we are just some of the contributors to the OCaml compiler, and I’ll have a quick look at the end of the post at some of the other work that went into 4.08.| Jane Street Tech Blog
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. If you haven’t read these feel free to do so now, we’ll wait right here until you’re done. Ready? Ok, let’s continue …| Jane Street Tech Blog
At Jane Street, for the last several years, we have been increasingly interested in machine learning and its many use cases. This is why it was exciting when earlier this year myself and a few of my colleagues had the opportunity to attend the AAAI 2019 conference. We’d like to take this space to share with you some of the interesting projects and themes we saw at the conference.| Jane Street Tech Blog
Jane Street is sponsoring this year’s MakeMIT hackathon, and we wanted to create a prize for the winners that would do justice to the maker spirit of the competition. As makers ourselves – it’s not unusual to find a “software” engineer here who hacks on FPGAs or who has a CNC machine at home – it felt natural to get our hands dirty.| Jane Street Tech Blog
At Jane Street, over the last few years, we’ve been increasingly exploring machine learning to improve our models. Many of us are fascinated by the rapid improvement we see in a wide variety of applications due to developments in deep learning and reinforcement learning, both for its exciting potential for our own problems, and also on a personal level of pure interest and curiosity outside of work.| Jane Street Tech Blog
This blog post is about an interesting detail about machine learning that I came across as a researcher at Jane Street - that of the interaction between L2 regularization, also known as weight decay, and batch normalization.| Jane Street Tech Blog
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 practitioners in many fields might be accustomed to having tens or hundreds of thousands of correctly labeled examples, some of our problems are more like having a billion training examples whose labels have only a slight tendency to be correct. These large datasets present a number of interesting engineering challenges. The one we address here: How do you shuff...| Jane Street Tech Blog
Last year we held a machine learning seminar in our London office, which was an opportunity to reproduce some classical deep learning results with a nice twist: we used OCaml as a programming language rather than Python. This allowed us to train models defined in a functional way in OCaml on a GPU using TensorFlow.| Jane Street Tech Blog
With the external release of OCaml 4.07.0 imminent, we in Jane Street’s Tools & Compilers group have been planning what we want to work on for inclusion in OCaml 4.08. These days OCaml uses (or at least attempts) a time-based release process with releases scheduled every 6 months. We’re trying to avoid rushing in changes at the last minute – as we’ve been prone to do in the past – so this list is restricted to things we could conceivably finish in the next 4-5 months.| Jane Street Tech Blog
Expect tests are a technique I’ve written about before, but until recently, it’s been a little on the theoretical side. That’s because it’s been hard to take these ideas out for a spin due to lack of tooling outside of Jane Street’s walls.| Jane Street Tech Blog
Interested in learning OCaml? In the NYC area? Then this might be for you!| Jane Street Tech Blog
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 to use in real life. In this post, we’re going to describe a case we ran into recently where we were able to leverage theorem proving technology, Z3 in particular, to validate some real world engineering we were doing on the OCaml compiler. This post is aimed at readers interested in compilers, but assumes no familiarity with actual compiler devel...| Jane Street Tech Blog
This post is aimed at readers who are already familiar with stochastic gradient descent (SGD) and terms like “batch size”. For an introduction to these ideas, I recommend Goodfellow et al.’s Deep Learning, in particular the introduction and, for more about SGD, Chapter 8. The relevance of SGD is that it has made it feasible to work with much more complex models than was formerly possible.| Jane Street Tech Blog
Trading is a competitive business. You need great people and great technology, of course, but also trading strategies that make money. Where do those strategies come from? In this post we’ll discuss how the interplay of data, math and technology informs how we develop and run strategies.| Jane Street Tech Blog
People seem to enjoy talking about programming methodologies. They give them cute names, like eXtreme programming, Agile, and Scrum; run conferences and build communities around them; write books that describe how to use them in excruciating detail; and manifestos that lay out their philosophy.| Jane Street Tech Blog
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 blindly put something that resembles| Jane Street Tech Blog
From now and then, I found myself having to write some mechanical and repetitive code. The usual solution for this is to write a code generator; for instance in the form of a ppx rewriter in the case of OCaml code. This however comes with a cost: code generators are harder to review than plain code and it is a new syntax to learn for other developers. So when the repetitive pattern is local to a specific library or not widely used, it is often not worth the effort. Especially if the code in q...| Jane Street Tech Blog
Spacetime is a new memory profiling facility for OCaml to help find space leaks and unwanted allocations. Whilst still a little rough around the edges, we’ve found it to be a very useful tool. Since there’s not much documentation for using spacetime beyond this readme, I’ve written a little intro to give people an idea of how to use it.| Jane Street Tech Blog
Now that the interns have mostly gone back to school, it’s a good time to look back at what they did while they were here. We had a bumper crop – more than 30 dev interns between our London, New York and Hong Kong offices – and they worked on just about every corner of our code-base.| Jane Street Tech Blog
Recruiting talented people has always been challenging.| Jane Street Tech Blog
Earlier this year, we created a ppx_let, a PPX rewriter that introduces a syntax for working with monadic and applicative libraries like Command, Async, Result and Incremental. We’ve now amassed about six months of experience with it, and we’ve now seen enough to recommend it to a wider audience.| Jane Street Tech Blog
In my previous post I wrote about Flambda, which is the single biggest feature coming to OCaml in this release. In this post, I’ll review the other features of 4.03 that caught my eye.| Jane Street Tech Blog
In my last post, I gave some simple examples showing howyou could useself adjusting computations,or SAC, as embodied by our Incremental library, toincrementa...| Jane Street Tech Blog
A “build system” is one of the most important tools in a developer’stoolbox. Roughly, it figures out how to create runnable programs froma bunch of different...| Jane Street Tech Blog
Like most places, Jane Street largely teaches developers through a kind of apprenticeship model. A team matching process tries to thoughtfully match new devs to a team that suits them; and from there carefully chosen projects, one-on-one mentorship, code review, and close collaboration with people “on the row” – teammates sitting near you – does most of the rest.| Jane Street Tech Blog
It’s no secret that Jane Street is an active participant in the programming language community, and we’re excited to be attending ICFP 2024, the International Conference on Functional Programming, in Milan next week! Most members of our OCaml Language team will be there, and as usual, we look forward to sharing our work with the wider community. Please see below for a full list of papers and talks that Jane Street folk are involved in. Note that a lot of these are collaborations of one ki...| Jane Street Tech Blog
Neural networks are often thought of as opaque, black-box function approximators, but theoretical tools let us describe and visualize their behavior. In particular, let’s study piecewise-linearity, a property many neural networks share. This property has beenstudiedbefore, but we’ll try to visualize it in more detail than has been previously done.| Jane Street Tech Blog
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 on the spot, merchants would agree on a price and future date at which rice and money would be exchanged. This allowed farmers and consumers to hedge their risk. As a result, information about the abundance or lack of rice would travel across the country as fast as rice merchants carried it.| Jane Street Tech Blog
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 like margin, financing costs, market risk, regulatory capital requirements, and so on. To that end, we’ve built systems that estimate these costs and propose ways to reduce them. Essentially, this is a numerical optimization problem.| Jane Street Tech Blog
We are excited to announce the launch of the Jane Street Graduate Research Fellowship!| Jane Street Tech Blog
We’re once again at the end of our internship season, and it’s my task to provide a few highlights of what the interns accomplished while they were here.| Jane Street Tech Blog
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 placement is an important factor for many students when deciding which internship to accept. We’ve spent considerable time and thought on this process in recent years and hope to demystify the experience with this post. 1 This process is used in New York and London. Due to their smaller size Hong Kong’s process is slightly different...| Jane Street Tech Blog
We spend a lot of time on education at Jane Street. Like, really a lot.| Jane Street Tech Blog
This role has been filled| Jane Street Tech Blog
Jane Street is running a Kaggle contest based on a real problem with real financial data. If you like ML projects, or think you might, head over and check it out. We think it’s a pretty fun one. The prizes are pretty good too, with a total $100K being paid out.| Jane Street Tech Blog
I’m excited (and slightly terrified) to announce that Jane Street is releasing a new podcast, called Signals and Threads, and I’m going to be the host.| Jane Street Tech Blog
It’s been an unusual internship season.| Jane Street Tech Blog
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 candidates. While many candidates show up knowing something about what our interviews look like, much of the information floating around on the internet is outdated or wrong. These past few months have also changed a lot about the process as we’ve adapted to working from home and other effects of COVID-19.| Jane Street Tech Blog
At Jane Street, we have some experience using FPGAs for low-latency systems–FPGAs are programmable hardware where you get the speed of an application-specific integrated circuit (ASIC) but without being committed to a design that’s burned into the chip. It wasn’t so long ago that FPGAs were expensive and rare, but these days, you can rent a $5,000 card on the Amazon AWS cloud for less than $3 an hour.| Jane Street Tech Blog
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 or building closer integration with applications or databases running on back-end servers.| Jane Street Tech Blog
Jane Street has been posting tech talks from internal speakers and invited guests for years—and they’re all available on our YouTube channel:| Jane Street Tech Blog
The cover image is based on Jupiter family by NASA/JPL.| Jane Street Tech Blog
Updates and a New Run| Jane Street Tech Blog
My job involves a lot of staring at large numbers, mostly latencies in nanoseconds, and picking out magnitudes like microseconds. I noticed myself constantly counting digits in my text editor, in my terminal, and in Jupyter notebooks in my browser.| Jane Street Tech Blog
Back when the Raspberry Pi was first released in 2012 Michael Bacarella wrote a blog post on using OCaml and Async on this little device. Since then installing OCaml via opam has become a pretty smooth experience and everything works out of the box when using Raspbian – the default Raspberry Pi distribution.| Jane Street Tech Blog
As our Tools & Compilers team has grown, the kinds of projects we work on has become more ambitious. Here are some of the major things we’re currently working on:| Jane Street Tech Blog
If you haven’t heard of it, Depth First Learning is a wonderful resource for learning about machine learning.| Jane Street Tech Blog
At Jane Street, our web UIs are built on top of an in-house framework called Incr_dom, modeled in part on React’s virtual DOM. Rendering different views efficiently in response to changes made to a shared model is a quintessentially incremental computation—so it should be no surprise that Incr_dom is built on top of Incremental.| Jane Street Tech Blog
One of the joys of working at Jane Street for the last 15 or so years has been seeing how our software stack has grown in scope. When I started, I was building pretty narrowly focused systems for doing statistical research on trading strategies, and then building systems for executing those same strategies.| Jane Street Tech Blog
As Jane Street grows, the quality of the development tools we use matters more and more. We increasingly work on the OCaml compiler itself: adding useful language features, fine-tuning the type system and improving the performance of the generated code. Alongside this, we also work on the surrounding toolchain, developing new tools for profiling, debugging, documentation and build automation.| Jane Street Tech Blog
It’s time for our next Jane Street Tech Talk. When we’ve solicited suggestions for topics, one common request has been to talk about our internal development process. Our next talk, How Jane Street Does Code Review, should fit the bill. The talk is being given by our own Ian Henry, and discusses how we approach code review, and in particular how Iron, the code review system we’ve been using and improving for some years now, fits in to that process.| Jane Street Tech Blog
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 presented on the evolution of our internal configuration methodology and the systems that support it. For anybody that missed it, you can check out a recording of the talk on YouTube.| Jane Street Tech Blog
For those of you interested in what whatinternsdo at Jane Street, here’s a post from former intern Tristan Hume, on his work developing tree-diffing algorithms last summer at Jane Street. It’s a fun (and very detailed!) read.| Jane Street Tech Blog
Jane Street is looking to hire an engineer with experience in both software and hardware design to work on FPGA-based applications, and on tools for creating such applications.| Jane Street Tech Blog
Update: I’m excited to say that we’ve now hired a (great!) technical writer, so the position is closed.| Jane Street Tech Blog
We have a new tech talk coming up on May 17th, from our very own Dominick LoBraico. This one is about how to represent configurations with programs. In some sense, this is an obvious idea. Lots of programmers have experienced the dysphoria that comes from watching your elegant little configuration format metamorphize into a badly constructed programming language with miserable tools. This happens because, as you try to make your configs clearer and more concise, you often end up walking down ...| Jane Street Tech Blog
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 be erased by a few bad decisions in scheduler policy, affinity, or background workload on a server.| Jane Street Tech Blog
I’m happy to announce our next public tech talk, called Seven Implementations of Incremental, on Wednesday, April 5th, presented by yours truly. You can register here.| Jane Street Tech Blog
Our first Jane Street Tech Talk went really well! Thanks to everyone who came and made it a fun event.| Jane Street Tech Blog
UPDATE: We are full up. Tons of people signed up for the talk, and we’re now at the limit of what we feel like we can support in the space. Thanks for all the interest, and if you didn’t get into this one, don’t worry, we have more talks coming!| Jane Street Tech Blog
Ppx is a preprocessing system for OCaml where one maps over the OCaml abstract syntax tree (AST) to interpret some special syntax fragments to generate code.| Jane Street Tech Blog
I was recently invited to do the keynote at the Commercial Users of Functional Programming workshop, a 15-year-old gathering which is attached to ICFP, the primary academic functional programming conference.| Jane Street Tech Blog
In the last few years, we’ve spent more and more effort working on developer tools, to the point where we now have a tools-and-compilers group devoted to the area, for which we’re actively hiring.| Jane Street Tech Blog
At Jane Street, we have always been heavy users of pre-processors, first with camlp4 and now ppx. Pre-processing makes the infrastructure a bit more complex, but it save us a lot of time by taking care of a lot of tedious boilerplate code and in some case makes the code a bit prettier.| Jane Street Tech Blog
We finally got a decent recording of one of my favorite talks. This one is about our Incremental library (which I wrote about here), and in particular about the story of how we got to the present, quite performant, implementation.| Jane Street Tech Blog
OCaml 4.03 is branched and a first release candidate is imminent, so it seems like a good time to take stock of what’s coming.| Jane Street Tech Blog
| Jane Street Tech Blog
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!| Jane Street Tech Blog
We’re once again at the end of our internship season, and it’s time do our annual reviewof what the interns achieved while they were here.| Jane Street Tech Blog
Harvard is again teaching OCaml to its first-year students, and Greg Morrissettagain this year invited me to give a guest lecture. I gave a version of theEff...| Jane Street Blog
We’re once again at the end of our internship season, and it’s my taskto provide a few highlights of what the dev interns accomplished whilethey were here.| Jane Street Tech Blog
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.| Jane Street Tech Blog
Jane Street is excited to announce our sponsorship ofSoME3, Grant Sanderson and James Schloss’sthird Summer of Math Exposition. SoME is a contest that Grant ...| Jane Street Tech Blog
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.| Jane Street Tech Blog
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.| Jane Street Tech Blog
Our traders and researchers love Python for its agility and for its hugeopen-source ecosystem, especially when it comes to machine learning. Butthe heavy use...| Jane Street Tech Blog
At Jane Street we use a pattern/library called “expect tests” thatmakes test-writing feel like a REPL session, or like exploratoryprogramming in a Jupyter no...| Jane Street Tech Blog
In 2022 a consortium of companies ran an international competition,called the ZPrize, to advance the state ofthe art in “zero-knowledge” cryptography. We dec...| Jane Street Tech Blog
We are excited to announce research internships in our Tools andCompilers group.| Jane Street Tech Blog
I’m pleased to announce the release ofIncremental (wellcommented mlihere),a powerful library for building self-adjusting computations, i.e.,computations that...| Jane Street Blog
Automated testing is a powerful tool for finding bugs and specifying correctnessproperties of code. Haskell’s Quickcheck library is the most well-knownautoma...| Jane Street Tech Blog
Testing is important, and it’s hard to get people to do as much of it as theyshould. Testing tools matter because the smoother the process is, the more tests...| Jane Street Tech Blog
I’ve recently been thinking about the world of JavaScript and web applications.That’s odd for me, since I know almost nothing about the web. Indeed, JaneStre...| Jane Street Tech Blog
I’ve been thinking recently about how tostructure dynamic web applications, and in particular about the role thatincremental computation should play.| Jane Street Tech Blog
Are you thinking aboutapplying to Jane Streetfor a software engineering role? Or already have a phone interview scheduled but unsurewhat to expect? Read on a...| Jane Street Tech Blog