Articles

Sentier des Douaniers / du Corbusier

Sunday, 13 April 2025
|
Écrit par
Grégory Soutadé

Le sentier des Douaniers, renommée sentier du Corbusier en hommage au célèbre architecte inhumé à Roquebrune-Cap-Martin, est une promenade familiale qui longe la côte de Roquebrune. Le chemin, goudronné dans son ensemble, est relativement plat, bien qu'entrecoupé régulièrement d'escaliers. D'une distance d'environ 3km (aller), il permet de rejoindre le cap (Martin). Cet aspect accessible fait qu'il est assez emprunté par les touristes et les locaux.

L'idéal est de prendre le train puis de s'arrêter en gare de Roquebrune-Cap-Martin. Le point de départ se situe immédiatement sur la gauche en sortant de la gare. En suivant le chemin des douaniers (côté opposé, sur la droite, direction les plages), il est possible de joindre Monte Carlo (~2 km), mais la promenade semble moins intéressante. Une fois sur le sentier, il n'y a pas vraiment d'issue, il suffit de poursuivre jusqu'à la fin.

Ce dimanche, la météo était au beau fixe sur les Alpes-Maritimes. Pourtant, les nuages sont restés accrochés sur le flanc de la montagne sans se disperser, ce qui rend les photos moins jolies, mais la promenade pas forcément moins agréable. En effet, le sentier est plein sud, goudronné, avec peu d'ombre. Il faudra donc penser à mettre un couvre chef et prendre de l'eau, voire des lunettes de soleil et de la crème solaire, les jours de beau temps.

Tout le long du chemin, il y a des petites criques accessibles, ainsi que plusieurs bancs. Il est donc aisé d'atteindre la mer, même si cette dernière est entourée de rochers plus ou moins saillants. Il faudra donc être vigilant lors des baignades (privilégiez des chaussures aquatiques).

Si l'on a la plupart du temps les yeux rivés sur la mer, on peut apercevoir ça et là les immenses villas en hauteur (encore plus impressionnant quand on regarde sur Google Maps). D'autant que beaucoup d'entre elles datent de la Belle Époque. Notamment ce promontoire (privé) aménagé en front de mer.

Curiosité du parcours, des chèvres ! Elles sont habituées au passage et se collent même au grillage pour capter quelques caresses.

Sur le retour, la baie de Monaco s'offre à nous. Paradis pour personnes fortunées du fait de sa fiscalité avantageuse, et aberration urbaine, dont les immeubles constituent un investissement financier plus qu'un pied à terre, faisant passer Paris pour une ville accessible (le prix au mètre carré y est 5 à 8 fois plus cher). C'était d'ailleurs un week-end du Masters 1000 de Monte-Carlo.

En fin de (mi-)parcours se profile au loin la ville de Menton, frontalière avec l'Italie. Le parking adjacent peut également être le point de départ de la randonnée.

1096

Monday, 24 February 2025
|
Écrit par
Grégory Soutadé

Les conflits armés sont des événements décidément très imprévisibles. Il y a un peu plus de 3 mois, nous passions le cap des 1 000 jours depuis le franchissement de la frontière Ukrainiennes par l'armée Russe. 1 000 jours de combats acharnés, 1 000 jours de courage, 1 000 jours de résilience, 1 000 jours d'innovation, 1 000 jours que Kiev résiste tant bien que mal à un ennemi largement supérieur en homme et matériel.

À la sortie de l'hiver dernier, et après une contre offensive Ukrainienne stérile, les positions étaient relativement figées. L'aide Américaine concernant les livraisons d'obus a été gelée pendant plusieurs mois suite à la discorde entre Républicains et Démocrates. Face à ce constat, le haut commandement Russe a décidé d'augmenter (encore) les moyens. Le nombre de missiles envoyés quotidiennement avoisine désormais les 100 par jour, visant notamment les installations énergétiques, mais aussi les bâtiments civils. Plus encore quand il s'agit de répondre à une attaque de missiles longue portée. Heureusement, grâce au soutient allié, nombre d'entre eux sont interceptés, même si certains traversent les mailles du filet.

Sur le terrain, l'armée de Poutine a adopté de nouvelles stratégies plutôt efficaces puisqu'elle progresse, faiblement, mais quotidiennement, avec un nombre de combats engagés là encore plus important. Ceci, malgré les nombreuses pertes humaines. De l'ordre de 1 000 soldats mis hors de combat par jour selon les chiffres du renseignement Ukrainien. Ainsi, dans le Sud Est, Avdiïvka est tombée. Pokrovsk est quant à elle quasiment encerclée. Stratégie moins coûteuse et plus efficace qu'un assaut frontal. Au Nord Est, la Russie a réalisé une nouvelle percée dans le sud de la région de Belgorod. L'étirement des zones de combats étant plus favorable aux soviétiques grâce à leurs importants moyens humains et matériel. En effet, 3 ans plus tard, elle est toujours capable de recruter des unités pour le combat, et l'industrie de l'armement tourne à plein régimes, par delà les sanctions.

