20 Jun 2025
Can we have OCaml notebooks as pure client-side code? Can these notebooks have
rich editor support (highlighting, formatting, types on hover, autocompletion,
inline diagnostics, etc.)? Can you take packages from OPAM and use them in these
notebooks?
The answer to all of these turns out to be a resounding yes thanks for
x-ocaml. This post is my experiment playing
with x-ocaml
and integrating that into this blog.
04 Jun 2025
In the last post,
we looked at uniqueness mode and how uniqueness may be used to optimise. As we
will see, uniqueness alone is insufficient in practice, and we also need a
concept of linearity for uniqueness to be useful.
29 May 2025
Jane Street has been developing modal types for OCaml – an extension to the
type system where modes track properties of values, such as their scope, thread
sharing, and aliasing. These modes restrict which operations are permitted on
values, enabling safer and more efficient systems programming. In this post, I
focus on the uniqueness mode, which tracks aliasing, and show how it can
eliminate certain runtime checks.
28 Apr 2025
Recently, I posted on X and
LinkedIn
that I am always looking for excellent people to join my group. I received a lot
of enquiries, some of which led to internship hires (yay!). But mostly, I seemed
to offer similar advice. I thought I’d write a post that summarise my responses.
24 Jul 2024
Off-CPU analysis is where the program behavior when it is not running is
recorded and analysed. See Brendan Gregg’s eBPF based off-CPU
analysis. While on-CPU
performance monitoring tools such as perf
give you an idea of where the
program is actively spending its time, they won’t tell you where the program
is spending time blocked waiting for an action. Off-CPU analysis reveals
information about where the program is spending time passively.
20 Jan 2024
A number of folks who regularly use OCaml were surprised to learn that you can
reasonably debug OCaml programs using gdb. The aim of the post is to show the
first steps in using gdb on OCaml programs.
19 Jan 2020
Last semester at IIT Madras, I taught a revamped core course CS3100 Paradigms
of Programming, which introduces 3rd-year
students to functional and logic programming paradigms. While the course had
been traditionally offered in Lisp and Prolog, I introduced OCaml instead of
Lisp. All of the lectures were delivered through interactive Jupyter
notebooks. The assignments were also distributed as Jupyter notebooks and
evaluated through autograder facility in Jupyter. There has since been several
requests to replicate this setup elsewhere. Hence, I thought I should write
about the set up and experience of teaching through Jupyter notebooks.
16 Sep 2019
Multiple Research Software Engineer positions are available in the
Department of Computer Science and Engineering at
the Indian Institute of Technology, Madras to develop
Multicore OCaml and enable
Tezos ecosystem to benefit from Multicore OCaml.
28 Apr 2019
Multicore OCaml comes with
a concurrent garbage
collector, where
the garbage collector and the mutator threads run concurrently. Debugging
concurrent GC bugs has been the most frustrating / satisfying (when fixed) part
of Multicore OCaml development. rr, a record and
replay tool has made debugging concurrent GC bugs a sustainable exercise. In
this short post, I’ll describe why.
22 Apr 2019
I am chairing the PC for ML family workshop this year. The PC is happy to invite
submissions for the workshop to be held during the ICFP conference week on
Thursday 22nd August 2019.
ML family workshop invites submissions touching on the programming languages
traditionally seen as part of the “ML family”. However, we are also keen to
receive submissions from other related language groups. If you have questions
about the suitability of your work for the workshop, please feel free to write
an email.