RSSAmplifier

Blog

Emmanuel Bernard

Emmanuel Bernard is an Open Source software engineer. Java Champion, he is best known for his lead of Hibernate and Quarkus.

emmanuelbernard.comRSS feed ↗167 posts

Latest posts

Sharing mindmaps with Markdown

I use XMind as my main thinking tool. When I need to structure ideas, plan a project, or just get things out of my head, I open XMind and start branching. But sharing edits in mind maps is not trivial. XMind has an online sharing model but I’ve stayed away from it: I like my files local, versioned, and under my control. So for a long time, mind maps were a solo activity for me. Turns out there’s a…

Sharing your ~/.claude config with Docker Sandbox

I wanted to run Claude Code in YOLO mode but isolated from my actual machine. Docker has Docker Sandbox for exactly that: a CLI wrapper and a set of Docker image templates that give you a contained environment on top of regular Docker facilities. Nice in theory. The problem: by default Docker Sandbox does not share ~/.claude. So your skills, your settings, your prompts… all gone. Every sandbox…

Anthropic has improved function calling and that’s good

If you’ve used function calling in your agentic apps, you know the challenges: Piling up tools consumes a lot of tokens as each tool definition is carried in your context window. Having many tools can confuse the LLM, which might not call the “best one”. Anthropic has added a few interesting features to their API to address this problem. Tool Search Tool This one defers loading tool definitions…

Software Craftsmanship and AI

Yesterday I went to a presentation by Cyrille Matraire on Software Craftsmanship and AI. And I ended up surprisingly optimistic about the role of humans in software development. A history of software craftsmanship Cyrille started by showing the history of software craftsmanship and how it was a breath of fresh air in the 2000s. And how it was probably inevitable with the advent of how the…

Leaving Red Hat - a 20-year page has been turned

After 20 years of an Open Source led career at JBoss and Red Hat, I have decided to leave this family and explore a new path. My journey at JBoss and Red Hat This is a long and not an easy page to turn because it defined me in so many ways. I joined JBoss when it was a relatively small but growing startup; they made noise ten times bigger than their size. This has been the best decision of my…

JBang, Visual Studio Code, and the mysterious disappearing changes

I recently spent time automating some of my repetitive tasks using JBang scripts, with Claude Code helping me along the way in VSCode (oh sorry, it’s called Visual Studio Code now). Everything seemed great until I hit a classic “what the hell” moment that probably every Visual Studio code user has encountered at least once. If you’ve ever found yourself wondering why your changes aren’t being…

MCP Servers, Claude Desktop and fun with PATHs

If you are playing with AI as a developer, you might has heard of Model Context Protocol (MCP) which is a way for an app to connect an LLM with some capabilities like an API, a file explorer, a database etc. The primary app is Claude Desktop today even though there are others like Goose. One problem you might have stumbled upon is that Claude Desktop cannot connect to your MCP server(s) because…

Exploring Diataxis - on structuring documentation

I recently spent some time exploring Diataxis, a documentation framework that promises to make technical documentation not just readable but genuinely useful. You might have heard of Diataxis or you might have struggled to structure your project documentation between different types of documents. Or you are genuinely curious. This blog is for you. Illustration copyright Linette Voller 2021, from…

Securing SSH and commits with a FIDO2 key

If you are curious or interested in FIDO2 security keys and how to use them as SSH keys or to sign your Git commits, this is the blog for you. If you are using Token2 FIDO2 keys and macOS, even more so. Why a FIDO2 security key? I wanted to explore and level up my security posture. FIDO2 security key have a few advantages, you can use them as passkeys on websites that support them. Passkeys are a…

Installing Ruby on Apple Silicon

I have been struggling to install Ruby on Apple Silicon, this was due to an OpenSSL version misalignment. This entry can be useful to you in this situations. RVM I use RVM as my multi environment installation for Ruby. Whether you use rbenv, RVM or some alternative, do yourself a favor and use one. It brings some sanity to dependency management for you various projects. No compile for you! I was…

Signing Git commits with SSH keys

Today I learned that you could sign your Git commits not only via a gpg key but also via a ssh key. Let’s see how. GPG keys and Git signing I’ve never had the rigor to use a maintain a gpg key over the years. For some reasons, I’ve always found it too cumbersome. On the other hand, I’ve managed my ssh keys pretty well (you better be to log into remote machines, right?). I’ve been working on a…

Taurus K320 as a mechanical keyboard