Afin d'éviter la chute de Pokrovsk, l'Ukraine a lancé un mouvement très audacieux en envahissant une partie de la région de Koursk, directement sur le sol Russe. Un jet de dés pour espérer alléger la pression sur le front Sud, mais aussi pouvoir peser dans d'éventuelles négociations. La réponse Russe fut tout aussi intelligente avec la mobilisation de troupes Nord Coréennes (en plus de son soutien matériel). Mouvement tout a fait légitime d'un point de vue du droit international, car il s'agit de protéger son intégrité territoriale. Selon les diverses sources, ce sont donc plus de 10 000 soldats supplémentaires qui sont arrivés. Une aubaine pour le camps de Poutine.

Côté Ukrainien, les succès militaires sont rares. Un certain nombre d'avions de chasse sont opérationnels depuis l'été dernier, mais ne sont utilisés que pour des tâches défensives telle que l'interception de missiles. Par contre, l'industrie s'est grandement spécialisée dans la conception de drones à courte et longue portée. Ce qui permet d'endommager régulièrement les installations pétrolières et gazières très profondément dans le territoire ennemi. La guerre de drones est une nouveauté à laquelle peu d'armées étaient préparées. Les innovations y ont été rapides, peut-être autant que pour les missiles hyper sonique. Ces nouvelles armes sont redoutables, avec une précision inégalée quand elles sont directement pilotées par caméra. Notamment contre les chars qui ne sont pas forcément complètement blindés sur la partie supérieure. Idem pour les drones maritimes, véritable terreurs de la mer Noire, obligeant la flotte ennemie à se retirer en mer d'Azov. La marine Russe a ainsi développé des drones anti drones ! Comble de cette bataille technologique, nombre de militaires Ukrainiens formés à l'étranger se sont plaints de ne pas avoir reçu de formation spécifique pour ces nouveaux types de combats.

