<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Jonathan Petitcolas - Web developer and open-source aficionado</title><description>Personal blog of Jonathan Petitcolas</description><link>https://www.jonathan-petitcolas.com/</link><item><title>Sandboxing YOLO Claude Code Agents on a VPS</title><link>https://www.jonathan-petitcolas.com/2026/05/25/sandboxing-yolo-claude-code-agents-on-a-vps/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2026/05/25/sandboxing-yolo-claude-code-agents-on-a-vps/</guid><description>Running Claude Code in YOLO mode on a $10/month VPS, fully isolated at both the network and filesystem level. Here&apos;s how I got there, so you can too.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate></item><item><title>Updating Elastic Search Mapping on a Live Index</title><link>https://www.jonathan-petitcolas.com/2020/11/19/update-elastic-search-field-mapping-on-live-index/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2020/11/19/update-elastic-search-field-mapping-on-live-index/</guid><description>Elastic Search excels in guessing types of its indexed fields. Yet, in some specific case, we need to update the mapping manually. Here is how to do such an update, even on a live index!</description><pubDate>Thu, 19 Nov 2020 00:00:00 GMT</pubDate></item><item><title>Using NVIDIA GPU within Docker Containers</title><link>https://www.jonathan-petitcolas.com/2018/03/28/using-nvidia-gpu-within-docker-container/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2018/03/28/using-nvidia-gpu-within-docker-container/</guid><description>Diving into machine learning requires some computation power, mainly brought by GPUs. Let&apos;s start our machine learning journey by configuring Docker to use NVIDIA GPU.</description><pubDate>Wed, 28 Mar 2018 00:00:00 GMT</pubDate></item><item><title>What I Learned from Updating my Blog Design</title><link>https://www.jonathan-petitcolas.com/2018/02/20/what-i-learned-from-updating-my-blog-design/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2018/02/20/what-i-learned-from-updating-my-blog-design/</guid><description>I have just updated my blog design to get a moderner look. Integrating it taught me several useful tips I am sharing with you.</description><pubDate>Tue, 20 Feb 2018 00:00:00 GMT</pubDate></item><item><title>Converting an Image into ASCII Art Masterpiece</title><link>https://www.jonathan-petitcolas.com/2017/12/28/converting-image-to-ascii-art/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2017/12/28/converting-image-to-ascii-art/</guid><description>While browsing Stack Overflow, I generally browse one or two links from the sidebar &apos;Hot Network Questions&apos;. It brings me to several interesting topics, not necessarily related to development. And this time, I found an interesting post: how do ASCII art image conversion algorithms work?</description><pubDate>Thu, 28 Dec 2017 00:00:00 GMT</pubDate></item><item><title>Learning Jest Through Practice</title><link>https://www.jonathan-petitcolas.com/2017/10/31/learning-jest-through-practice/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2017/10/31/learning-jest-through-practice/</guid><description>Jest is a Javascript testing framework published by Facebook. When browsing the official website homepage, three points are highlighted in particular: no configuration, improved performance, and easy mocking. Are they marketing promises, or reality? To answer this question, we will test Jest on a basic React project and explore its various possibilities.</description><pubDate>Tue, 31 Oct 2017 00:00:00 GMT</pubDate></item><item><title>Internationalizing a React Application using Polyglot</title><link>https://www.jonathan-petitcolas.com/2017/03/27/internationalizing-react-application-using-polyglot/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2017/03/27/internationalizing-react-application-using-polyglot/</guid><description>Following an Internationalization tutorial is generally quite straightforward. But what about implementing it on a real-world application? Here is a tested solution using Polyglot. We&apos;ll also learn how to use context by creating a custom Provider.</description><pubDate>Mon, 27 Mar 2017 00:00:00 GMT</pubDate></item><item><title>Conditional Babel Configuration: Introducing Babel Env</title><link>https://www.jonathan-petitcolas.com/2017/02/23/different-babel-configuration-with-single-babelrc-file-using-babelenv/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2017/02/23/different-babel-configuration-with-single-babelrc-file-using-babelenv/</guid><description>After being stuck for a few hours because of some Babel configuration issues in an isomorphic app, we finally discovered the Babel env property. It allows to apply some sort of conditional configuration, depending on a given environment variable.</description><pubDate>Thu, 23 Feb 2017 00:00:00 GMT</pubDate></item><item><title>Npm (or Yarn) Install within a Docker Container, the Right Way</title><link>https://www.jonathan-petitcolas.com/2017/01/26/yarn-npm-install-within-docker-container/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2017/01/26/yarn-npm-install-within-docker-container/</guid><description>Docker is awesome. Yet, it brings some common pitfalls, especially when you need to handle file permissions correctly, or need to use SSH. Here are some solutions to counter these issues.</description><pubDate>Thu, 26 Jan 2017 00:00:00 GMT</pubDate></item><item><title>Using HTTPs with Custom Domain Name on GitHub Pages</title><link>https://www.jonathan-petitcolas.com/2017/01/13/using-https-with-custom-domain-name-on-github-pages/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2017/01/13/using-https-with-custom-domain-name-on-github-pages/</guid><description>GitHub supports HTTPs natively, but only for &lt;code&gt;github.io&lt;/code&gt; domain names. It doesn&apos;t work with custom domain names. Fortunately, CloudFlare, a free (for basic needs) DNS/CDN, provides a solution to use HTTPs any domain. Here is a step-by-step tutorial to secure your own GitHub Pages.</description><pubDate>Fri, 13 Jan 2017 00:00:00 GMT</pubDate></item><item><title>Npm Tips and Tricks</title><link>https://www.jonathan-petitcolas.com/2016/11/21/npm-tips-and-tricks/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2016/11/21/npm-tips-and-tricks/</guid><description>All Node.js developers have already used `npm` to install their favorite dependencies. However, far beyond the very famous `npm install`, npm offers a wide bench of available commands to ease our daily job. Most of them are unknown, so let&apos;s enlight them.</description><pubDate>Mon, 21 Nov 2016 00:00:00 GMT</pubDate></item><item><title>Taking Picture From Webcam Using Canvas</title><link>https://www.jonathan-petitcolas.com/2016/08/24/taking-picture-from-webcam-using-canvas/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2016/08/24/taking-picture-from-webcam-using-canvas/</guid><description>I recently needed to take a picture from a web browser using webcam. As this is a basic need, I thought it would be quite easy. Yet, solution is not trivial, and implies both using new user media HTML5 API and some canvas manipulation. Here is a reminder which may be useful to everyone.</description><pubDate>Wed, 24 Aug 2016 00:00:00 GMT</pubDate></item><item><title>Plugging Webpack to Jekyll Powered Pages</title><link>https://www.jonathan-petitcolas.com/2016/08/12/plugging-webpack-to-jekyll-powered-pages/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2016/08/12/plugging-webpack-to-jekyll-powered-pages/</guid><description>I chose Jekyll to power this blog. It allows a blazing-fast display (as rendering is just composed of pure HTML static files) and a free hosting via GitHub. Yet, when I started to build these pages a few years ago, I didn&apos;t know about Webpack. Better late than never, let&apos;s see how to plug these two powerful tools together.</description><pubDate>Fri, 12 Aug 2016 00:00:00 GMT</pubDate></item><item><title>Minutes of AWS Summit Paris 2016</title><link>https://www.jonathan-petitcolas.com/2016/06/15/minutes-of-aws-summit-paris-2016/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2016/06/15/minutes-of-aws-summit-paris-2016/</guid><description>Thanks to marmelab, I attended to the AWS Summit last month in Paris. Here is our feedback about this event which is, as its name implies, focused on Amazon Web Services.</description><pubDate>Wed, 15 Jun 2016 00:00:00 GMT</pubDate></item><item><title>Webpack HTML plug-in in a Nutshell</title><link>https://www.jonathan-petitcolas.com/2016/01/23/webpack-html-plugin-in-a-nutshell/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2016/01/23/webpack-html-plugin-in-a-nutshell/</guid><description>I have been using Webpack for several months now, and I ended up to some more optimized solutions than the one already presented on this blog. Let&apos;s see some solutions to handle correctly assets paths, cache busting, and use of configuration parameters, using the Webpack HTML Plugin.</description><pubDate>Sat, 23 Jan 2016 00:00:00 GMT</pubDate></item><item><title>How-to dump your Docker-ized database on Amazon S3?</title><link>https://www.jonathan-petitcolas.com/2015/09/28/dump-docker-ized-database-to-amazon-s3/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2015/09/28/dump-docker-ized-database-to-amazon-s3/</guid><description>I got a few side-projects in production, a majority using Docker containers. Who says production also says data backup. Here is a post describing how I regularly upload my database dumps directly from a Docker container to Amazon S3 servers.</description><pubDate>Mon, 28 Sep 2015 00:00:00 GMT</pubDate></item><item><title>Importing a Modeled Mesh From Blender to Three.js</title><link>https://www.jonathan-petitcolas.com/2015/07/27/importing-blender-modelized-mesh-in-threejs/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2015/07/27/importing-blender-modelized-mesh-in-threejs/</guid><description>In this Three.js tutorial, we are going to see how to import a modeled mesh from Blender to our scene, animating it with some basic rotations.</description><pubDate>Mon, 27 Jul 2015 00:00:00 GMT</pubDate></item><item><title>Minutes of PHP Tour 2015</title><link>https://www.jonathan-petitcolas.com/2015/06/01/minutes-of-phptour-2015/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2015/06/01/minutes-of-phptour-2015/</guid><description>Two weeks ago, we (at marmelab) attended the PHP Tour 2015, organized by AFUP in Luxembourg. Here is a summary of each talk we saw.</description><pubDate>Mon, 01 Jun 2015 00:00:00 GMT</pubDate></item><item><title>How-to setup Webpack on an ES6 React Application with SASS?</title><link>https://www.jonathan-petitcolas.com/2015/05/15/howto-setup-webpack-on-es6-react-application-with-sass/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2015/05/15/howto-setup-webpack-on-es6-react-application-with-sass/</guid><description>Webpack is really a great JavaScript bundler, allowing to turn messy and numerous JavaScript into a single minified and optimized script. Yet, we missed a good getting started tutorial. Here is one, using ES6 React app with SASS.</description><pubDate>Fri, 15 May 2015 00:00:00 GMT</pubDate></item><item><title>Transpiling EcmaScript6 code to ES5 using Babel</title><link>https://www.jonathan-petitcolas.com/2015/03/09/transpiling-es6-to-es5-using-babel/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2015/03/09/transpiling-es6-to-es5-using-babel/</guid><description>During more than a week, we worked hard to introduce some EcmaScript6, the future of JavaScript, to ng-admin. Here is how we transpiled our code to ES5, to ensure every browser understands our code.</description><pubDate>Mon, 09 Mar 2015 00:00:00 GMT</pubDate></item><item><title>Playing with websockets in Go</title><link>https://www.jonathan-petitcolas.com/2015/01/27/playing-with-websockets-in-go/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2015/01/27/playing-with-websockets-in-go/</guid><description>Go is quite good for asynchronous tasks. So, let&apos;s experiment it with websockets, creating a (basic) collaborative text editor, GollabEdit.</description><pubDate>Tue, 27 Jan 2015 00:00:00 GMT</pubDate></item><item><title>Creating JSON Web Token in JavaScript</title><link>https://www.jonathan-petitcolas.com/2014/11/27/creating-json-web-token-in-javascript/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2014/11/27/creating-json-web-token-in-javascript/</guid><description>One of the best way to secure an API is JSON Web Tokens. As understanding a concept passes by experimenting it, here is a post describing how to forge such a token in JavaScript.</description><pubDate>Thu, 27 Nov 2014 00:00:00 GMT</pubDate></item><item><title>Parsing binary files in Go</title><link>https://www.jonathan-petitcolas.com/2014/09/25/parsing-binary-files-in-go/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2014/09/25/parsing-binary-files-in-go/</guid><description>I am currently working on a Go library to parse Starcraft2 replay files. These files are stored in binary format (called MoPaQ) where each sequence of bytes is related to a specific information. Let&apos;s see how to decrypt binary files using Go.</description><pubDate>Thu, 25 Sep 2014 00:00:00 GMT</pubDate></item><item><title>Improve your Linux battery life with TLP</title><link>https://www.jonathan-petitcolas.com/2014/08/22/improve-linux-battery-life-tlp/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2014/08/22/improve-linux-battery-life-tlp/</guid><description>Transitionning from Windows to Linux caused a few troubles. Most painful one was the battery life, which was drastically reduced. Yet, installing TLP boosted my laptop autonomy. Here is how.</description><pubDate>Fri, 22 Aug 2014 00:00:00 GMT</pubDate></item><item><title>Fibonacci sequence generator in Go</title><link>https://www.jonathan-petitcolas.com/2014/08/18/fibonacci-generator-in-go/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2014/08/18/fibonacci-generator-in-go/</guid><description>Is it possible to develop generators in Golang? Sure! Here is an elegant way based on Fibonacci sequence.</description><pubDate>Mon, 18 Aug 2014 00:00:00 GMT</pubDate></item><item><title>Changing Arduino RGBL color through a web interface</title><link>https://www.jonathan-petitcolas.com/2014/05/26/change-arduino-led-color-from-web-interface/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2014/05/26/change-arduino-led-color-from-web-interface/</guid><description>I decided to go further with my Arduino: using a web interface to drive my board. Let&apos;s see how to use Johnny Five framework (allowing to program on Arduino with Javascript and Socket.io to allow a browser to change my LED colors.</description><pubDate>Mon, 26 May 2014 00:00:00 GMT</pubDate></item><item><title>Creating a Morse encoder with Arduino</title><link>https://www.jonathan-petitcolas.com/2014/03/16/creating-morse-encoder-with-arduino/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2014/03/16/creating-morse-encoder-with-arduino/</guid><description>A few days ago, I received a brand new Arduino. Let&apos;s try a first prototype: a Morse language encoder, using a simple LED and a few lines of code.</description><pubDate>Sun, 16 Mar 2014 00:00:00 GMT</pubDate></item><item><title>Finding out slowest tests of your PHPUnit test suite</title><link>https://www.jonathan-petitcolas.com/2014/01/15/finding-out-slowest-tests-of-your-phpunit-test-suite/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2014/01/15/finding-out-slowest-tests-of-your-phpunit-test-suite/</guid><description>We just wrote a brand new visualization tool provideing a quick way to monitor your PHPUnit test suites. Within a single glance, you will be able to identify the slowest tests, helping you to improve the overall execution time of your tests.</description><pubDate>Wed, 15 Jan 2014 00:00:00 GMT</pubDate></item><item><title>Building a static website with Silex</title><link>https://www.jonathan-petitcolas.com/2013/11/20/building-static-website-with-silex/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2013/11/20/building-static-website-with-silex/</guid><description>I recently helped a contact of mine to develop her company website. Her needs were basic: some static pages and a FAQ. No need for a whole big framework for such simple needs. So, let&apos;s look on Silex, a great PHP micro-framework.</description><pubDate>Wed, 20 Nov 2013 00:00:00 GMT</pubDate></item><item><title>Create a clickable SVG map</title><link>https://www.jonathan-petitcolas.com/2013/07/18/create-clickable-svg-france-regions-map/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2013/07/18/create-clickable-svg-france-regions-map/</guid><description>How to create a clickable SVG map without using obsolete Flash or bad-DX image maps? A single answer: SVG!</description><pubDate>Thu, 18 Jul 2013 00:00:00 GMT</pubDate></item><item><title>Simulate marquee tag in CSS and Javascript</title><link>https://www.jonathan-petitcolas.com/2013/05/06/simulate-marquee-tag-in-css-and-javascript/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2013/05/06/simulate-marquee-tag-in-css-and-javascript/</guid><description>I am sometimes asked how to simulate `marquee` tag in full CSS. Even if it is deprecated, we can&apos;t always convince customers to not use such an accessibility disaster. Hence, here is a CSS alternative.</description><pubDate>Mon, 06 May 2013 00:00:00 GMT</pubDate></item><item><title>Create a rotating cube in WebGL with Three.js</title><link>https://www.jonathan-petitcolas.com/2013/04/12/create-rotating-cube-in-webgl-with-threejs/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2013/04/12/create-rotating-cube-in-webgl-with-threejs/</guid><description>Let&apos;s discover awesome ThreeJS 3D library with a simple purpose: animating a rotating 3D cube.</description><pubDate>Fri, 12 Apr 2013 00:00:00 GMT</pubDate></item><item><title>Using Sublime Text 2 for web development</title><link>https://www.jonathan-petitcolas.com/2013/03/23/configuring-sublime-text-2-for-web-development/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2013/03/23/configuring-sublime-text-2-for-web-development/</guid><description>Sublime Text 2 is an awesome text editor, a worthy successor to Notepad++. It supports great features , is really reactive, and is cross platform. Moreover, it embeds a package manager allowing you to install or remove very easily community plug-ins. Here are the details of my own installation.</description><pubDate>Sat, 23 Mar 2013 00:00:00 GMT</pubDate></item><item><title>New Year, New Start...</title><link>https://www.jonathan-petitcolas.com/2013/01/07/new-year-new-start/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2013/01/07/new-year-new-start/</guid><description>I have decided to commit myself into two major professional changes this incoming new year: accepting a new job proposal and closing my own company. Here are the changes.</description><pubDate>Mon, 07 Jan 2013 00:00:00 GMT</pubDate></item><item><title>Migrating to GitHub Pages</title><link>https://www.jonathan-petitcolas.com/2012/12/25/migrating-to-github-pages/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2012/12/25/migrating-to-github-pages/</guid><description>I used WordPress during several years, since the first time I blogged. However, this tool complexity becomes too high for my basic needs. It is time to find a new tool to focus on writing. GitHub Pages looks like the perfect solution to me.</description><pubDate>Tue, 25 Dec 2012 00:00:00 GMT</pubDate></item><item><title>Installing WordPress as a Git submodule</title><link>https://www.jonathan-petitcolas.com/2012/11/26/install-wordpress-as-git-submodule/</link><guid isPermaLink="true">https://www.jonathan-petitcolas.com/2012/11/26/install-wordpress-as-git-submodule/</guid><description>Updating a WordPress blog with all its plug-ins may be very time-consuming, especially for those who maintain several blogs. Fortunately, there is a solution to reduce maintenance time. Using Git, you will be able to update your blogs just by checking out the new tag of your WordPress submodule.</description><pubDate>Mon, 26 Nov 2012 00:00:00 GMT</pubDate></item></channel></rss>