For people old enough to have used the IBM keyboards you could stop a tank with, a mechanical keyboard is an achievement in life you are striving for. Like my poor collegues ears will attest while in meetings with me, I’ve achieved that life goal quite a while ago. For my mostly macOS usage, I settled for the Durgod Taurus K320. Why? To noise or not too noisy The please of a mechanical keyboard,…

BTRFS vs Ext4 for a NAS

Assuming you have a new NAS for your backups and personal files hosting. Which file system should you use: BTRFS or Ext4? This is a surprisingly unsettled question on the internet. You can find very opinionated choices on Reddit or other forums and of course, they do not agree with one another. Here is my perspective after some reading and some chats with geekier friends. For my backup and…

Java LTS - perspective of a library author

I have had intuitively mixed feelings with the proposed 2 years Long Term Support plan of OpenJDK (from 3 today) so I wanted to write down what was causing it. These do not represent my employer’s view, more my perspective having spent 17 years leading, maintaining and contributing to various Java frameworks, application stacks and tools. I wrote this blog entry in one quick block of time so these…

Which shell to use? bash, zsh, fish, something else?

I have been using bash as a shell for as long as I remember and added prompt customization for almost as long as I remember. I felt the urge to revisit this and asked around what the favorite shell was and I investigated a bit. Context macOS has decided to deprecate bash in favor of zsh. It has something to do with licensing and being fed up with maintaining a decade old bash version themselves.…

Embracing Uncharted

Econtalk is a good podcast where interviews bring you to ideas you have not thought of or crystallized before. Uncharted with Margaret Heffernan is one of these. It’s about predicting the future, scenarios, experimentations, living in the moment and much more. It was very insightful so I took some notes where I added my own thoughts and voilà, this blog post. Predictors of the future Predictors of…

Fixing failing import of Evernote notes to another app

Importing Evernote notes into a new tool can sometimes fail mid way. This post explains how to work around it. As I explained earlier, I moved away from Everyone and now use Bear. I also tried Joplin. For both, I did import my entire 2600+ collection of notes. There was one repeatable glitch and I’d like you to avoid. The expected import process The process is fairly simple, you export your…

53 Java libraries to solve your problems

Max Andersen asked something interesting over the week-end on Twitter. What is an example of a java library that solved your problem just nicely ? Can be anything as long as available as a jar somewhere :) Lo and behold! He received a lot of propositions. Some by very interested parties (aka ads) but hey, I left them in, I did no editorial selection. This is an interesting list of libraries to…

Selecting a note taking application

I am on the market for a new notes application, I have been asking around for advice. Here is the list of apps and a short analysis I did for each. My use cases I use a notes application for storing my reference data. I say reference data because I treat them as long term storage for information I might need to get access to later. My todo list is in a different system (from the Getting Things…

Scheduled emails in GMail and other mail clients

There is a really neat feature in GMail that you should make more use of: scheduled emails. Here are two use cases I’ve used it for so far. The first use case is related to the right to disconnect. When you are about to send an email late at night, during the week-end or during your holidays, you can remove the pressure off your colleagues by scheduling it to be sent the next day at 8:00 or the…

Communicating within remote teams

Communicating in a remote team has some specific challenges. Working remotely has lots of benefits but can be stressful due to the non physical lines between work and personal life. I’ve been thinking a lot about team communications over the years in the context of open source communities. Open Source communities are by nature remote, timezone hopeless and trusting in nature. Remote work and…

Why oh why two spaces after a period?

For the longest time, I was just plainly annoyed at people that were putting two spaces after a period. I thought it was one of those English thing. Being French myself, I learned slightly different stylistic approaches ; for example we put a non breakable space between the last word of a sentence and exclamation points or question marks. 🤷. But there is a story behind the double space usage.…

Make Google Meet less blurry

Some people complain to you that your sharing screen is blurry with Google Meet. Here is a possible help. As I mentioned in my ultra wide screen blog entry, one of the drawbacks of wide screens is that screen sharing applications like Google Meet or BlueJeans tend to render windows on the 49” screen quite blurry. More than expected. I am not quite sure of the cause, I suppose they downscale the…

jbang – scripting for Java

Ever had a small task to script? Ever felt Java was not up to the task despite being your primary language? JBang is coming to the rescue. Use case When I migrated my blog, I had a need to change the Front Matter part of my blog entries. Blogs themselves are in pure Markdown with no tie to the website generator structure but there is some metadata at the top that tends to be specific to the…

Jekyll – A new blog infrastructure

After 8 and a half venerable years of service, I’ve retired my Awestruct based blog and migrated it to Jekyll. Read on for some feedback. The blog virus has been hitching me in no small part due to Gunnar’s heroic effort of the last 12 months to provide quality blog content out there. You still have a blog / website? Well, year! Facebook is not your website (remember MySpace?). Twitter is not a…

Super ultra wide screen

I recently changed my desktop monitor to a super ultra wide 49” and I love it. Here is why. My venerable 27” Dell was becoming dangerously flaky, this led me to shop for a new monitor. I knew I wanted a big monitor. In fact, I’ve always preferred a big monitor with lots of physical real estate vs virtual desktops. Virtual desktops never cut it for me, my head gets confused. One thing the 27” was…

Revenu universel via Sans Emploi de Raphaël Liogier

On m’a recommandé de lire le livre Sans Emploi - Condition de l’homme postindustriel de Raphaël Liogier pour comprendre la notion de revenu universel. De pensée économique plutôt classique, j’ai du mal à comprendre comment ce modèle peut fonctionner. Sans fixation des prix des biens de consommation bien sur ;) Liogier amène les arguments en faveur du revenu universel, notamment pour lui permettant…