Fin janvier, Donald Trump est entré en fonction. Le 47e président des États-Unis est encore plus imprévisible que lors de son premier mandat. Il souffle le chaud et le froid, alternant entre soutien à l'Ukraine et négociations forcées. L'aide destinée aux pays étrangers ayant été suspendue dès sont entré en fonction, c'est désormais les métaux rares du sous-sol Ukrainien qui l'intéresse (parce qu'il adore les forages). Pourtant, les États-Unis semblent de moins en moins capables de peser dans l'issue du conflit. Trump veut juste stopper les dépenses liées à cette guerre, sans avoir d'intérêt réel quant au sort de l'Ukraine. Ce qui oblige l'Europe à faire plus et mieux, alors qu'elle est en proie aux difficultés et divisions.

Le soutien de l'opinion publique internationale s'étiole lui aussi de jours en jours. De plus en plus d'Ukrainiens sont eux-mêmes disposés à abandonner une partie de leurs territoires perdus contre la fin du conflit. Le président Zelensky n'est plus soutenu que par 57% de ses concitoyens, alors que la loi martiale court toujours et que des élections auraient normalement dû être organisées. Côté Russe, la population souffre en silence, car sous une croissance en trompe l'œil (4,1% selon les chiffres du Kremlin) principalement tirée par l'industrie militaire, la réalité du quotidien est beaucoup plus difficile avec une inflation de 9,5% en 2024. Ce problème économique pousse nombre d'entre eux dans les rangs de l'armée, qui offre de bons salaires et de bonnes primes en cas de pépin.

Dans ce tableau plutôt noir, on peut pourtant lire l'incroyable résilience d'un peuple agressé depuis maintenant 3 ans et qui vit proche des zones de combat, voir même pour certains carrément dedans. Peuple toujours debout malgré les alertes quotidiennes, les destructions, les pénuries et les mauvaises nouvelles quotidiennes.

Le bras de fer continue donc, avec des répercutions de plus en plus dramatiques sur le long terme, d'un côté comme de l'autre. Il faut continuer à espérer une sortie rapide et favorable, même si elle semble peu probable sans un soutien majeur extérieur.

Milano nuovo

Tuesday, 07 January 2025
|
Écrit par
Grégory Soutadé

IBM à Milan

Le début d'année une période propice aux bilans divers et variés ainsi qu'à l'introspection. Ce qui amène à prendre des résolutions pour ce nouveau cycle qui commence, bien qu'en réalité notre rythme de vie est calqué sur le rythme scolaire. L'autre tradition consiste en l'envoie de ses vœux à un maximum de personnes, les outils de communication actuels permettant de transmettre ces messages immédiatement. Je préfère personnellement des messages personnalisés que l'on pourra délivrer directement à la personne, en face à face quand cela est possible.

Mais le 1er janvier est également synonyme d'entrée en vigueur de nouvelles législations et d'ajustement de taxes et pensions. Législations qui ont souvent été votées longtemps en avance (parfois des années). Il y a ainsi de grandes dates butoirs qui font régulièrement écho dans la presse : neutralité carbone en 2050, fin de la vente de véhicules thermiques en 2035... À la fois lointaines et si proches, ces mesures inquiètes car elles vont nous forcer à repenser notre mode de vie et nos déplacements, pour des modèles fort probablement plus contraignants.

En Lombardie, c'est une petite révolution qui s'opère en ce 1er janvier 2025. Les Milanais ont eu 5 ans pour se préparer psychologiquement à une nouvelle mesure : l'interdiction totale de fumer dans les espaces publics (ouverts ou fermés). Petit encart néanmoins : il est possible de fumer dans des lieux isolés avec une distance minimale de 10m autour de soi (difficile à obtenir dans une métropole aussi dense). Je me souviens en effet de mon voyage datant de 2019 dans la capitale Lombarde où je notais

Il est d'ailleurs assez difficile de trouver des rues où personne ne fume...

Je trouve donc cette mesure extrêmement courageuse sachant que 20% des Italiens fument et qu'il y a même des distributeurs de cigarettes en libre service (une aubaine pour la mafia). Cette mesure me rappelle le "big bang" opéré par le Royaume-Uni lorsqu’a été interdit la cigarette dans les pubs. On pensait alors à la mort de ces derniers, il n'en fut rien. Milan n'est pas précurseur en la matière. On trouve des règles similaires à New York (avec un peu plus de souplesse) ou Singapour. Mais cette mesure met en lumière une prise de conscience généralisée des pouvoirs publics face à ce qu'on appelle communément une "drogue douce".

Dans ma jeunesse, j'étais entouré de fumeurs. L'habitude faisant, la fumée ne provoquait qu'une gêne légère. Je me souviens encore de certains repas familiaux où flottait 20cm de fumée au plafond, ou encore certains restaurants/bars totalement enfumés. Les plus anciens ont même connus la cigarette dans les avions ! Il y a désormais moins de fumeurs dans mon entourage. Puis, il y a eu ce 1er février 2007 où la cigarette a été interdite dans les restaurants (entre autres). Et puis, la plupart des voisins sont non fumeurs. Et puis, j'ai commencé à faire plus de sport, domaine où l'oxygène est une ressource précieuse. Les bronches étant particulièrement ouvertes, on est beaucoup plus sensible à la pollution atmosphérique. Il s'est donc opéré un réel sevrage depuis plusieurs années. À tel point que cette odeur m'est désormais particulièrement désagréable. Et pour cause, une fois sevré, on se rend compte à quel point ce produit est de la grosse m****.

Parce que la cigarette n'apporte que des mauvaises choses :

Pour soi

  • Dépendance
  • Troubles de l'humeur
  • Perte de goût et d'odorat
  • Jaunissement des dents et de la peau
  • Mauvaise haleine
  • Encrassement des poumons et des artères
  • Risque de cancer
  • Perte de capacité respiratoire
  • Obligation de fumer en extérieur par temps froids et pluvieux
  • Obligation de se réapprovisionner régulièrement
  • Coût du tabac

Pour les autres

  • Tabagisme passif
  • Pollution de l'air
  • Exploitation des travailleurs pauvres

Pour l'environnement

  • Produit exotique venant de loin
  • Transformation du tabac utilisant des produits nocifs
  • Pollution due aux mégots
  • Risque d'incendie
  • Déforestation (plantation é séchage du tabac)
  • Pollution plastique (paquet de cigarette, briquet)

D'ailleurs, je ne comprends pas les personnes qui fument avant/pendant les repas. Il est impossible d'apprécier un plat quand on a les papilles brûlées par la fumée (en plus d'incommoder le voisinage). On pourra malheureusement dresser ce triste constat : beaucoup de personnes travaillant dans la restauration (dont des grands chefs) sont fumeurs... Et que dire des personnes qui fument dans leur voiture ? Dès le lever ? On voit ainsi à quel point cette drogue "douce" est une véritable addiction et n'est pas consommée seulement dans les moments festifs/conviviaux. Elle est une fausse solution face au stress et à l'angoisse, qui augmentent avec l'addiction cat le corps se met en état de stress avec le manque.

Fumer n'est ni un droit, ni une liberté, c'est une addiction.

Pour autant, j'ai vu autour de moi plusieurs personnes arrêter de fumer. Je trouve cette démarche très courageuse de leur part quand on connaît la difficulté de se sortir d'une addiction parfois vieille de dizaines d'années.

Halte aux squatteurs !

Sunday, 08 December 2024
|
Écrit par
Grégory Soutadé

Trouver un nom est toujours un exercice délicat, car il aura toujours une portée et une connotation sur un temps plus ou moins long. Une fois les choses actées, en changer pourra jeter le trouble chez les personnes qui auront connues l'ancienne référence.

Mon dernier projet en date est Drycat. Le nom retenu n'a été choisi que récemment. Toute sa version de développement s'est faite sous l'acronyme ssss, qui reflète plus la nature du projet mais est moins facile à retenir pour l'utilisateur. Une fois ce joli nom évoquant nos chères bestioles choisi, il aurait été bon de faire une recherche pour savoir s'il n'était pas déjà attribué. J'ai oublié de faire la démarche. Résultat, le projet est un homonyme d'un aspirateur industriel... Les deux mondes restent toutefois suffisamment éloignés pour éviter les confusions et que l'utilisateur puisse retomber rapidement sur ses pattes.

Le projet est désormais exposé aux yeux du monde entier via l'adresse https://drycat.net. Comme pour toutes les adresses internet, elle doit être enregistrée chez un organisme certifié appelé "registrar" (bureau d'enregistrement). Cet enregistrement n'est pas gratuit. Il faut s'acquitter d'une cotisation annuelle plus ou moins importante selon les organismes et l'extension choisie (.fr, .com, .net, ...).

Mon idée première était d'enregistrer l'adresse drycat.com. Le premier réflex est de tester directement cette adresse dans un navigateur. On arrive alors sur une page indiquant que le nom de domaine est à vendre. Bonne nouvelle puisque je souhaite l'acquérir. Ce service est proposé par l'Américain GoDaddy. Là où les choses deviennent étranges, c'est qu'il y a un encart qui propose de faire une offre pour le nom de domaine ("Make an offer") et n'est donc pas soumis à une grille tarifaire. Je tente de rentrer 10$, ce qui semble cohérent (en France, un nom de domaine en .com coûte dans les ~15€/an). Un message en rouge apparaît indicant que le propriétaire n'accepte pas d'offre en dessous de 5 000$ ! En gros, il y a un co***** qui a enregistré ce nom de domaine dans le seul but de le revendre.

Ce phénomène de squat n'est pas nouveau. Sauf que jusqu'à présent il était utilisé pour 2 raisons principales :

  • Faire payer de grosses entreprises
  • Créer un site de phishing

Le premier point n'excuse pas le squat. Les entreprises peuvent d'ailleurs porter l'affaire en justice lorsque la marque a été enregistrée préalablement au nom de domaine. À l'inverse, certaines entreprises ont tenté de s'approprier des noms déjà réservés par des personnes légitimes. Le deuxième point ne l'excuse pas non plus et peut être particulièrement vicieux avec des nom comme faceboook.com ou facebook.co. D'autant plus que depuis 2012, le nombre d'extensions a considérablement été élargi, passant de 21 + 250 extensions régionales à plus de 1 000 ! Avec des extensions plus ou moins farfelues telle que .builders, .buzz, .christmas, .guru, .kim, .ninja, .rich ...

Je pense que cette ouverture a poussé à la création d'un marché dit "secondaire". Il y a même une section dédiée sur le site de GoDaddy. Il devient donc de plus en plus cher pour une entreprise (internationale) de couvrir toutes les possibilités acceptables. Dans ce nouveau marché secondaire, les noms de domaines les plus prisés sont ceux avec une extension courte (et générique), souvent associée à un pays.

Transformer cette mécanique légitime en actif numérique spéculatif est une pratique infecte. Même si le spéculateur arrive, de temps en temps, à écouler un de ses squats, les entités qui gagnent vraiment de l'argent sont les registrars. Comme dans une guerre, les personnes qui s'enrichissent sont celles qui vendent des armes...

Personnellement, je possède plusieurs noms de domaine. Mon registrar favoris était Gandi, mais ils ont, semble-t-il, décidé de se saborder complètement avec d'une part, une diminution des services associés au nom de domaine (adieu le mail) et, d'autre part, une augmentation significative des tarifs. Ainsi, s'enregistrer chez eux (hors .fr) coûte 2 à 3 fois plus cher qu'ailleurs, ce qui est complètement injustifié !

J'ai donc migré tous mes actifs (hors soutade.fr) vers OVH. Le tarif y est correct, l'interface de gestion très moche et les fonctionnalités plus restreintes. Typiquement, on n'a pas une totale liberté quant aux entrées DNS. Particulièrement pour créer les entrées DNS inverse (PTR), qui ne sont disponibles que quand on loue un serveur... Résultat, j'ai dû monter mon propre serveur DNS pour Drycat afin de ne pas être filtré par les clients mails (notamment gmail qui impose une entrée PTR). Le problème est qu'un serveur DNS non officiel peut être considéré comme n'étant pas de confiance par beaucoup d'acteurs... Bref, tout le monde essaie de trouver des sous de tous les côtés.

How to do polymorphism in C ?

Thursday, 31 October 2024
|
Écrit par
Grégory Soutadé

At work, I had to write a code architecture with types polymorphism in C language. The idea is very basic : one header with common functions and multiple backend implementations. At compile time, we decide which kind of implementation is taken. This can be achieved in a very elegant way using a not so much known C feature : forward definition.

First, a quick recap :

here is a declaration of a function (usually in a header):

int my_func(void); 

Here is a definition of a function (usually in a .c file):

int my_func(void) { return 4; }

This is the same for structures.

Good solution

When compiling, compiler checks that types match declaration, but it needs definition only when object is handled. So, we can create an opaque structure (lets say struct my_struct_s) that can have multiple implementations using its pointer version:

public_header.h

#ifndef _PUBLIC_HEADER_H_
#define _PUBLIC_HEADER_H_

/* Opaque type "my_struct_s" */
struct my_struct_s;
typedef struct my_struct_s* my_struct_t;

my_struct_t init(void);
void do_something(my_struct_t param);
void print_my_struct_t(my_struct_t param);
void delete(my_struct_t param);

my_struct_t init2(void);
void do_something2(my_struct_t param);
void print_my_struct_t2(my_struct_t param);
void delete2(my_struct_t param);

#endif

And two private implementations:

private.c

#include "stdlib.h"
#include "stdio.h"

#include "public_header.h"

/* Private implementation */
struct my_struct_s
{
    int member_i;
};

my_struct_t init(void)
{
    my_struct_t res;

    res = malloc(sizeof(*res));
    res->member_i = 0;

    return res;
}

void do_something(my_struct_t param)
{
    param->member_i++;
}

void print_my_struct_t(my_struct_t param)
{
    printf("I'm an integer with value %d\n",
           param->member_i);
}

void delete(my_struct_t param)
{
    free(param);
}

private2.c

#include "stdlib.h"
#include "stdio.h"

#include "public_header.h"

/* Private implementation */
struct my_struct_s
{
    char member_c;
};

my_struct_t init2(void)
{
    my_struct_t res;

    res = malloc(sizeof(*res));
    res->member_c = 'a';

    return res;
}

void do_something2(my_struct_t param)
{
    param->member_c++;
}

void print_my_struct_t2(my_struct_t param)
{
    printf("I'm a character with value '%c'\n",
           param->member_c);
}

void delete2(my_struct_t param)
{
    free(param);
}

In main.c

#include "public_header.h"

int main()
{
    my_struct_t var;

    var = init();
    do_something(var);
    print_my_struct_t(var);
    delete(var);

    var = init2();
    do_something2(var);
    print_my_struct_t2(var);
    delete2(var);

    return 0;
}

In this example, both implementations are present in output program. But, we can use only one implementation, selected at compile time, and thus have same function names in both private.c and private2.c.

This example works because my_struct_t is a pointer to struct my_struct_s. So, type is checked correctly, and it doesn't care about pointed value unless operation like increment, decrement or dereferencement is done on it. For example, in main.c :

struct my_struct_s var2;

Will generate an error:

error: storage size of ‘var2’ isn’t known

Bad solution

Another solution for pylomorphism is

typedef void* my_struct_t;

But, I do not recommend to write it, because in this case pointer type is not checked, void* is too generic and match all of them. This code compiles without warnings and can lead to type confusion error !

#include "stdio.h"
#include "public_header.h"

typedef void* my_struct_t2;

static void print_string(char* a)
{
    printf("Value of param '%s'\n", a);
}

int main()
{
    my_struct_t2 var;
    var = init();
    do_something(var);

    print_string(var);

    delete(var);

    return 0;
}

NB : In my examples, I use "stdio.h" only because "<" and ">" are removed by code coloration.