Services Blog Français

James Pic

James Pic is a full-stack developer, DevOps engineer, systems administrator and Open Source maintainer based in South West France. He has been writing software since 1995 and running Linux at home since 2004, then in production since 2006. His work combines software engineering, infrastructure automation, testing, continuous delivery, operations, security, and Lean practice.

He has contributed to Python, Django, Ansible, OpenStack, ElectionGuard, Arch Linux and many smaller projects, with more than 20,000 Open Source commits across public git platforms. His long-running projects include Django and Python libraries used by companies, public institutions, banks, insurance companies, governments, and large engineering teams.

James works best where development and operations are not separated: product teams, infrastructure teams, regulated environments, internal platforms, government systems, and complex legacy systems that need to become reliable, testable, automated, and maintainable.

Download the PDF CV

Professional profile

Selected achievements

Work experience

BNP Paribas

Developer and DevOps Engineer
2024 - present

Technologies: Oracle, PostgreSQL, SQL Server, MongoDB, Cassandra, Dynatrace, Python, Django, Ansible, Prometheus, Thanos, Grafana, ServiceNow, LogNCall, Jira, AI pipelines.

James works on large-scale database operations and observability for tens of thousands of database instances, including Oracle, PostgreSQL, SQL Server, MongoDB and Cassandra. He helped onboard the database estate into Dynatrace and automated the Dynatrace onboarding process.

Within the Cassandra team, he automated a database-backed instance and network referential using network scanning and introspection. The system discovers reachable IP addresses, connects to servers it can access, introspects them to identify Cassandra instances, registers them in a database, displays the inventory through a Django website, and generates dynamic Ansible inventory from that database.

He also built custom Cassandra monitoring with Prometheus, Thanos and Grafana, as well as custom alerting integrated with ServiceNow and LogNCall. The platform includes AI pipelines that investigate alerts.

James also maintains an AI pipeline that investigates deployment failures. The workflow searches for the root cause through an iterative loop, applies chain-of-thought and ReAct-style reasoning patterns, searches existing Jira tickets to attach new occurrences to known errors, and creates new Jira tickets when needed.

French Social Security

Full Stack Developer, DevOps Engineer and Systems Administrator
2017 - present, Toulouse

Technologies: Python, Django, PostgreSQL, Postfix, Docker, docker-compose, Traefik, Netdata, Prometheus, Grafana, Bash, restic, rsync, GitLab CI, Linux, JavaScript, React, Jenkins, pytest, Kubernetes.

James started a Django project from scratch and brought it to production with CI, 85% code coverage, continuous delivery with Ansible and Docker, and bare metal deployment. The system now supports 10,000 Social Security administrators, handles about 1 million user requests per year, and produces approximately 10 million euros per year in savings. His company continues to maintain the platform.

Thales

Lead DevOps Engineer and Systems Administrator
2022 - 2024

Technologies: Python, Ansible, VMware, Kubernetes, Jira, Bitbucket, GitLab CI, Docker, Red Hat Enterprise Linux, SELinux, firewalld, Linux, Windows, Bash, PowerShell, pytest, AWS, Azure.

James consulted for Thales Group on air-gapped automation with Ansible, Ansible action plugin development in Python and PowerShell, Ansible collection development, Git, Docker, and internal training. He administered GitLab and development servers, supported developers on RHEL environments, contributed to Ansible, and promoted Kubernetes Operator development.

Accenture / Objectif Libre

Cloud Consultant
2021 - 2022

Technologies: OpenStack, Python, MySQL, Galera, Kolla-Ansible, Ansible, Kubernetes, Kubeflow, AWX, Rancher, VMware.

James deployed secure OpenStack platforms in air-gapped environments, including work at MBDA Systems with Kolla-Ansible and OVN/Open vSwitch. He deployed AWX and Kubeflow on Kubernetes, debugged operators, contributed to Kolla-Ansible, supported OpenStack customers including Orange and INRAE, and worked with Societe Generale on OpenStack Cinder migrations and upgrades.

He also implemented automatic provisioning over vCenter for Rancher Kubernetes for a French education institution.

EquiSafe

Lead Developer, DevOps Engineer and Systems Administrator
2019 - 2020, Paris

Technologies: Python, Django, Ansible, Docker, docker-compose, PostgreSQL, Node.js, AWS, blockchain, Ethereum, Tezos, VueJS, Lemonway, JavaScript, Cypress, pytest.

James first joined as Lean Sensei and agile coach, then moved into a full-time technical leadership role. He worked on Python, Django, VueJS, Docker, observability, GitLab CI, Ethereum and Tezos development, while administering CI, staging and production servers.

