Nicolás OJEDA BÄR

I am a mathematician, based in Paris, currently working for LexiFi SAS.

Before that, I did undergraduate studies in Buenos Aires, a PhD in pure mathematics at the University of Chicago and Harvard University, and worked as a postdoctoral researcher at the University of Cambridge.

To get in touch, please send me an email.

Math

I am interested in many different areas of mathematics: algebraic geometry, algebra, and number theory, etc.

My PhD research was on p-adic Hodge theory, an area of number theory. My thesis and some notes are below. If you have any comments, suggestions, etc. please send me an email.

Towards the cohomological construction of Breuil-Kisin modules This is my thesis.

A course in crystalline cohomology Notes from a course given in 2013 at the University of Cambridge. The idea was to prove that a strongly divisible module over an unramified base was admissible in the sense of Fontaine by elementary ("de Rham") methods.

Code

I am interested in programming languages in a (very) broad sense: compilers, interpreters, network protocols, virtual machines, emulation, GUI programming and design, etc.

Most of my code is written in OCaml and is hosted on Github.

Below you can see a list of current and past projects. I like to hack, try new things, and rewrite things often (even old code). So, CAVEAT EMPTOR: some or all of the code below may not be working at any given moment.

Any and all comments, questions, etc. are warmly welcome: send me an email.

ocaml-explorer Inspired by gcc-explorer. The OCaml native-code compiler running purely in the browser. Courtesy of js_of_ocaml. WIP.

llpp A port of the llpp PDF viewer to Cocoa/OS X. Beta.

ocaml-graphics-osx A drop-in replacement for the OCaml Graphics module running under OS X/Cocoa. Experimental stage.

riscv-ocaml A full native port of the OCaml systel to the RISC-V architecture.

tortuga A Logo implementation in OCaml. Currently being rewritten. It uses dynamic binding for variables but static binding for functions. Functorizes over the concrete graphical backend.

c0-jvm A compiler from the C0 programming language to JVM bytecode. Proof of concept. It is able to compile and run some simple straight line programs (no control flow, complex data structures or functions). Supports source-level debug information. No dependencies.

gen_google_api An OCaml binding generator for Google APIs based on Google API Discovery Service. Is able to generate bindings for the Gmail API. Work in progress.

mirage-ipv6 An implementation of the IPv6 protocol for the Mirage TCP/IP stack. Written during my time at the University of Cambridge.

bitstring-ppx A ppx port of the ocaml-bitstring library. Mostly finished but needs more testing. Not yet available in OPAM.

llvm-tiger A compiler for the Tiger programming langauge targeting LLVM written in OCaml. Supports the full langauge. One pass only.

ocaml-libedit OCaml bindings for editline library (previously libedit). Currently in planning/experimental stage.

ocaml-utp OCaml bindings for BitTorrent Inc.'s libutp library using Lwt. Tries to expose an interface very close to BSD sockets. Mostly working, but needs better error handling and some general polish. It is meant to be used with ocaml-bt.

ocaml-dht OCaml bindings for libdht. Meant to be used with ocaml-bt. Available on OPAM.

ocaml-imap Pure OCaml implementation of IMAP client protocol. Under development. Available on OPAM. It has minimal dependencies and is completely independent of the IO backend used.

ocaml-bt OCaml implementation of the BitTorrent protocol. Currently being rewritten. UTP and DHT support via ocaml-utp and ocaml-dht.

tiger-interp An interpreter for the Tiger programming language written in OCaml.

llvm-min-caml An LLVM backend for the min-caml compiler. Supports full tail-call optimisation.

scheme2ml An experimental source-to-source translator from Scheme to OCaml. Was capable of running some moderately-sized tests.

llvm-bf A compiler from Brainf*ck to LLVM written in OCaml.

mips-o32-ocamlopt A backend for the OCaml native compiler targeting the MIPS 32-bit architecture with the o32 ABI. The ABI is not a good fit for the OCaml backend machinery so there are some bugs in the handling of native float operations.

ocaml-gccjit OCaml bindings for the libgccjit library.

ocaml-gsasl OCaml bindings for the GNU SASL library. Available on OPAM.

ocaml-macaroons An experimental OCaml implementation of Macaroons. Needs testing. Available on OPAM.

ppx_ocamllex An experimental ppx preprocessor that allows to define ocamllex lexers directly inside OCaml programs.

ocaml-ircd An overly simplistic IRC server. Meant as a test-bed for Mirage technologies. Incomplete.

ppx_fbt_trace A ppx version of pa_fbt_trace.

tiger2ml A source-to-source translator from the Tiger programming language to OCaml.

staged-ocs A MetaOCaml-staged interpreter of R5RS Scheme. Based on the ocs Scheme interpreter. Probably needs updating to compile with the current MetaOCaml version.

ocaml-maildir OCaml library to interact with Maildir. Available on OPAM.