Le contexte Je cherchais depuis un certain temps une ROM Android répondant aux critères principaux suivants : open source , afin de rendre le code auditable et de limiter la dépendance à des composants opaques ; dégooglisée , pour des raisons de confidentialité ; avec un minimum de bloatware impossible à désinstaller et ponctionnant ma batterie ; souveraine , c’est-à-dire made in EU ; sobre , pour…
Le jeudi 26 juin 2025, j'ai eu le plaisir d'être invité à un meetup Arkup (cabinet spécialisé en architecture des systèmes d'information) et de donner une présentation d'une heure sur le thème « Documentation d'Architecture As Code : Rendez votre documentation utile, vivante et collaborative ». Le support est disponible ici .
This article has also been published at DZone . In this previous article , I highlighted some of the worst mistakes a Product Owner (PO) can make. Now, it’s time for introspection and an analysis of the most common errors I’ve observed in architectural practices throughout my career. Disclaimer : I’ve personally made a fair share of these mistakes throughout my career ;-). 1. Being a “Seagull…
Je veux vous parler des bugs de demain, Sans supervision, il peut casser ton chemin. Je veux vous parler Des bugs, de vous. Je vois à l'intérieur des logs, des erreurs Qui ne sont pas traqués, qui parfois me font peur. Alertes Qui peuvent nous rendre fous Nos systèmes sont fragiles, nous, pauvres développeurs, Sans SRE pour guider, on perd tous nos repères. La sonde humaine, la charge, elle…
IT integration involves configuring complex systems within large infrastructures to ensure all components work harmoniously. This challenging task requires a blend of coding skills and unique expertise. The following blueprints are derived from my pragmatic experience gained from the trenches of various large projects and apply to system integrators, DevOps engineers (with a focus on automation),…
This article has also been published at DZone . Updated: 03/11/2025 Murphy's Law ( "Anything that can go wrong will go wrong, and at the worst possible time." ) is a well-known adage, especially in engineering circles. However, its implications are often misunderstood, especially by the general public. It's not just about the universe conspiring against our systems; it's about recognizing and…
As a Product Owner (PO), your role is crucial in steering an agile project towards success. However, it's equally important to be aware of the pitfalls that can lead to failure. In this blog post, we'll explore the actions that should be avoided to ensure your agile project stays on track and delivers valuable outcomes. It's worth noting that the GIGO (Garbage In - Garbage Out) effect is a…
This article has also been published at DZone . In this article, I'll refer to a 'job' as a batch processing program, as defined in JSR 352 . A job can be written in any language but is scheduled periodically to automatically process bulk data, in contrast to interactive processing (CLI or GUI) for end-users. Error handling in jobs differs significantly from interactive processing. For instance,…
Datasets staticity level [Article also published on DZone .] A common challenge when designing applications is determining the most suitable implementation based on the frequency of data changes. Should a status be stored in a table to easily expand the workflow? Should a list of countries be embedded in the code or stored in a table? Should we be able to adjust the thread pool size based on the…
. Is narrow-scoped only to a given Best practices (voir cours) numbering use characters ⌨ r - min constraints - Use Lay_Distance(x,y, ) à l'intérrieur d'une zone - Eviter les Lay_U... - Utiliser des sprites skinparam linetype poluline infra: https://c4model.com/#DeploymentDiagram https://sarafian.github.io/tips/2021/03/11/plantuml-tips-tricks-1.html adding hidden lines a -[hidden]- b extending the…
Architecture as Code with C4 and Plantuml (This article has also been published at DZone) Introduction I'm lucky enough to currently work on a large microservices-based project as a solution architect. I'm responsible for designing different architecture views, each targeting very different audiences, hence different preoccupations: The application view dealing with modules and data streams…
Designing Human-Targeted Random IDs Article also published on DZone . ℹ️ NOTE We don't deal here with technical ID used as primary keys in relational databases. See my previous article here if you seek a great way to generate them. Context During one of my recent projects, I have been asked to design a scheme of IDs highly usable by humans. The business requirement was mainly to create…
(This article has been also published at DZone) Updated the 2025-08-28. How to Do UUID as Primary Keys the Right Way TL;DR: UUID V4 or its COMB variant are great to mitigate various security, stability, and architectural issues, but be aware of various pitfalls when using them. Why Do We Need Technical IDs in the First Place? Any properly designed relational database table owns a Primary Key (PK)…
(This article has also been published on DZone) In most organizations (except truly DevOps teams), developers are not allowed to access the production environment for stability, security, or regulatory reasons. A major drawback of this approach is the mental distance created between developers and the real world . Likewise, monitoring is usually managed only by operators, and developers receive…
Four years after the first release of a template in French, we release a revisited English version. This architecture template is applicable to most management IT projects, regardless of the general architecture chosen (monolithic, SOA, micro-service, n-tier, …). It has already been used on several important projects including large organizations. It is maintained on a regular basis. Discover it…
(This article has also been published at DZone) TL;DR In Java, do: String normalizedString = Normalizer.normalize(originalString,Normalizer.Form.NFKD) .replaceAll("[^ p{ASCII}]", "").toLowerCase().replaceAll(" s{2,}", " ").trim(); Nowadays, most strings are Unicode-encoded and we are able to work with many different native characters with diacritical signs/accents (like ö , é , À ) or ligatures…
Reasons to change This personal home page and blog was previously self-hosted using a great Open Source Wiki engine: Dokuwiki. It worked great for long years but few months ago, I felt than it was time to change lanes and embrace the JAM Stack (JavaScript / API & Markdown). Issues with traditional wikis Security: many spam in comments, possible PHP vulnerabilities Regular upgrades to be performed…
Registre des décisions d'architecture Un registre de décisions d'architecture sert à consigner les décisions importantes d'architecture (les ADR, Architecture Decision Record ). Le but est de permettre la connaissance et la compréhension des choix a posteriori et de partager les décisions. Le dossier d'architecture quant à lui ne reprend pas ces choix mais ne fait apparaître que la décision…
Voir https://github.com/bflorat/modele-da Le modèle a été augmenté, simplifié et corrigé. Surtout, il prend la voie d'une documentation vivante en étant repris en asciidoc (il sera donc maintenant possible de proposer des merge requests par exemple). Les diagrammes sont toujours en Plantuml mais la plupart ont été repris en diagrammes C4. Retours et PR appréciés
I just finished "Deep work" , an interesting book. I only regret it doesn't contain any reference concerning the pomodoro technique . 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…
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) : Files-level encryption tools (7zip,…
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,…
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…
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" . All we do have is geared toward the same goal : decrease the level of complexity of a system by modeling it and transforming a bunch of semi-subjective rule into a Turing machine program that…
Many managers think that programming is easy, it's just a bunch of for , if , else and switch clauses after all, isn't it ? But coding is difficult because it is mainly about TAKING DECISIONS ALL THE TIME . Driving is easy because you don't have to take decisions about the way to turn the steering wheel; walking is easy, you don't even have to think about it; Drilling a 10 mm hole into a wall is…
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. When dealing with highly distributed architectures, you need to install…
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…
J'ai eu la chance d'assister à la journée Agile Tour 2014 , version nantaise, à l'école des mines. Bien organisé, riche en rencontres et retours d'expériences, comme tous les ans... Les world cafés Une innovation intéressante cette année : les 'World cafés' entre les conférences et pendant lesquels un sujet est discuté par un groupe éphémère et dont un seul membre (le scribe) reste pour consolider…
I just finished to setup my personal cloud storage. It has been a long and difficult task and I'd like to share with people with similar requirements a bunch of useful information and pointers that would have save me a lot of time. Summary diagram Orange: HTTPS stream; Green: synchronization stream; Blue: Webdav stream; Red: security system My requirements Safe : strongly encrypted storage for…
With so many websites and system credentials we have to remember, settling down to an acceptable password policy is challenging. After years of trial and error, I'm approaching something I eventually find convenient and safe enough. UPDATE 2020 For type-1 passwords according to my categorization, I now use this method from ANSSI (French Security Agency) : create a memorable passphrase and use only…
L'immense majorité des bugs que nous subissons tous les jours trouve une explication rationnelle assez facilement. Une autre catégorie, heureusement extrêmement rare est celle des bugs dits "mystiques". Prenez les logs de tout système complexe et fortement chargé tels un serveur d'application ou un moniteur transactionnel : je vous prédis que vous y trouvez toujours sur une période suffisante des…
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…
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…
The Jajuk issue tracker and the Git repository are now moved to GitHub (see previous article for the context). Repository move Obviously and by nature, the Git repository move has been very simple. I just had to drop my previous origin (pointing to the gitorious project url), to add the new Github origin and to push all my branches. The push of the master branch toke around 30 mins and the others…
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. According to me, both systems deliver the most important features : Simple to…
Main thoughts I bought a Keynux Epure S4 three mouths ago now and it is time to turn it out. At the risk of spoiling, I can already tell you that this laptop rocks and is a good deal. Why did I bought a Keynux in the first place ? simply because it was (AFAIK in December 2011) the only French laptop assembler dealing with my three main criteria : Running as good as possible under Linux. No…
My goal was pretty simple: install a Linux distribution on a VIA ME6000 Mini-ITX PC without internal disk to be able to remove the case pan (ME6000 card has no pan) in order to get a 0 db Linux Box. Actually, it toke me near than two months to achieve it despite the little help from various howtos (knoppix howto on VIA for example) and forums. Some of the problems I get came from the CPU and some…
Description General CPU Mem HD Screen Video Lectors Price Autonomy/weigth Sound Network PIII850 128Mo 20 Go 14,1TFT S3 Savage MX/MV DVD 8X floppy About $2000 2-4 h 2.9 kg ESS Allegro 1988-1 Ethernet: Realtek 8139 Modem : ESS winmodem Connectors 2 PCMCIA port 1 PS2 ( you can use a double ps2 plug to use keyboard & mouse at the same time ) 1 Infra Red port 1 TV out ( S-video ) Audio: 1 out, 1 in, 1…