PeopleDoc

DevOps Engineer, SecOps Engineer and Systems Administrator
2015 - 2017, Paris

Technologies: LXC, OpenStack, Ansible, Jenkins, GitHub, Linux, Bash, PostgreSQL, SaltStack.

James developed continuous integration for automated deployment across a stack of about 40 services. He automated tests for legacy SaltStack code with LXC containers, led the migration to Ansible, implemented continuous delivery and DevOps practices, participated in the security team, and maintained the internal OpenStack platform deployed on OpenCompute servers over PXE.

Numergy

OpenStack Developer, DevOps Engineer and Systems Administrator
2014 - 2015, Paris

Technologies: Python, RabbitMQ, OpenStack, MySQL, Galera, iptables, OpenVPN.

James developed four custom OpenStack services to replace default components: NAT agent, firewall agent, load balancer agent and VPN agent. He also automated most of the infrastructure with Ansible and Chef, including backups, rollback procedures, zero-downtime updates and encrypted secrets.

NeoSkills

Systems Administrator
2005 - 2014

Technologies: Gentoo, Linux Hardened, GrSecurity, VServer, PHP, MySQL, Apache, FastCGI.

James co-administered NeoSkills servers with William Waisse, also known as ne0futur, during the FreeNode IRC years. The team hosted PHP projects on Gentoo Linux Hardened with GrSecurity and VServer, including government-oriented security setups and custom binary package distributions.

France Premium

Full Stack Developer, DevOps Engineer and Systems Administrator
2010 - 2013

Technologies: Python, Linux, Django, PostgreSQL, PHP, MySQL, Redmine, JavaScript, Jenkins, Prestashop.

James worked on MadeleineMarket.com, synchronizing Prestashop with Easiware CRM through APIs. He also implemented features and bug fixes for LibeFood, a content aggregator, a sports betting social network, a niche CRM, and a CMS for art curators. He handled DevOps and systems administration on Linux bare metal.

Actif2i

Full Stack Developer, DevOps Engineer and Systems Administrator
2006 - 2010, Toulouse

Technologies: Python, Django, Linux, PHP, Gentoo Hardened, GrSecurity, MySQL, JavaScript, PHPUnit, unittest.

Actif2i was an agency run by a web designer and James as the technical lead. He handled full-stack development, DevOps and systems administration for many PHP and Django projects across a wide variety of customers, on bare metal Linux servers that he administered.

Jouve

Developer
2004 - 2006, Paris

Technologies: PHP, MySQL, HTML, CSS, WinDev.

James developed a print-on-demand online platform during the growth of industrial digital printing. He also worked on smaller SEO-oriented websites and WinDev GUI development for an internal CRM before choosing to work independently with Open Source and Linux.

Open Source and volunteering

Open Source software

Contributor, developer, DevOps engineer and systems administrator
2007 - present

James has contributed to major Open Source projects and maintains many smaller ones:

He also maintains CI, GitLab and other servers for the YourLabs hacker club, including Kubernetes deployments and project hosting.

La Quadrature du Net

Full Stack Developer, DevOps Engineer and Systems Administrator
2015 - 2017, Paris

Technologies: Python, Django, PostgreSQL, GitLab CI.

James rewrote Political Memory, also known as Memopol, from scratch and maintained it over the years. Memopol is known for its role in the campaign that helped block ACTA at the European Parliament. James also handled DevOps and systems administration on bare metal servers.

Awards and recognition

Speaking and community

Projects

Electeez

Created Electis from scratch: an Open Source online voting platform secured with homomorphic encryption and blockchain, deployed in several French institutions.

crudlfa+

Technologies: Python, Django, MVC, Selenium, pytest, JavaScript, Sphinx.

Originally built for Alcatel to refactor CRUD code, crudlfa+ enriches Django with a CRUD engine more powerful than Django admin. It is deployed in companies and government institutions.

django-autocomplete-light

Technologies: JavaScript, Python, Django, Selenium, Sphinx.

An autocompletion plugin for Django created in 2012 and maintained for more than ten years, with more than a thousand GitHub stars and professional support for companies such as Hitachi.

bigsudo

Technologies: Ansible, GitLab, pytest, cli2.

A wrapper for Ansible that automates recursive role dependency download and encapsulates common operational boilerplate.

Ryzom

Technologies: Python, Django, JavaScript, pytest.

Open Source isomorphic web components written in Python and transpiled to JavaScript, with support for Django and Google’s Material Design Components.

