Services Blog Français

James Pic

James Pic, also known as “jpic”, “is_null”, started coding in 1995, counts hundreds (thousands?) of Open Source contributions in all sorts of projects especially in Python and Django including to major projects such as Django, Ansible, OpenStack, Arch Linux, ElectionGuard, and even Python itself, maintains more than 50 Open Source packages on Python, Node, and Ansible Galaxy package indexes.

Some of his small Open Source projects have taken off and have got a life of their own now, and that experience has driven him to learn everything about making great documentation to reduce the incoming issues, back when it felt like the whole internet was falling on him with issue reports and questions.

Also, in the spirit of Jez Humble’s Continuous Delivery book, James Pic has been believing that everything can, and should be tested. James Pic started Test Driven Development in 2007, as required to contribute to eZ Components, and it’s been his standard practice since then, which is why he offers excellent expertise on continuous integration, delivery, and even produced his own research on these topics already, such as eXtreme DevOps, an extension of eXtreme Programing.


Back when James Pic was a small kid, his uncle and aunt had a computer because they were studying electronics, Cs and robotics, so they would let him play games on their computer, such as Ween, Monkey Island, Transarctica… But after a while, he had played all of them, and was pulling their leg for more. They hadn’t any more, and got fed up by nagging, released the bible of C programming on the table and told him to sit in front of the computer and do what they say, and that’s how they started teaching C to him, he was 9 years old.

James Pic coded and small chat bot and started nagging his parents for a programmable calculator, and had to wait until high school to have one. Finally. The toy of his dreams. He could code games on the go, in BASIC, which book was much more approachable at his young age. He devoured it.

One day he installed one of his games on a friend’s calculator which was of the same model, a TI83+. He didn’t seem to care. One day he came back to him and thanked him for the game… then reported he was blocked by a bug! James Pic told him he had fixed it and could install the new version on his calculator. It was the first time in my life another human being came to James to ask for his code. James Pic still remembers every detail about the scene, how amazing it felt. Of course, he had absolutely no idea this would become his career. At the time he dreamt of working in a Libanese restaurant for the free food!

At 15, James Pic started freelancing on the internet, and got his first check from a customer he closed on a webmaster BBS. It was worth 30 french “francs”, that’s exactly 4.5€. His grandma told him to keep it instead of cashing it. It’s probably somewhere in his stuff. He also closed another customer in a cybercoffee for a website he coded in ActionScript.

Open Source

When Derick Rethans told James Pic to come to Skien because for an award nomination, James was still a poor PHP and Linux freelancer, father of one at 22, trying to make a living out of his passion like his friends on IRC from #neoskills. James Pic didn’t want to go back to Windev and Windows development because the community did not feel the same.

Derick told James he had to come with a suit, but James only had an extremely cheap one, and was not really proud of it, Derick told him to come with it anyway. At that point in time, James only had the money for a single trip to Norway, 10 euros in cash, waiting for payment from an internet customer, a cardboard and a pen and two bottles of french wine for whoever would drive him from Oslo to Skien, and a tent in his backpack.

Once I got there, we met with Derick for the first time in person (everything was happening on IRC back in the days), he was extremely surprised by my young age. He started questioning me about my story, and that’s when I told him that a year before, I had no idea what unit tests, let alone TDD was. It seemed he was falling off his chair!

Derick told me to write a speech in case I would win the award. I didn’t believe about it for a second, the other nominees, also core devs and friends, mentors even, where PhDs, and were nominated for libs I had no clue about, like Sebastien Bergmann for a Workflow component which came with a 70 pages paper that I devoured, and also a reflection component that I didn’t understand anything about at that time, far before I learned anything about metaprogramming, which is of course my goto nowadays as some of you might have noticed lol