macOS powerline and Python interpreters

tl;dr; using powerline and having it fail after a homebrew update? Read on. If you have tuned a bit your terminal in macOS, you might be using Powerline. It prettities your command line enough to warrant some trouble installing it. And it does it to vim status lines too. Now if you also use homebrew, every so often you see something like this when starting a new terminal window -bash:…

tig and add interactive

Tig is a textual GUI for git which lets you manipulate your git repo like GitX or SourceTree but without leaving your terminal. In particular, you can “graphically” do git add --interactive. I find it easier to do my chunk surgery when I only want to apply parts of a file change. The documentation is a bit terse so let me give you a rundown. Navigate diffs launch tig s # to see the status view…

Simplifying your double (calendar) life

If like me you live a double life (pro and personal) and like me you want to share your availability via calendars, you probably have created clones of the same event into multiple calendars. There is a better way. Double life I live double calendar lives. A shared calendar tells where I am (travel, conferences, face to face meetings, holidays etc) to the team I work with. Except that I am in more…

MacBook Pro and the SMC cure

The physical parts of your MacBook (fans, ports etc) behaves erratically? I might have a cure. A story of crashes My MacBook Pro was getting on my nerves lately. When plugged to my Thunderbolt dock and thus my external monitor, my laptop would crash randomly. Sometimes, once every 2 weeks, sometimes several times a day. I tried many things, like not starting all of the utilities one usually uses…

Using vim and Evernote

I like Evernote because all my notes are in a single place and I can access it from everywhere (desktop, phone). I use it very much as my GTD reference material. But the editor is subpar compared to vim though - what isn’t? Geeknote I found a way to edit my Evernote notes in vim. I use Geeknote and specifically this fork. git clone https://github.com/jeffkowalski/geeknote python2 setup.py build…

Embedding Vim options in Markdown

I’ve been wrestling with an issue for quite a while: embed vim options into a Markdown file. I finally found a solution. Context You can customize the options set when opening a specific file in Vim. This is pretty handy when you want to customize things like tab vs spaces or the language to spellcheck with. This is typically done by adding some vim incantation as a comment in the file. // vim:…

Start IntelliJ IDEA from the command line

You can start IntelliJ IDEA from the command line which is handy when you live in a terminal like me. But you need to enable that feature. Open IntelliJ IDEA, go to Tools->Create Command-Line Launcher... and optionally adjust the location and name of the script that will start IntelliJ IDEA. Voilà! Now from your command line, you can type: idea . to open the project in the current directory idea…

Retraite, baby boomers et pyramide des ages

Je n’avais jamais bien compris pourquoi les baby boomers étaient un tel problème pour les retraites des plus jeunes. Mon hypothèse était que la retraite des baby boomers est payée par des actifs dans un système à répartition comme en France. Donc le moment difficile c’est le moment de vie active où la pression de paiement est la plus forte. Mais ces baby boomers, ils vont bien finir par mourir, et…

Course on inverted index

I gave a three hours course on inverted index to students from Telecom SudParis an engineering school here in… Paris :) It was fun to refresh my knowledge on all the fundamental structures that make Lucene what it is. I covered quite some ground for this three hours course (a bit to much to be honest). Amongst other things: b-tree, inverted index, how analyzers and filters do most of the magic…

Log-Structured Merge Tree with level-based compaction

It is surprisingly hard to find a good explanation to level-based compaction of a Log-Structured Merge Tree. It turns out that it is best explained in LevelDB’s documentation. You can find the (html) details here. This blog post is a collection of key concepts I did not grasp initially. Sort of a mental note for me. It should bring you nicely from standard size-based compaction LSM to level-based…