django-responsediff

Technologies: Python, Django, pytest.

HTTP response diffing against fixtures for testing, including a spider. It helps build regression tests from observed responses.

django-dbdiff

Technologies: Python, Django, pytest.

A pytest plugin for database state assertion and diffing, designed to reduce repetitive manual testing.

djhacker

Long-term solutions for features that James believes should exist in Django, started in 2021.

cli2

A Python CLI library based on metaprogramming. It was started in 2018 to reduce the verbosity James encountered in other CLI frameworks.

Other projects

Writing and media

Education

Systems and Network Administration Certificate
Illinois University of Technology, 2007.

Contact

django-autocomplete-light v4 and v5

Firewall Bypass Techniques with Bastions, Tunnels, and Proxies

Ipex-llm Tool Calling on Intel Arc how to

Ansible Custom Action Plugin Development Tutorial

Python-fu: Object-Oriented, Metaprogramming, Testing, Packaging

Quick Ansible tutorial

Introducing prompt2: The Ultimate AI-Powered CLI Tool

cli2 chttpx automated test fixture writing

cli2 v4

Git-Fu

container-fu

pytest superfixture design pattern

Hack'n'Dev Meetup Rentrée 2025

Ryzom: Replacing templates with Python Components

New Sponsorship Round

Shlax Container Image Builder: Preview

Django + Snowpack How To = djsnowpack

django-autocomplete-light 3.8.0 release

Why CRUDLFA+

cli2: Dynamic CLI for Python objects

Practice of eXtreme DevOps Demo @ Traefik Online Meetup

django-cities-light 3.5.1 and 3.6.0 releases, and jazzband move

Arch & Alpine Linux YourLabs Mirrors & Scripts

BigSudo eXtreme DevOps: Hacking Operations

Use npm install -g in ~/.local non-root

django-autocomplete-light 3.5.0 jquery moving release

django-autocomplete-light 3.4.1 bugfix release

django-autocomplete-light 3.4.0 release

yourlabs django decision

sphinx napoleon: support for numpy and google

pyfront: Meteorish django responsive frontend

join the testers chat

GitLab Dynamic Environments with Docker-Compose instead of K8S

Storing HD photos in a relational database: recipe for an epic fail

hyper-editor

how django front end validators works

free pdf & ebook about continuous delivery and devops

coreos

ops school curriculum ops school curriculum-01

Do not ignore dockerignore

asgi-30 aeracode

Yourlabs playlabs

compoctl 0.1.3 release

Stale: automatically close stale issues of a repository

winduptoy: a javascript free frontend

redhat: new set of container tools

python overtakes javascript as most questioned language

experimenting with rootless docker

Django & JS research report

nerdocs gdaps

Automate backups and rollbacks during deploy

shyml

ansible-compose: deploying docker-compose files over bare ssh

yourlabs/python container adds security audit tools

mapjoin

tri.form: ALternative to Django forms

Automatic test rewrite for django-dbdiff/django-responsediff/cli2

Setupmeta

shyml

very happy with gitlab-ci

open source software playlabs

Optimize ci pipeline

djcli 1.1 screenshot

cli2: unfrustrating CLI for Python automation

zulip advertisement

crudlfap live example on replit

playlabs the obscene ansible distribution

doc development contributing issue workflow

talks details: pyparis 2018

Django webpack loader

djcli: cli crud for django demo

Podman: the next generation of linux container

why you should pay a hacker 10k/year to maintain CI server

djcli

clitoo: make your python callbacks work in CLI too !

DevOps since 2005: a  retrospective

building-images-with-kaniko-and-gitlab-cicd

factory dry patterns crudlfap documentation

Process controller

jet back office totally ready to run your

Getting started with Elm

crudlfa 0.5.0 g drive ish design

php-sadness

clilabs 1.1.1 release

Quote post

clilabs: the Python CLI to get things done, with Django support

djcli: the new Django automation CLI command

Extreme devops

yarn vs npm which node package manager to use in 2018

playlabs: 30 seconds overview

PlayLabs: the Obscene Ansible Distribution, long version

Django tests that write themselves

Django collectdir

containers buildah

cfenollosa os tutorial

django-autocomplete-light 3.3.2 release

Jack Daniels writes to python language programers

make your donation now wikimedia foundation

django-autocomplete-light 3.3.1 release

Structlog documentation

djcall 0.0.5 release

Building docker images without docker

Building better containers: A Survey of Container Build Tools

niieanibash oo framework

Django-autocomplete-light 3.3.0 release

yourlabs django uwsgi spooler