Anyway, there was a band on the stage, and the award winners were called one by one … MySQL got an award, big companies, partners, also got awards … and then came the award I was nominated for, the eZ Components award, for my research on making an MVC component, which was so trendy back in 2008. So I went on the stage and said “Thank you eZ Systems for such a modern and human business model!”. The applause was insane. Then I started thanking everyone. After the ceremony, I went out of there with my backpack and headed to the cocktail party with all the people in suits. All much older than me. Many were curious. Some said, “come to my hotel, we can’t let a winner sleep in a tent!”. And that’s how I meet with John Arne Jørgensen, founder of He hosted me at his place until my customer paid me. It took much longer than expected, over a month. He became my best friend, traveled from Norway to my place in Spain with his friends, and I traveled with my wife and kid to Norway for holidays… Rest in peace my friend if you ever read this from the skies!

And there’s also that story where I already had two unpaid internet bills at home, customer in France not paying, not answering my emails nor my calls… And had to choose what to do with my last euros: buy yogurts for my son, or pay one bill to keep my DSL connection going. And that’s how I ended working a months from the streets, wardriving, with this very script I coded to automate the process of hacking wifis: and by the way that’s how we automated VPS for our customers back when we were running a small hosting business with my IRC friends, on linux patched with vserver and grsecurity way before containers became a thing

James Pic started programming in C at the age of 9 in 1995, he started his own business and did small jobs on the internet before starting to work in a multinational company in 2002.

In 2004, James Pic decided to become an independant consultant, determined to spend his time with Open Source technology that he considers superior in every way, especially in conviviality and on Linux.

In 2007, James Pic became core-dev on the libraries of the company eZ Systems under the direction of genius Derick Rethans and thus learned from other geniuses such as Sebastian Bergmann, and to his surprise won his first award in Skien in Norway in 2008.

At this time, James Pic was co-administrator of the NeoSkills group under the direction of William Waisse, managing self hosted Gentoo servers with GrSecurity and all kind of security patches to offer the best possible security to NeoSkills and own customers.

At the same time, James Pic passed online degrees at the University of Illinois in partnership with O’Reilly in parallel - which allowed him to learn how the industry worked 10 years earlier.

Circa 2010, James Pic began to introduce SCRUM in French companies while following a developer path, while working “in the shadows” to ensure great success.

In 2012 James Pic started a new plugin for the Django framework, which today benefits from more than one million downloads per year, which attests to the confidence that the industry have in his code, now used by FANGs, banks, insurance, governments around the world.

This was the start of the free software brand YourLabs which offers a catalog of many free software for making software.

In 20 years, James has worked for large accounts such as Bull, Alcatel or the CNRS, in the cloud for Numergy which has earned him to contribute to OpenStack, as well as for small startups or SMEs that he is passionate about, but also on a voluntary basis for groups such as Quadrature du Net on the Memopol project which is famous for being the critical software to block the ACTA EU law project.

James Pic still contributes to major Open Source projects such as Python, Django, and Ansible, as well as a huge range of minor projects.

James Pic also gives his time to help others like others helped in back before he became officialy a 1337 h4x0|2, which earned him to be in the all-time top 0.88% all-time on StackOverflow with the ranking #5572 out of 12 million registered developers with a reputation close to 30K.

James Pic leads the development of government or private teams and projects, including fintech and blockchain, and of course of YourLabs R&D to keep challenging the status quo.

Computer engineering is his work and his afterwork, which has earned him to give various conferences over time, on subjects such as DevOps but also others which are not necessarily technical such as the history of Lean.

Also, James Pic is the father of 2 charming children and he is passionate about board sports such as sailing and skiing or snowboarding, bicycle, tennis, chess, hardware hacking, and music as a multi-instrumentalist and singer and transformist.

James claims that you will not find anyone who loves bugs more than he does, which he proves by spending a crazy amount of time fixing other people problem for free on StackOverflow (where he is top 0.1% all-time) and on IRC or mailing lists, often anonymously. He claims for excuse that just like you would spend part of your time solving chess problems if you want to be Grand Master one day, and that helping others with their problems is an important part of his training. This makes James an amazing go-to “flying doctor” to have on call.



pytest superfixture design pattern

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


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


how django front end validators works

free pdf & ebook about continuous delivery and devops


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


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

yourlabs/python container adds security audit tools


tri.form: ALternative to Django forms

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



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


clitoo: make your python callbacks work in CLI too !

DevOps since 2005: a  retrospective


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


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


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 adapters

Model in Django: not what you think they are


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 source code is now open !

Using 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