This is the Bertrand Florat's personal page. You will find here some links to articles or projects I'm involved in and few thoughts (mainly about IT). Use the contact page if you want to discuss about an article, I had to disable comments due to massive spam attacks.
My Mantra : Design what's difficult to change, create reversibility
Jajuk Project (Java Jukebox)
QDWizard project (Swing Wizard API)
(2017-2018) Cours Univ.Nantes, MIAGE
(2015) Full disk encryption
(2013) How I manage my passwords
(2013) My Cloud, My Way (Article)
(2012-2017) Cours gestion de versions (Git) (Univ.Nantes, Licence PRO)
(2009) Conférence RMLL : "Développement Open Source : un retour des tranchées (Jajuk)" video
(2009) Conférence RMLL : "Comment l'Open Source permettent de faire de meilleurs projets" video
(2008) Conférence Solutions Linux "Augmenter la productivité JEE grâce à l’approche orientée modèles DSM"
(2001-2002) Tutorial Java
(2005) Les bugs mystiques
AMI protocol open-source project (P2P protocol, no more supported)
Ansible is an Open Source IT automation tool written in python and sponsored by RedHat. Best known alternatives are Puppet, Chef and Salt.
I used Ansible for the first time (2.4.3, last release in early 2018) in an attempt to produce some quite sophisticated Docker Swarm docker-compose files and others yaml configuration files that includes a significant volume of logic (port number increments, conditional suffixes, variable number of sections according to lists of items, etc.)
I achieved my goals in about five or six days of effective work, including the reading of most of the official manual. Be able to achieve such a real task in six days is acceptable when we have to learn it first but I think I would have made it in a single day in bash (that I already know). However, Ansible is much more powerful. My first contacts and real works with Ansible were really enjoyable and I was very surprised to make it work so easily. I also tried to apply all the documented best practices with success. Sadly, I spent the last three days struggling with the last 5% of remaining work, dealing with limitations/bugs that I found hard to understand and quite irritating.
Here's my few raw notes :
Deep work : “professional activities performed in a state of distraction-free concentration that push cognitive capabilities to their limit”. For high skills, difficult to replicate. Shallow work : “non cognitive demanding, logistic-style tasks, often performed while distracted.” Low value, easily replicable Deep work hypothesis : the ability to perform a deep work is rare and valuable. Those who are capable will thrive. The core abilities : - quickly master hard things - produce elite level with speed Both depends on deep work Myelin : by triggering always the same paths, better signal -> more focus = more intelligence High quality work = time x intensity of focus Metric black hole : we don't actually measure value of tasks we perform Principe of least resistance : given that we don't actually measure value of our work, we do first what is easier : shallow work. Busyness as a proxy for productivity : in knowledge works, difficult to estimate our own value : a lot of shallow work makes false feeling of produced value Cult of the Internet : everything from the Internet (like facebook) is considered a piori as good in IT : hugh error. Neuroscience : what you are is the sum of what you focus on. Happier when we focus on flow activities. We need goals, challenges, feedback. We all have a limited amount of will-power so we need to save it for deep work. Profiles of deep workers: - bimodal : monastic-like activities for few days, shallow work during the rest of the time - rhythmic philosophy : moment reserved every day, use a chain method like a cross on the calendar : we want to avoid any hole in the chain. - journalist philosophy : switches between shallow work and deep work all the day long (hard) Ideas to help deep work: - grand gesture : leave habits, work in an hotel for ie - help serendipity by meeting people from others disciplines - stop to work the evening to let the unconscious mind to solve problems for you (less work = more CPU to solve problems in your mind background) - also rest because we all have a limited amount of available attention - perform of shutdown ritual every end of day (like saying 'work performed') -> brain conditioned to stop running thoughts. Otherwise, Zeigarnik effect (we remember better interrupted tasks because we want to solve it) - search boredom to help the brain to rewire - schedule the day by blocks, change blocks during the day if required Deep work meditation to solve complex problems: - Store variables of current state of the problem - ask question to force the brain to go to the next problem and no looping - fight distracted thoughts Memorization technique (see the book for more details) : imagine large objects in 5 rooms of our house, map the objects with a set of celebrities and imagine scenes. Each person maps a value (like a number of a card value) Avoid any-benefits tools like facebook, concentrate on craftsman approach : only consider tools that help significantly to reach the lead goals To determinate if a tool that help : - list the key activities you need to realize to reach the lead goals - for each activities, ask yourself if the tool helps or not 4DX (Four disciplines of eXecution) : - focus on widely import goals (measurable few goals) - focus on lead goals, not long term goals - use scoreboards - perform periodic summaries Law of the vital fews (Pareto principle) : 80% of a given effect is done by 20% of the possible causes During leisure, avoid using Internet, do high-level activities like reading literature Evaluate shallow work performed by week and confront it to your boss and ask him to validate. To determine if a work is shallow : how many months would it take to teach an hypothetical post graduate to make it ? Say "no" by default, provide vague explanation to avoid questions. Process centric e-mails to close the loop and free the mind : state clearly the next steps on every subject (every action) Avoid replying to e-mails on subject without interest, coming with too much work to reply etc..
If like me you like both XFCE and Gnome-Shell dashboard/ window picker, here's how I configured my desktop for the nearest most Gnome-like experience :
1) Install xfdashboard (the dashboard itself). I ised version 0. Note : this release comes with a hot corner plugin, no more need to use xdotool or brightside.
2) Add or enable these commands to be run at X startup (in XFCE Settings / Sessions and startup / application autostart ) :
xfdashboard -d (deamon mode for a faster display)
3) Configure XFdashboard using
xfdashboard -q, then
xfdashboard -d &
4) Add the preferred applications into the vertical side bar (no GUI, xfce4-settings-editor cannot edit arrays), here's a sample command :
xfconf-query -c xfdashboard -p /favourites -n -t string -s "exo-file-manager.desktop" -t string -s "exo-terminal-emulator.desktop" -t string -s "jetbrains-idea-ce.desktop" -t string -s "owncloud.desktop" -t string -s "simple-scan.desktop" -t string -s "gnome-calculator.desktop" -t string -s "firefox.desktop" -t string -s "thunderbird.desktop" -t string -s "zim.desktop" -t string -s "libreoffice-writer.desktop"
5) If you are in multi-monitors mode and you want to see all windows on the primary display and not spread on several monitors, see my workaround : in
/usr/share/themes/xfdashboard/xfdashboard-1.0/xfdashboard.css (or in the others themes
xfdashboard.css files) , change
filter-monitor-windows: true; to
We need to protect our personal or professional data, especially when located on laptops that can easily be stolen. Even if it is not yet fully widespread, many companies or personal users encrypt their disks to prevent such issues.
They are three major technologies to encrypt the data (most of the time, the same symmetric cipher is used:AES 128 or 256 bits) :
sudo cryptsetup luksOpen /dev/sda2 aClearFileSystemName <enter password> mount /dev/mapper/aClearFileSystemName /mnt/myMountPoint
I once asked myself “how to define our job in the most general sense of the term, we, computer scientists ?”.
Our fields are very diverse but according to me, the greatest common divisor is “entropy hunter”.
After few months of continuous deployment scripts writing for a pretty complex architecture (two JBoss instances, a mule ESB instance, one database to reset, a BPM server, each being restarted in the right order and running from different servers), I figured out a good practice in this field : scripts have to be auto-updated.
J'ai eu le plaisir de me rendre à l'Eclipse DemoCamp Nantes jeudi dernier au Hub Creatic (il est difficile à trouver car pas encore indiqué, c'est le bâtiment jaune vif à coté de l'école Polytech Nantes. C'était la première fois que je m'y rendais et je dois dire que j'ai été impressionné, dommage qu'il ne soit pas en centre ville).
Nous avons eu un panorama extrêmement éclectique mais passionnant du monde Eclipse en 2015, de l'internet des objets (IOT) à l'usine logicielle de grands groupes en passant par l’informatique pour les enfants. Ceci montre, si besoin était, la force de traction du monde Eclipse en tant qu'IDE bien sûr mais surtout en tant que plate forme.
Many managers think that programming is easy, it's just a bunch of
switch clauses after all, isn't it ?
But coding is difficult because it is mainly about TAKING DECISIONS ALL THE TIME.
We just get a 20% response time gain on a 600+ lines query under Oracle. Our DBA noticed that queries were faster when launched from SQLDeveloper than from our JEE application using the JDBC Oracler 11g driver. We looked at the queries as they actually arrived to the Oracle engine and they where under the form :
SELECT… WHERE col1 like ':myvar1' OR col2 LIKE ':myvar2' AND col3 IN (:item1,:myvar2,…) and not
'SELECT… WHERE col1 LIKE ':1' OR col2 LIKE ':2' AND col3 IN (:3,:4,…) like usual when using PreparedStatement the regular way.
If you already used JDBC prepared statement, you know what are bind variables : the '?' in the query, like in :
SELECT col1,col2 from t_table where col1 in (?,?,?) AND col2 = ?
For the record, all compiled queries with the same number of '?' are cached by Oracle, hence (most of the time) faster to execute. But how to debug passed values ? This is often valuable like yesterday where one of our services tried to insert value too large for a column (a 4 digits integer into a
The Jajuk issue tracker and the Git repository are now moved to GitHub (see previous article for the context).
We are currently moving our Jajuk Trac issue tracker to a better place, mainly for spam reasons. A developer suggested BitBucket, others (me included) GitHub which I already use. I cloned our secondary project QDWizard on a private BitBucket repository to make an opinion. I have to say BitBucker is really good too.