I’m Vincent Jacques, alias @jacquev6 on the web. I’m a 36 years old, French, passionate software development engineer. I started programming when I was 12 on a Casio calculator, and I haven’t stopped learning.
I acquired a broad engineering education at Ecole Centrale Paris (2006) and specialized in Software as a very enthusiastic career choice.
After twelve years of professional software engineering, I value maintainable and evolutive source code and the use of tools and automation to create working, reliable software.
Since June, 2019, I’ve become a freelancer. What can I do for you?
For absolutely everyone:
- custom software development
For companies with Software Development Engineers (SDEs), large or small:
- technical interviews
Do not hesitate to contact me (email@example.com) and let’s find out how I can help you. First discussions are always free, with no commitment.
Custom software development
Whether you’re a start-up developing your first product, an academic wanting to simulate a model or explore and visualize data, or an individual with a task that “a computer should be able to do”, you have a choice between off-the-shelf software, and custom-made software.
With custom software, you are sure to get something that:
- is easy to learn and use (because you envisioned it)
- does exactly what you want (and you can make it evolve the way you want)
My contribution starts with understanding what you need, and giving you a price estimate. For that, we have to agree on something just formal enough to avoid misunderstandings. In most cases, it will be a specification document. Either you can provide one, or I can interview you and write it for you. In that case, we explore your functional requirements (what you need), your non-functional requirements if any (how you need it done), and your administrative requirements (do you need the software itself or just its result? should the project be kept secret? etc.).
I advocate developing software in small slices that bring value immediately. We’ll typically extract a first part of your project and agree on making it real. When I deliver this first working software, we’ll discuss how you want it to evolve, and we’ll iterate. This way you always have a clear view of what I’m doing, how much it will cost and what it will bring you. No surprises.
If you have a technical background, you can have a look at my open-source portfolio below to get a sense of the quality of my work.
My fee starts at 500€ per day (before taxes), for independent software development, if I can keep my author’s rights and talk freely about the project. I can absolutely integrate into an existing technical and methodological environment, sell you the intellectual property and/or agree on confidentiality, for an additional cost. You pay for what you need.
Conducting interviews to evaluate SDE candidates for your company is time consuming, and often frowned upon by your current engineers because it diverts them from their project tasks.
With my experience interviewing candidates for Criteo and Amazon, I can conduct technical interviews and write synthetic reports, based on your hiring criteria. This way, you get an external opinion, unbiased by a personal wish to work (or not) with a candidate, and based solely on their performance.
If you’ve just hired a few or many (junior) SDEs, you probably want to ensure they share a basic understanding of software development methods and tools.
I can animate synthetic and practical trainings about a set of topics I master:
- basic and advanced use of Git and GitHub
- basic use of the Unix command-line and its tools
- general software design principles (SOLID, GRASP, KISS, YAGNI)
- basic and advanced object-oriented programming Design Patterns
- the Python programming language and ecosystem (for people who already know a programming language)
I can personalize these trainings to your specific requirements. In particular, I can discuss beforehand with your more senior engineers to make sure my advice is compatible with their vision.
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
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.
Python C++ Library Program Visual
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.
OCaml Visual Web Program
OCaml Visual Program Mobile
It’s written in OCaml. The same core code is used to produce several applications:
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.
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.
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.
OCaml Web Library
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.