Devoxx CfP - the art of tricking yourself

I noticed that the Devoxx France call for paper (CfP) application was influencing my votes. Sneaky one! Jeff Atwood’s tweet made me rethink about something I noticed When we designed Stack Overflow I intentionally put author at bottom: you should read the actual content before “deciding” credibility In the CfP, you review a proposal, you first see: the title and type of proposal (conference, Tools…

Why do we have corporate income tax anyways?

There is a lot being written about corporate tax optimisation/evasion these days both in Europe and in the US. This begs for a more general question, why do we tax corporate profits? I had the debate with a friend this summer and led me to research the topic. There is a very interesting paper on this subject as well as an analysis of the distortion of corporate tax. Here is my summary. Why (not) a…

Homebrew formulae for Mutt with sidebar and trash patches

Homebrew’s Mutt formulae is in a bit of a disarray. I can’t blame them as Mutt has a bunch of not quite maintained patches not quite fully compatible with one another. The problem is that some of these patches are very very useful. I have created a tap to maintain Mutt with the two key patches I use: sidebar trash At the time of writing, it uses Mutt 1.5.24 but I might update it. To use the…

Synology rsync and non standard ports

Recently running rsync to my Synology diskstation stopped working. I had just changed my default SSH port to a non standard one. Learn how to fix it. Synology recommends to change the default SSH port to a non standard one. What they forgot to tell you is that it will break your ability to rsync into the machine. Here is a way to fix it. The workaround way One way to fix it is to use the…

Asciidoc folding for Vim

I just learned about the ability to fold in Vim. For mere mortals, it means hiding parts of the file. Here is a code to put in your .vimrc to allow folding for Asciidoc(tor) files. It folds asciidoc files at section boundaries and use nested folds for subsections. "" Fold Asciidoc files at sections and using nested folds for subsections " compute the folding level function! AsciidocLevel() if…

Adding color to Maven output

Maven is quite verbose. Finding the useful information when the test fails requires you to squint eyes. Unless, you bring some coloring to the massive Maven output. The state of color output in Maven is still quite messy. Just look at Arnaud’s blog to see how non user friendly that is. Enter maven-color Enter Jean-Christophe and its Maven Color project. The goal is to bring colorized maven console…

Moving to HTTPS

I have decided to move this website to HTTPS. Let me know if you see anything fishy, cannot access it or if the RSS feed no longer updates. Why? With my country’s government going completely stupid, I decided to play the nut game, I can be pretty stupid too. In its infinite wisdom, the French government has decided to enable mass surveillance of the French people without oversight of the justice…

Get notified when terminal commands end

Here is a tiny little tool that will speed up the multi-tasking life of terminal users: be notified when a command finishes. How many times have you started a command in the terminal to realise that it will take a while? How many times did you then move to emails or twitter “in the mean time”? How many times have you forgotten about it and read our twitter feed for 30 minutes aka 25 minutes longer…

SPF for dummies - how to fight spams

In this post, you will learn everything you need about SPF (Sender Policy Framework), what it means for your emails and how / if to set it up for your domains. What is it for and should I care? This is a standard that helps reduce spam. Each domain lists in one DNS record the list of servers that are allowed to send emails for that domain. So when an email provider like Gmail sees an email sent…

Une place à gagner pour Devoxx France

Devoxx France m’a offert une place suite au travail que j’ai fait dans le comité de sélection. Comme je suis speaker, je n’en ai pas besoin. Donc elle est pour vous. Aller voir comment la gagner.

Unstuck the unread count of Apple Messages app on Mac OS X

The text message synchronization between iOS and Mac OS X devices is very useful. That is until one of the unread count is stuck. There is nothing more irritating than a false unread badge. It has happened to me on Apple Messages (iMessages) in Max OS X Yosemite. The message would “unread” itself in front of my eyes. I deleted the message, that solved that part. But the unread count remained at 1.…

One line per idea - the feedback

I wrote a bit more than a year ago on how to wrap lines for markup languages. I promised to give feedback on this experiment and specifically the use of one line per idea or clause. Remember that to me, using one line per paragraph is problematic: navigating through it is a bit cumbersome reviewing a git diff is annoying when you need to scroll horizontally editing one character leads to the whole…

I love what my Kindle did to my life

I have been a rather early adopter of ebook readers. The Sony PRS-505. But I gave it to my wife and moved on to read on my iPad instead: The whole buying books and moving them to the device was quite cumbersome and the iPad was good enough especially with the awesome Kindle app. I physically met my colleagues a few month ago - no it does not happen very often - and two of them told me how they…