django 2.1 released

nagare integrated development environment nagare

CHIP: a python's functional implementation of ReactJS

demonstration of our baremetal devops platform

auto deployed environment based on a commit in a brranch

ssh to production from within our gitlab instance

love gitlabs merge mini form

tom giraud's setup

Pip exception TypeError: parse() got an unexpected keyword argument 'transport_encoding'

breve demonstration de certains des developpements

tcpdump examples

all software sucks

crudlfap

the ultimate guide to data classes in python 3.7

it is not supposed to evaluate the code in the console

Put a nextjs server in front of django

Announcing YourLabs BtoC Service

open source software djnext

gitlab web ide screenshot

Screenshots from a backoffice using crudlfa+

indietypdjango automated logging

still finishing crudlfa framework for django 2.0

what could possibly go wrong with insert x86 instruction here

deploying scalable django app on kubernetes

apparently browser testing stack for crudlfa+

dev workflow

Quote post

CRUDLFA+ 0.3 Series

china labor watch: defending workers right in China

Django-react

yarn

wildfish

Django adapters

Model in Django: not what you think they are

Django-adapters

django-adapters audit writeup

welcome to the virtual open space

How I failed at documentation driven design

JS TDD in your Django apps

going isomorphic with python and react

victory on javascript lets build another django

Djangonauts: Say no to selenium drug

Django settings refactoring apps

django-dbdiff 0.7.3 release

DAL 3.3.0-rc3 release

django-autocomplete-light 3.3.0-rc1

Red Cross donation

Dvorak-intl-code Keyboard Layout Update

Quote post

get_context_data() considered harmful

next crudlfa version with materializecss preview

Alan and Alvin are creating materialize patreon

My work in 2013

L'Hermitage donation

postgresql database specialist at gitlab

WDB: the improbable web debugger for Python

Getting generic views to support “fake” models

YourLabs Business Service is born

What does the CRUDLFA+ acronym stands for ?

django==2.0a1 released

CRUDLFA+ 0.1.1 Video Demo

Rethinking Django’s URL Router

DAL 3.2.6 Release

django-autocomplete-light 3.2.4

django-autocomplete-light 3.2.3 release

DAL 3.2.2: Django 1.11 support

Welcome Erik Telepovský as new release manager for django-session-security

django-session-security 2.5.0 release

GitLab OpenShift: best Continuous Delivery pipeline 2016

Navigation Autocomplete with jquery-autocomplete-light

Django: status of 1.11

Django-autocomplete-light 3.2.0 release

django-responsediff 0.7.1 released

yourlabs-security mailing list

django-session-security 2.4.0 release

Seagate builds the world’s first 60TB SSD

django-responsediff 0.7.0 release

django-autocomplete-light 3.1.7 release

Unattended LXD setup

Major breakthrough in Schemaless data models with PHP and MySQL

django-cities-light 3.3.0 release

Magician hired @ Google

French: CD & DevOps & Free Pipeline

Practical Reverse Engineering

DAL 3.1.6 release

Security Alert: The new Invisible virus threat

django-autocomplete-light 3.1.5 release

django-autocomplete-light 3.1.3 release

django-dbdiff 0.6.0 release

django-autocomplete-light 3.1.2 release

Porting ModelForm enhancements from django-autocomplete-light v2 to Django

django-autocomplete-light v3: what’s going on

django-responsediff 0.3.0

Visual Python Profiler

django-jet: modern admin template

django-autocomplete-light 3.0.0 release

Syntax highlighting for Django’s SQL query logging

django-autocomplete-light 2.3.3 release

Automatic fixtures for HTTP Response assertions

django-autocomplete-light 2.3.0 release

Django database testing

django-cities-light 3.2.0 release

django-session-security 2.3.x releases

Django 1.9 support for Django-autocomplete-light

Test Driven Development with SaltStack SLS code

django-autocomplete-light 2.2.0 release

django-autocomplete-light 2.2.0rc1 release notes

Testing SaltStack formulas on Travis-ci

Scripted Cache AnyThing - HTTPS included - in Python with mitmproxy

Scripted MITM AnyThing in Python with mitmproxy

YourLabs Arch Linux Package Repository

django-cities-light 3.1.0 release

Speed up your travis-ci builds with container based infrastructure

Install Arch Linux on a dedicated server via Ubuntu Live

yourlabs x-mas commit

yawd-admin: brilliant django admin responsive theme

Django 1.7 Release !

SSH Kung Fu

Mailr: new gmail-like open-source webmail

Build beautiful books with Git and MarkDown with GitBook

