Open-source software
My projects are hosted on GitHub. They are documented using Sphinx and the Alabaster theme. Reference documentation is generated from Python source code by autodoc, form C++ source code by Doxygen and Breathe, and from OCaml source code by a preliminary version of my Sphinx extension for OCaml
My Python libraries are distributed on the Python package index, and my OCaml ones are published on OPAM.
Projects filter:
PyGithub
Python Library
PyGithub is a Python client library for the GitHub REST API v3. It’s widely used (2400+ stars on GitHub) and is now maintained by the community.
The main challenge is the size of the API: there are hundreds of endpoints, each with one to six HTTP verbs. PyGithub provides a specialized interface for each combination; this makes client code safe. Some other libraries let their user write the name of the endpoints: mistakes are only discovered when the HTTP request is sent. In PyGithub, if the method exists, then the endpoint exists.
DrawTurksHead
Python C++ Library Program Visual
DrawTurksHead is a Python library to draw Turk’s head knots. You can try the interactive demo.
Its core functionality is written in C++ and exposed as a Python library using Boost.Python. Two-way integration between C++ and Python code allows a Python callback computing the colors to be called by the C++ code.
Drawings are made using Cairo. The Cairo context is created in Python using PyCairo and passed to the C++ layer. The C++ code uses Cairomm to do the actual drawing.
DrawGrammar
OCaml Visual Web Program
DrawGrammar is a tool to draw railroad diagrams of EBNF grammars. It is available as an interactive demo and as a command-line tool.
It is written in OCaml. The OCaml bytecode is translated to JavaScript using js_of_ocaml. My library JsOfOCairo is used to share the Cairo-based drawing code between HTML5 canvases and PNG files. The parsers for ISO-14977 EBNF (and the variant used for the Python grammar) are written using the Menhir parser generator.
Collide
OCaml Visual Program Mobile
Collide is an event-based simulation of elastic collisions between two-dimensional balls. An interactive demo is available.
It’s written in OCaml. The same core code is used to produce several applications:
- native Gtk and command-line applications
- a browser application
- a mobile application
The cairo-based drawing code is used on HTML5 canvases, PNG files and Gtk Cairo contexts thanks to my library JsOfOCairo. The OCaml bytecode is translated to JavaScript using js_of_ocaml and the resulting browser-based application is packaged using Cordova to produce the mobile application.
vincent-jacques.net
Web JavaScript
vincent-jacques.net is my personal website, the one you’re looking at.
It’s generated as a static website using Nuxt.js (thus Vue.js, Vue Router, webpack, etc.) and is hosted on GitHub Pages.
On the client side, it uses Bootstrap (throught BootstrapVue), Sass and a little bit of Font Awesome.
infrastructure
Web
My infrastructure repository holds my… infrastructure, as code.
It uses Terraform to maintain my DNS records at Gandi, and point them at a Kubernetes+Helm cluster on Google Cloud Platform. (I left Amazon Web Services when I adopted Kubernetes because of the GKE pricing).
Private credential files are kept securely in the public git repository using git-crypt.
I use a single IP address for all my (sub-)domains and use HAProxy to dispatch requests accordingly.
IpMap
JavaScript Visual Web
IpMap is a browsable map of the IPv4 address space inspired by xkcd 195, Map of the Internet. You can try the interactive demo.
It’s implemented in HTML5 and JavaScript, purely on the client side, using jQuery and jquery-mousewheel.
I’ve recently improved my knowledge of the JavaScript language and ecosystem. I think this project would deserve some work to improve its code quality and maintainability. I keep it here because it’s still working software.
ActionTree
Python Library
ActionTree is a Python library to execute (long) actions in parallel, respecting dependencies between those actions.
To ensure that side-effects from an action don’t affect others, it uses Python’s multiprocessing module to launch each action in its own subprocess.
It also uses Graphviz (through the graphviz Python module) and matplotlib to produce visual reports of the execution.
variadic
Python Library
variadic is a Python function decorator to write variadic functions accepting a mix of arguments and iterables of those arguments.
Its main added value is that decorated functions keep their signature, so tools doing introspection (Sphinx doc, IDEs, etc.) will work like there is no decorator.
The wrapper function is generated using Python’s ast module.
This avoids using eval
on generated code.
JsOfOCairo
OCaml Web Library
JsOfOCairo is a OCaml library to reuse Cairo-based drawing code in web browsers.
It’s an adapter, implementing (a reasonable subset of) the interface of ocaml-cairo targeting HTML5 canvas elements as exposed to OCaml by js_of_ocaml.
hashids-ocaml
OCaml Library
hashids-ocaml is an OCaml implementation of hashids.
Hashids, by Ivan Akimov, is a successful small library to obfuscate integers, mainly used to hide growing sequences when generating public URLs. It’s been ported to a wide variety of programming languages by the community.
Polyglot
C++ Python JavaScript OCaml
Polyglot is a collection of examples of how to interface pieces of code written in different languages, and/or execute code in a runtime environment that’s not traditional for its language. Calling a C++ library from a Python program, or executing OCaml code in a web browser, are two examples amongst what Polyglot demonstrates.
It uses many different technologies to interface a few languages like C, C++, Python, OCaml and JavaScript.
QuadProgMm
C++ Library
QuadProgMm is a C++ library providing a domain specific language to express Quadratic programming problems as literal C++ equations on named variables.
It leverages the C++ type system to create a small domains specific language, and QuadProg++ to actually solve QP problems.