yminsky avatar

Yaron Minsky

Yaron Minsky joined Jane Street back in 2002, and claims the dubious honor of having convinced the firm to start using OCaml. He also spends way too much time teaching his kids how to program.

101 posts by Yaron Minsky

Aug 25, 2017 | 1 min read
How to design a tree diffing algorithm
For those of you interested in what what interns do at Jane Street, here’s a post from former intern Tristan Hume, on his work developing...
Aug 24, 2017 | 10 min read
Ironing out your development style
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...
Aug 16, 2017 | 1 min read
Hiring an FPGA engineer
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...
Aug 14, 2017 | 9 min read
What the interns have wrought, 2017 edition
Intern season is coming to a close, and it’s a nice time to look back (as I’ve done in previous years) and review some of...
May 01, 2017 | 1 min read
Looking for a technical writer
Jane Street is looking to hire a technical writer. If you’re interested, or know someone who you think would be a good match, here’s the...
Apr 25, 2017 | 1 min read
Caveat Configurator: how to replace configs with code, and why you might not want to
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...
Mar 15, 2017 | 1 min read
One more talk, two more videos
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...
Feb 16, 2017 | 1 min read
Jane Street Tech Talks: Verifying Puppet Configs
Our first Jane Street Tech Talk went really well! Thanks to everyone who came and made it a fun event.
Jan 11, 2017 | 1 min read
How to Build an Exchange
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...
Oct 27, 2016 | 1 min read
Observations of a functional programmer
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...
Sep 13, 2016 | 6 min read
What the interns have wrought, 2016
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....
Aug 30, 2016 | 1 min read
Do you love dev tools? Come work at Jane Street.
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...
Jun 21, 2016 | 8 min read
Let syntax, and why you should use it
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...
Mar 09, 2016 | 1 min read
Seven Implementations of Incremental
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...
Mar 01, 2016 | 8 min read
OCaml 4.03: Everything else
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...
Feb 24, 2016 | 8 min read
A better inliner for OCaml, and why it matters
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.
Feb 10, 2016 | 13 min read
Self Adjusting DOM and Diffable Data
In my last post, I gave some simple examples showing how you could use self adjusting computations, or SAC, as embodied by our Incremental library,...
Feb 06, 2016 | 11 min read
Self Adjusting DOM
I’ve been thinking recently about how to structure dynamic web applications, and in particular about the role that incremental computation should play.
Jan 30, 2016 | 11 min read
Incremental computation and the web
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,...
Jan 25, 2016 | 1 min read
Why OCaml?
Here’s a post from a talk I gave this last summer during our internship program about why we use OCaml. It spends a lot of...
Dec 02, 2015 | 4 min read
Testing with expectations
Testing is important, and it’s hard to get people to do as much of it as they should. Testing tools matter because the smoother the...
Aug 19, 2015 | 1 min read
No (functional) experience required
Jane Street is a serious functional programming shop. We use OCaml, a statically typed functional language for almost everything and have what is probably the...
Jul 18, 2015 | 7 min read
Introducing Incremental
I’m pleased to announce the release of Incremental (well commented mli here), a powerful library for building self-adjusting computations, i.e., computations that can be updated...
Apr 10, 2015 | 9 min read
Building a lower-latency GC
We’ve been doing a bunch of work recently on improving the responsiveness of OCaml’s garbage collector. I thought it would be worth discussing these developments...
Mar 30, 2015 | 9 min read
Why GADTs matter for performance
When GADTs (Generalized Algebraic Data Types) landed in OCaml, I wasn’t particularly happy about it. I assumed that it was the kind of nonsense you...
Mar 21, 2015 | 6 min read
A lighter Core
We recently released a version of our open source libraries with a much anticipated change – Async_kernel, the heart of the Async concurrent programming library,...
Mar 04, 2015 | 7 min read
Centralizing distributed version control, revisited
7 years ago, I wrote a blog post about how we at Jane Street were using our distributed version control system (hg, though the story...
Jan 31, 2015 | 2 min read
Making making better
We spend a lot of time and effort on training new people, and it never stops for long. Right now our winter-intern class is ending;...
Nov 17, 2014 | 4 min read
How to choose a teaching language
If you were teaching a programming course, what language would you teach it in?
Oct 16, 2014 | 6 min read
What the interns have wrought: RPC_parallel and Core_profiler
We’re in the midst of intern hiring season, and so we get a lot of questions about what it’s like to be an intern at...
Jul 31, 2014 | 1 min read
The ML Workshop looks fantastic
I’m a little biased, by being on the steering committee, but this year’s ML workshop looks really interesting. Here’s a link to the program:
Jul 06, 2014 | 6 min read
Making “never break the build” scale
I just stumbled across a post from earlier this year by Graydon Hoare, of Rust fame. The post is about what he calls the “Not...
Jun 29, 2014 | 5 min read
Notes on Naming
I’ve been thinking about naming recently, specifically the naming of new systems. It’s tempting to think of naming as trivial, but it really does matter....
Jun 26, 2014 | 3 min read
Reading Lamport, again
We’ve just kicked off an internal distributed-systems seminar. Our inaugral paper was Lamport’s classic “Time, Clocks and the Ordering of Events in a Distributed System”....
Jun 24, 2014 | 9 min read
Iron out your release process
This is the third in a series of posts about the design of Iron, our new code review and release management tool. The other two...
Jun 13, 2014 | 5 min read
Scrutinize your code in style
This is the second in a series of posts about the design of Iron, our new code review tool. You can read the first post...
Jun 12, 2014 | 6 min read
Code review that isn't boring
At Jane Street, we care a lot about code review. We think that high quality code, and in particular, readable code, helps us maintain the...
May 18, 2014 | 8 min read
OCaml 4.02: everything else
This is the last in my series of posts about new features in OCaml 4.02. So far, I’ve discussed how OCaml is getting more like...
May 17, 2014 | 2 min read
Pattern matching and exception handling, unite!
(OCaml 4.02 has branched, which makes it a good time to stop and take a look at what to expect for this release. This is...
May 15, 2014 | 1 min read
Hiring a compiler engineer
Jane Street is looking to hire an experienced compiler engineer to work on improving the OCaml compiler. The focus would be on performance-related improvements to...
May 12, 2014 | 4 min read
Better namespaces through module aliases
(OCaml 4.02 is entering a feature freeze, which makes it a good time unfto stop and take a look at what to expect for this...
May 08, 2014 | 3 min read
Extension Points, or how OCaml is becoming more like Lisp
(OCaml 4.02 is entering a feature freeze, which makes it a good time to stop and take a look at what to expect for this...
Feb 24, 2014 | 10 min read
Breaking down FRP
As anyone who has looked into functional reactive programming (FRP) knows, there are lots of competing approaches to it, and not a lot of conceptual...
Dec 08, 2013 | 1 min read
RWO tidbits: the runtime
This is my favorite tweet about Real World OCaml.
Dec 01, 2013 | 1 min read
RWO tidbits: Benign effects
Now that Real World OCaml is out, I thought it would be fun to have a series of posts highlighting different interesting corners of the...
Nov 11, 2013 | 4 min read
The making of Real World OCaml
May 03, 2013 | 10 min read
Patch review vs diff review, revisited
I’ve been thinking about code review a lot recently.
Apr 02, 2013 | 1 min read
Hackerschool tutorial at Jane Street
Oct 19, 2012 | 2 min read
Announcing OCaml Labs
Jane Street is deeply invested in OCaml and in the larger OCaml community, which we depend on both for the new recruits it provides as...
Feb 21, 2012 | 1 min read
Do you solve real problems with FP? Then come talk about it at CUFP!
The 2012 CUFP call for presentations is out. CUFP is the Commerical Users of Functional Programming workshop, and it’s a great place to interact with...
Jan 12, 2012 | 3 min read
Making staging explicit
We just had an interesting discussion around the office about staging and curried functions. I was reading over a new string-escaping routine, which had the...
Jan 07, 2012 | 1 min read
Fork Core!
We’ve now put our collection of open-source libraries out on bitbucket. You can find and browse the code here.
Nov 02, 2011 | 2 min read
OCaml, the ultimate refactoring tool
This is why I love OCaml.
Oct 25, 2011 | 2 min read
Announcing Async
We just released a new monadic concurrency library called Async.
Oct 03, 2011 | 1 min read
A mailing list for Core
After giving a tutorial on the Core libraries at CUFP, it’s become clear that we need to provide a more open forum for people to...
Sep 13, 2011 | 1 min read
Coming to ICFP/CUFP? Propose a BOF!
CUFP will again be having Bird-of-a-Feather sessions to discuss a variety of FP topics. Last year’s BOFs were a lot of fun, with topics ranging...
Jul 31, 2011 | 3 min read
Rethinking Univ
A few years back, Stephen wrote a fun post about how to build a so-called “universal type” in OCaml. Such a type allows you to...
Jul 28, 2011 | 1 min read
Time to register for CUFP!
If you’re interested in applying functional programming to real world problems, then you should consider joining us at CUFP, the Commercial Users of Functional Programming...
Jun 24, 2011 | 6 min read
Dropping history with Mercurial
One feature we’ve wanted from hg for a while is the ability to drop history. It’s a natural thing to want, after all; with any...
Apr 25, 2011 | 2 min read
Core Gems: many happy returns
One recent arrival in Core is with_return, a function that lets you return early from a computation. Here’s a trivial example:
Apr 09, 2011 | 2 min read
OCaml is smarter than I thought
People (myself included) like to say that OCaml isn’t really an optimizing compiler, that it has a pretty straight-ahead compilation strategy, and for the most...
Apr 06, 2011 | 2 min read
OCamlPro and the future of OCaml
Fabrice Le Fessant has just set up a new company, OCamlPro, whose goal is to provide commercial support for OCaml, and to make it a...
Mar 27, 2011 | 1 min read
Effective ML Revisited (with videos)
Here are the videos to go with the guest lecture I just gave at Harvard. It’s not too different from the one that I gave...
Mar 25, 2011 | 1 min read
Core 0.7.0 is out!
The newest release of Jane Street’s core standard library is now out! It’s been a while, and a lot of small things have changed in...
Mar 23, 2011 | 1 min read
Do you use FP in anger? Then talk about it at CUFP this year!
CUFP (Commercial Users of Functional Programming) is a yearly workshop (associated with ICFP) where functional programmers come together to share ideas, and this year the...
Mar 09, 2011 | 4 min read
Effective ML Revisited
Harvard is again teaching OCaml to its first-year students, and Greg Morrissett again this year invited me to give a guest lecture. I gave a...
Aug 25, 2010 | 1 min read
BOFs, Tutorials and Talks, oh my!
I’m on the program committee for CUFP this year, so I’m a bit biased, but I feel very good about this year’s program. For the...
Aug 21, 2010 | 1 min read
Effective ML video
A while back I mentioned that I’d given a guest lecture at classes at Harvard and Northeastern, and that the Harvard class had been taped....
Jul 23, 2010 | 2 min read
OCaml as a scripting language
There is a common perception that you should choose your type system based on the scale of your project. If you’re writing a little program...
Jul 15, 2010 | 9 min read
Making something out of nothing (or, why None is better than NaN and NULL)
Null is a pervasive concept in computing. Virtually all programming languages have a way of expressing nothing, nullity, no answer. But handling nulls correctly turns...
Apr 27, 2010 | 2 min read
Another use for private type abbreviations
Early in ‘09, I put up a post asking Private type abbreviations, what are they good for?. I got a lot of good answers to...
Apr 22, 2010 | 1 min read
Effective ML
A couple of weeks ago I visited Northeastern and Harvard where I gave guest lectures on the subject of programming effectively in ML. In both...
Apr 22, 2010 | 1 min read
CUFP 2010 is coming!
CUFP is a yearly workshop for commercial users of functional programming. CUFP is aimed not just at industrial uses, but really at any uses of...
Nov 07, 2009 | 2 min read
Core Gems: Time
This post is meant to be the first in a series highlighting various interesting features of Core (although I should acknowledge that most of the...
Oct 10, 2009 | 3 min read
Optimizing List.map
With the latest release of Core, I’ve had occasion to think about how our libraries differ from INRIA’s. One difference that’s been there from the...
Sep 29, 2009 | 1 min read
Another JSSP post
Just thought I should point out another post, this one from Patai Gergely, summarizing events at the JSSP end-of-summer meeting, this one including pictures!
Sep 23, 2009 | 3 min read
Jane Street Summer Project round-up
We just had the end-of-summer meeting for this year’s JSSP, and this is my personal summary of the event. We expect to post more information...
Aug 16, 2009 | 1 min read
Designing a code-review tool, Part 2: Patches or Diffs
One of the key decisions to make when designing a code review system is choosing the basic unit of code review. One approach common in...
Aug 08, 2009 | 2 min read
Designing a code-review tool, Part 1
We’ve just rolled out a new software tool for managing our code review process. Code review is a pretty central part of how we try...
May 16, 2009 | 2 min read
What do Haskellers have against exhaustiveness?
One of my favorite features of the Hindley-Milner type system is the built-in exhaustiveness checking that is applied to pattern matches. I like this feature...
Mar 12, 2009 | 1 min read
Caml Trading talk at CMU
I was at CMU several weeks ago, and gave a version of my “Caml Trading” talk there. See below if you are interested in seeing...
Mar 04, 2009 | 1 min read
Do you use FP as a means rather than an end?
If you do, you might want to consider submitting a proposal to the 2009 CUFP (Commerical Users of Functional Programming) workshop.
Feb 12, 2009 | 2 min read
Private type abbreviations, what are they good for?
I’m having a lot of trouble figuring out what private type abbreviations are good for. Private type abbreviations arrived as a new feature in OCaml...
Dec 03, 2008 | 2 min read
Lightweight versioning for lightweight protocols
At Jane Street, we often write OCaml programs that communicate over the network with each other, and as such, we need to build lots of...
Sep 30, 2008 | 3 min read
The OSP meeting
I’ve been meaning to write about the OCaml Summer Project end-of-summer meeting that occurred on September 12th, but as those of you who read the...
Sep 23, 2008 | 6 min read
A Working Programmer's Guide to Type-Indexed Values
Parametric polymorphism is a basic mechanism in ML for writing code that is generic, i.e., that can be used on multiple different types. To get...
Sep 17, 2008 | 2 min read
Centralizing distributed version control
We switched over to using Mercurial about a year and a half ago (from tla/baz–don’t ask), and it’s worked out quite well for us. One...
Sep 03, 2008 | 2 min read
Building a better compare
In a recent post, I described some of the problems associated with OCaml’s built in polymorphic comparison functions. So, if you want to avoid OCaml’s...
Aug 27, 2008 | 1 min read
Ask and ye shall receive
At least, if you ask with a nicely detailed bug report. Looks like the missed optimization for equality on polymorphic variants I mentioned in a...
Aug 18, 2008 | 2 min read
The perils of polymorphic compare
I have a love-hate relationship with OCaml’s polymorphic comparison functions, which I think I share with a lot of people who use the language. For...
Aug 05, 2008 | 1 min read
Better float unboxing
A couple of months ago, Pascal noticed some missed optimizations in OCaml’s float unboxing optimizations. In some cases, code that looked like it should be...
Jun 21, 2008 | 2 min read
Folding over fields
One of the best features of ML is pattern matching. Pattern matching is essentially a way of writing a case analysis driven by the structure...
May 11, 2008 | 4 min read
Core Principles: uniformity of interface
This is intended to be the first in a series of posts talking about the design principles behind core, Jane Street’s alternative to OCaml’s standard...
May 02, 2008 | 1 min read
Core has landed
We are proud to announce the first public release of `core`, Jane Street's own alternative to OCaml's standard library. We use this library as the...
Apr 16, 2008 | 1 min read
OCaml Annoyance #23: type declarations are implicitly recursive
Unlike let declarations, type declarations in OCaml are automatically recursive. This seems harmless at first, but it actually causes more trouble than it’s worth. To...
Apr 02, 2008 | 2 min read
The ML sweet spot
I just got back from visiting Northeastern and Harvard where I yet again flogged a version of my POPL talk. Olin Shivers was my host...
Mar 26, 2008 | 1 min read
Bind without tears
One of the annoyances of using monads in OCaml is that the syntax is awkward. You can see why if you look at a simple...
Mar 15, 2008 | 8 min read
Typing RPCs
At Jane Street, we end up writing lots of messaging protocols, and many of these protocols end up being simple RPC-style protocols, *i.e.*, protocols with...
Mar 05, 2008 | 1 min read
Talking at Penn
I just got back from an enjoyable visit at Penn. I gave a version of my POPL talk for an audience consisting in large part...
Feb 28, 2008 | 1 min read
We've got a blog!
Jane Street finally has a blog! Jane Street is one of the biggest commercial users of OCaml, and we like to think that we’ve picked...
Feb 28, 2008 | 7 min read
HOWTO: Static access control using phantom types
We thought that phantom types would be an appropriate topic for our first real post because they are a good example of a powerful and...