After almost ten years of good and loyal services 🎖, I had to give up on my Lenovo Thinkpad T520, which was getting too slow for things like intensive Docker building…
Althought I still trust Lenovo for providing excellent Linux laptops, I wanted to try one of the newcomers in the Linux laptop market.
I made up my mind on InfinityBook S 15 from Tuxedo Computers (‘TC’).
The universally advertized way of building Docker images with GitHub is to set up a GitHub Actions workflow.
Github Actions (GA) is actually very easy to use but nonetheless still under heavy development.
Unfortunately, almost all tutorials out there are based on (the same) very simplistic use cases. I just couldn’t get it right by simply following them : I’ve literally spent hours to test and understand how to leverage the cache action for Docker multi-stage builds.
I hope this post will be useful to anyone with a similar use case.
In this two-part article I describe the steps I had to take to make a headless Raspberry Pi 4 a Bluetooth A2DP speaker.
My goal was to offer a user-friendly way for anyone in the same room to pair its Bluetooth smartphone with the Raspberry Pi and play music through it, while making sure the neighbors won’t be able to connect without approval.
To output music, you can connect a Hi-Fi system to...
As I feared when I migrated to GitHub’s hosting, it has become too complicated to overcome GitHub’s limitations on Jekyll plugins and features.
I just needed to create a collection to put my “live drafts” into it, but the deprecated jekyll-paginate plugin provided with GitHub pages didn’t support collections.
I therefore switched to offline-building my site and pushing the generated static...
Why Docker is not working out-of-the-box on Raspberry Pi 3 & 4
Docker is a virtualization technology, made to allow applications to be independent from the underlying system. However because it is not a full-fledge virtual machine but rather a proxy to system resources leveraging on Linux kernel’s virtualization features, it does not provide a total independance from the system’s CPU architecture.
This is a problem with Raspberry Pi because most of the Docker images around are built for...
This page lists some tools I’ve been using with success for a while : they may fit your needs as well !
NextCloud (a fork of OwnCloud) is a very promising software that aims to bring usual cloud services to the home.
However, it’s based on pluggable features that are not always stable. Here are the ones I’m using on a day-to-day basis :
- web interface to access my own...
New blog concept ?
I write articles about things that required enough amount of work for them to be considered worth sharing. Writing, in turn, also require a fair amount of work to be comprehensive and accurate enough.
I have to admit however that I don’t have time to write advanced articles as much as I would like to. Many of them just stay unfinished in a draft state, never published…
A quick “pros & cons” to choose between Python or Shell scripting, from what I’ve observed through the years.
This could probably apply to other high level script languages* vs shell.
* Like Ruby, but not like Perl, as it shares more with shells from my point of view, like unreadable syntax and execution speed.
Choose Python for :
- its simple syntax : can be read even by non Python-speaking people. End...
A year ago I was very excited to get my hands at Sass.
I thought it could fill the gaps in coding with CSS : preventing variables duplications, automatic generation of multiple static stylesheets depending on the rendering device (vs using media queries which are not always supported and require downloading all versions of the code)…
But it could not.
What really is Saas
Sass-lang.com states it is a “CSS extension language”, but...
If you are using PortableApps, you might have noticed that some programs like Firefox or PuTTY launched from Windows 7’s task bar starts the system wide installation instead of the PortableApps’s one.
This is because when you pin a program to the task bar, it uses the executable of the current process, and with PortableApps this executable is not the same as the launcher, which takes care of loading the portable configuration.
=> edit the...
Voici un petit guide pour dessiner un oeuf avec Gimp.
Les techniques décrites ici permettent à la fois de dessiner un oeuf réaliste pour les boulots sérieux (!) et un oeuf type “bande dessinée”, typiquement à usage de gamification ;-)
Vous trouverez le fichier Gimp complet en pièce jointe, que je vous invite à réutiliser ou à prendre comme source d’inspiration.
Etant un utilisateur occasionnel de Gimp, je ne garantis pas que...
Here is a tutorial to draw an egg with Gimp.
With the following techniques, you will be able to build a realistic egg for a serious business (!) as well as a cartoonish one typically for a gamification usage ;-)
You will find the full Gimp source attached to this article, which I invite you to reuse at will.
Being a casual user of Gimp, there might be better approaches to...
Today, all developers have heard of Unicode : this character encoding allows all characters of any language in the world.
This article outlines the basics of Unicode through some key points for Java developers.
It also talks about the influence of Unicode on the JVM, like how characters are stored into a
String and why you have to get cautious when using
char and <code...
Why the need for WebSockets ?
We already have sockets (C programmers know them well), XMLHttpRequest (core of AJAX techniques), Long polling (like comet, …). So why the need for WebSocket ?
Here is an exerpt from the WebSocket RFC’s abstract :
The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or <iframe>s and long polling).
Time zones in XML Schema and Java
For interoperability reasons, it often makes sense for applications to transmit dates and times as xsd:dateTime strings, as this standard should serve all common cases.
XML Schema’s dateString type was inspired by the extended syntax of ISO 8601 : a sample string would be
2000-03-04T23:00:00.000+03:00 (March 4th, 2000, 11:00:00 PM in a time zone that’s 3 hours after UTC).
ISO 8601 also defines another (more compact) syntax : <code...
I’ve been used to great Eclipse plugins to deal with SVN-versionned projects for a long time.
Nowadays I’m using Mercurial (a.k.a. Hg) a lot and it became more handy to me to use Tortoise-like products, which integrate directly into the OS’ file manager.
I’ve come to use the following solutions for the different platforms I’m working with (on Ubuntu 12.04).
Mercurial for Nautilus
TortoiseHg works fine, but I had to add a script to have the corresponding “Actions” menu...
This article contains instructions to build PyCrypto 2.6 for Windows XP (32 bits).
The PyCrypto library provides Python with implementation for a lot of algorithms for cryptography. It’s very useful.
Ubuntu has it by default but if you want to have it for Python 3.2 on Windows, you must use Active Python, as there is no other binary release for Python 3.2 on the web.
In case you want to use...
This article focuses on Android and Java keystores, but it applies as well to any key that can be printed as plain text.
Before printing a private key, make sure that it is what you need : for instance you would rather print a revocation certificate for an OpenPGP key since you can still sign content with a new key. This is not the case for Android, which requires the same key for every release of an application.
This small article might help you to figure out quickly how to work with the AddThis module for Drupal.
It is not a substitute to the original documentation : it just provides a concrete view of the configuration process from my experience.
Here is an overview of the main steps to get AddThis working on Drupal :
- install the module : drupal.org/project/addthis
- choose in which nodes it appears : page, story, teasers,...
Twitter module for Drupal
If you want to display your latest tweets on your Drupal blog, you will probably want to use the dedicated Twitter module. Among other features, this module provides a new block type that lists a selection of tweets from an account. Tweets are retrieved via a cron job and stored in your website’s database, making them available even through corporate firewalls that banish twitter.com. Just-what-you-need !
There are a few catches however : it...
Stock apps are the applications installed by default when you buy a branded phone. Most of them are useless, not optimized and have open source alternatives that can protect your privacy.
JUST REMOVE THEM.
Below, for instance, are listed ring files on my Xperia X10 Mini. Just look at which ones are the largest : Sony Ericsson and SFR (carrier)…
# busybox ls --color=never -lS /system/media/audio/ringtones busybox ls --color=never -lS /system/media/audio/ringtones total 2977 -rw-r--r-- 1 0...
Instructions are aimed at Windows mainly (on Linux it should be easier).
Need to migrate from Subversion to Mercurial ?
This is a quick guide to migrating an existing SVN repository to a new Hg one.
It takes 2 major steps :
- make a local copy of the existing SVN repository
- convert it to Hg
Make a local copy of the existing SVN repository
Oddly enough, this was the hardest part to figure out...
I was just trying to implement client and server authentication over SSL on IBM Websphere 6 (JRE 1.4.2)…
Problems started to happen with a :
java.io.IOException: Error in loading the keystore: Private key decryption error: (java.lang.SecurityException: Unsupported keysize or algorithm parameters) at com.ibm.crypto.provider.PKCS12KeyStore.engineLoad(Unknown Source) at java.security.KeyStore.load(KeyStore.java:695) ... 30 more
… easily solved by replacing the JRE’s policy files (
US_export_policy.jar) with an unlimited version of them (ah,...
This has been annoying me since the beginning : small screen devices are not taken into account by the vast majority of apps editors.
Worse : despite Google’s pleading about size-caring (see developer.android.com/design), they recommend patterns that actually don’t fit the real small screens for which size-caring IS important. Example : the “action bar” and other icon bars : there is no place for such bars on small screens…
Of course the developer is able to adapt the...
Today I ran into a small problem that might happen sometimes : trying to benefit from a 2 day-only offer to download for free Duke Nukem 3d (just for fun, I don’t think it’s going to be the killer app this year ;-), I found out that my phone had not enough free memory to install it (Market told me : 56MB required).
After having removed several apps from the memory to free enough space to install the game...
This is a technical article aimed at Android developers. It does not require a lot of background on Android XML resources, but if you don’t understand something just check out the official docs.
The first time I read Android developer docs, there was something that was unclear to me : what resource to put in which XML file.
In this article, I will focus on resources in
res/values/ and give some hints about how to...
This is a technical article aimed at Android developers. It deals with undocumented features of the Android API and derives from experimental work.
You can browse and download the sample code included in this article at bitbucket.org/nicobo/tweaking-android-notifications.
For SwitchDataSwitch, I wanted to provide users with a 1-click solution to enable and disable data traffic (2G/3G/…). I chose the notification bar since it is a very accessible place, visible almost all the time and that can be...