Fun with debugging symbols

GDB debugging basics

Strace basics

Better manual reader with most: the slang-pager

django-cities-light 2.3.1 released

Bash interactive scripting basics

Django 1.7 new feature: AppConfig

RuntimeError: Failed to shutdown the live test server in 2 seconds. The server might be stuck or generating a slow response.

Interresting Python and pip behaviour with Python 2 and 3 compatible packages

Django 1.5.4 security release

Using bootstrap and less css in django

Automatic updates for commits made with GitHub code editor

New cool django-admin themes

Django 1.7 might have schema alteration super powers

HTML5 webcam to gif

Frontend Design links

Better git log

Open Source Windows NT

Drupal 7 with nginx and uwsgi-php example configuration

Partition your data with django-parting

PyCon 2013 videos are online !

First 5 Minutes Troubleshooting A Server

PostgreSQL for beginners: Initial configuration

Foundation 4 is out: a nice Twitter Bootstrap alternative

dropzone.js: nice jQuery plugin for file uploads

Enable global site packages in an existing virtualenv

There's no magic: virtualenv for beginners

Django security releases: 1.5rc2, 1.4.4, 1.3.5

Intel's 6-year-late copy of PaX's UDEREF (Sep 7 2012)

Linux 3.8 was released on Mon, 18 Feb 2013.

SourceTree: the git GUI that might work for windows users

OpenVim interactive online guide to Vim

Jedi-vim/rope takes too long

Playlistnow.fm source code is now open !

Using Ghost.py to test Django applications with LiveServerTestCase

django-smarter: the CRUD app I've been waiting for

PhoneGap: open source framework to build cross-platform mobile apps with HTML5/JavaScript/CSS

Alarm script that wakes up your laptop from hibernation: proof of concept

Learn 6502 assembly language

Microsoft looking to release Office for Linux in 2014

Lightweight jQuery plugin to drag'n'drop <table> columns

django-rules-light 0.0.6: now with template tag

Use IE10 on linux with BrowserStack

django-autocomplete-light: upcoming backward compatibility breaks

Manage your bash aliases in the cloud in the cloud

Ruby on rails remote code execution exploit

Bootstrap, lesscss and django

Django 1.5 RC (Release Candidate) is out !

Fantastic python code auto-complete: jedi

HTML5 specifications finalized

Django admin probably going bootstrap, maybe completely rewritten ?

Django security release

"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies."

Desura: awesome open source multiplatform Steam alternative for indie games

“One of my most productive days was throwing away 1000 lines of code.”

List of 186 useful twitter bootstrap resources

"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it"

Alertify.js: better js prompt(), alert() and confirm()

Using rst for documentation on both GitHub and Sphinx/RTFD: code-block tip

"The computing scientist’s main challenge is not to get confused by the complexities of his own making."

Django development: possible change of the .save() implementation

Don't use "Save your password" feature from your browser

IF you think education is expensive ...

Django & DBAs: "Performance problems due to incorrect many-many primary key on many tables"

EntryDNS: Free DNS management service for everyone created by Geeks

PythonAnywhere: free and awesome Django web host

Django & ajax & HATEOAS: how to reverse urls in javascript (not)

How to: fully use gmail with the keyboard

Django & ajax: how to reverse urls in javascript (not)

html5 unquoted tag attributes

html5 modal dialog api

django-autocomplete-light 1.1.0 is out, beware the backward compatibility break in templates !

Upcoming backward compatibility break in django-autocomplete-light v1.1.0

Testing django signals properly

Handling relations between ZODB persistent objects, presentation of SubstanceD's pattern

shpy: full fledged subprocess interface for python 2.6-3.8

Surviving django.contrib.staticfiles (or: how to manage static files with django)

Design patterns in Python

django-autocomplete-light 1017 released

Never hardcode absolute paths

Flairbuilder: The Better Way to Wireframe Websites and Rich Internet Applications

Recent releases

How to see exception stacktraces with django LiveServerTestCase

Responsinator: test your website in various portable devices

Free services you can use to make a great python app

Dvorak intl code

Automatic virtualenv activation

Django schema migrations: nashvegas vs. South vs. evolution

Coding standards for Django apps: names

Distro-agnostic craftman’s guide to python environment management

Django generic relations and performances: solutions

Howto: javascript popup form returning value for select like Django admin for foreign keys

How to override a view from an external Django app

Django, Pinax, virtualenv, setuptools, pip, easy_install and requirements.txt

Disk space WTF

Survive linux (*nix) permissions

They trust us

Contact

logo