L’auteur, insatisfait par la dégradation des résultats des moteurs de recherche actuels (spam SEO, manque de pertinence), a relevé le défi de construire son propre moteur de recherche en deux mois, en s’appuyant sur des modèles d’embeddings neuronaux (comme SBERT) pour comprendre le sens des requêtes plutôt que de se limiter à la correspondance de mots-clés. Le projet a impliqué la génération de 3 milliards d’embeddings à l’aide d’un cluster de 200 GPU, l’indexation de 280 millions de pages web, et une architecture distribuée combinant RocksDB et HNSW pour gérer 4 To de RAM et 82 To de stockage SSD, avec un temps de réponse moyen de 500 ms. L’approche innovante inclut une normalisation poussée du HTML, un découpage sémantique des pages pour préserver le contexte, et un crawler optimisé pour éviter les limitations de débit. Le moteur permet de répondre à des requêtes complexes et nuancées, même formulées en langage naturel, en identifiant des réponses précises et pertinentes, y compris dans des contenus obscurs ou peu accessibles. Le billet détaille chaque étape : preuve de concept, normalisation des données, chunking intelligent, optimisation des performances, et déploiement d’un graphe de connaissances. Un demo en ligne est disponible pour tester le résultat.
Forward Proxy vs Reverse Proxy : Le forward proxy agit comme un intermédiaire entre le client et internet, filtrant les requêtes (ex : contrôle d’accès, cache, anonymat) et nécessitant une configuration côté client, tandis que le reverse proxy se place entre internet et le serveur, protégeant ce dernier (ex : équilibrage de charge, sécurité, TLS termination, cache) et masquant son adresse IP. Le premier est utile pour gérer les requêtes sortantes (ex : réseaux d’entreprise), le second pour optimiser et sécuriser les requêtes entrantes (ex : sites web à fort trafic). En résumé, le forward proxy sert le client, le reverse proxy sert le serveur.
L’article présente l’intégration d’un serveur MCP (Model Context Protocol) dans une application Laravel à l’aide du package opgginc/laravel-mcp-server. Le MCP, introduit par Anthropic fin 2024, permet aux assistants IA d’accéder à des données fraîches et pertinentes, évitant ainsi les limites des données obsolètes ou incomplètes. Le package facilite cette intégration via HTTP, propose des outils prêts à l’emploi (comme un "Hello World" ou la vérification de la version Laravel), et permet de créer ses propres outils MCP pour enrichir les réponses des agents IA. L’installation est simple (via Composer), la configuration flexible (domaines, middlewares, JSON-RPC 2.0), et l’interaction avec des modèles locaux (comme LM Studio) est détaillée. Idéal pour dynamiser les échanges avec une IA tout en gardant le contrôle sur les données exposées.
L'auteur raconte son parcours à travers une multitude d’applications de todo (Notion, Todoist, Things 3, Trello, OmniFocus, etc.), qu’il a toutes abandonnées pour revenir à un simple fichier texte, todo.txt
. Après des années à perdre du temps à configurer et gérer des outils complexes, il a réalisé que la simplicité d’un fichier texte—accessible, instantané, intemporel et sans dépendance—lui permettait d’être bien plus productif. Son système repose sur une liste datée, mise à jour quotidiennement, où tâches, notes et résultats cohabitent, transformant son todo en un journal de bord. Sans fonctionnalités superflues, sans abonnement, et toujours disponible, cette méthode lui a prouvé qu’une solution basique, mais utilisée régulièrement, surpasse tous les outils sophistiqués. Une leçon : la productivité tient moins à l’outil qu’à l’action.
PHP 8.4 et Doctrine 3.4 révolutionnent la gestion des propriétés avec les Property Hooks : fini les centaines de lignes de getters/setters ! Désormais, il est possible d’intégrer directement la logique d’accès et de modification dans la déclaration des propriétés, réduisant drastiquement le code boilerplate (jusqu’à -60%). Par exemple, au lieu d’écrire des méthodes getName()
et setName()
, on utilise une syntaxe élégante comme public string $name { get => strtoupper($this->name); set => $this->name = trim($value); }
. Doctrine 3.4 supporte officiellement cette fonctionnalité, simplifiant ainsi les entités et améliorant la lisibilité. La migration, bien que bénéfique (moins de code, meilleure maintenance), demande une adaptation du code existant et des tests rigoureux. Une avancée majeure pour le PHP moderne, même si certains outils ou habitudes mettent du temps à s’adapter.
L'auteur analyse et améliore la section "hero" du site Time.com, critiquant notamment le passage trop précoce à un affichage mobile (1 colonne) qui gaspille l’espace disponible sur les écrans intermédiaires. Il propose une approche plus flexible et progressive, en utilisant des techniques CSS modernes : CSS Grid, container queries, display: contents, style queries, grid areas, et le sélecteur :has()
pour créer un layout adaptatif et dynamique. L’objectif est de laisser le contenu guider la mise en page, avec des transitions fluides entre 1, 2 et 3 colonnes, tout en optimisant l’espace et la lisibilité. L’article illustre aussi l’utilisation des query units (cqw
) pour des tailles de police fluides et des astuces comme text-wrap: pretty
pour équilibrer les titres. Une démonstration concrète de comment construire des layouts robustes et modulaires avec du CSS avancé.
Le comic explique que beaucoup de programmes (comme git
ou man
) utilisent l’outil less
pour afficher du texte long, sans toujours le préciser. less
permet de naviguer dans un texte page par page : on le reconnaît à son interface plein écran et au deux-points en bas à gauche. Pour en sortir, tapez q
; pour chercher un mot, utilisez /mot
puis n
ou N
pour naviguer entre les résultats. On peut aussi scroller avec les flèches ou la molette, et g
ou G
pour aller en début/fin de fichier. Enfin, pour éviter less
, on peut modifier la variable d’environnement PAGER
. Un rappel utile et visuel pour mieux maîtriser le terminal !
L'article explique comment Apache Iceberg offre une solution robuste pour la gestion des données volumineuses, avec des capacités ACID complètes, une évolution de schéma flexible et des performances optimisées. Son intégration native avec l'écosystème AWS, incluant des services comme Amazon Data Firehose pour l'ingestion de données en temps réel, en fait un choix idéal pour les architectures de données modernes de type Lakehouse nécessitant fiabilité, scalabilité et performance. L'article explore également l'utilisation de Spark (PySpark) pour manipuler des données et exploiter les capacités d'Iceberg, illustrant ainsi son efficacité dans un environnement cloud comme AWS.
L'article explore les mécanismes de la motivation et propose un modèle mental pour mieux la comprendre, résumé par la formule : Motivation = Valeur × Probabilité × Retour sur Effort / Distance. Il explique que la motivation dépend de la valeur que nous accordons à un objectif, de la probabilité de réussite, de l'effort nécessaire pour atteindre cet objectif, et de la distance psychologique par rapport à celui-ci. L'article suggère des stratégies pour augmenter la motivation, comme augmenter la valeur perçue d'un objectif, améliorer la probabilité de succès, maximiser le retour sur effort, et réduire la distance psychologique. Il aborde également des problèmes courants tels que le manque de buts clairs, la faible estime de soi, la procrastination et la distractibilité, et propose des solutions pour les surmonter. Enfin, il discute de conseils motivationnels apparemment contradictoires et explique comment les réconcilier en fonction de différentes situations.
OpenFreeMap est une solution open-source d'hébergement de cartes qui permet d'afficher des cartes personnalisées sur des sites web et des applications gratuitement. Développé à partir de l'infrastructure de MapHub, OpenFreeMap utilise des serveurs dédiés pour fournir des services de cartographie sans dépendre du cloud. Il offre une intégration facile avec des styles de cartes personnalisables et est conçu pour être simple à utiliser, avec des guides rapides pour aider à l'intégration. OpenFreeMap est particulièrement utile pour les développeurs cherchant une alternative économique et flexible aux services de cartographie traditionnels.
L'article soutient que les fonctionnalités modernes du CSS, telles que l'API View Transitions et les Speculation Rules, ont éliminé les principaux avantages des Single Page Applications (SPAs). Ces innovations permettent des transitions fluides entre les pages, une navigation instantanée et de meilleures performances sans la complexité et la surcharge de JavaScript associées aux SPAs. Alderson argue que les navigateurs modernes peuvent désormais gérer des expériences riches et fluides de manière native, rendant obsolètes les SPAs pour la plupart des sites web. Il encourage les développeurs à utiliser le rendu côté serveur, des pages réelles, des animations CSS et à réduire l'usage de JavaScript pour construire des sites web plus performants et maintenables.
Biome est présenté comme un outil révolutionnaire pour les développeurs front-end, remplaçant efficacement ESLint et Prettier. Il combine les fonctionnalités d'un formatter, d'un linter, et d'un analyseur statique en un seul binaire, offrant une solution plus rapide et moins complexe. Biome simplifie la configuration, réduit le besoin de multiples outils, et améliore la cohérence du code. Il est particulièrement apprécié pour sa rapidité et sa facilité d'intégration, notamment dans des projets Symfony via le bundle kocal/biome-js-bundle. Bien qu'il ne couvre pas 100% des cas d'utilisation d'ESLint, il est efficace dans 90% des situations courantes. Biome impose également des conventions strictes pour des pratiques de codage cohérentes, comme l'utilisation de points-virgules et de virgules finales. En résumé, Biome est une solution tout-en-un qui simplifie le développement et améliore la productivité.
L'article explore comment concevoir des citations en bloc et des citations extraites pour refléter l'identité visuelle d'une marque et aider à raconter son histoire. L'auteur explique comment styliser l'élément HTML blockquote
en utilisant des bordures, des guillemets décoratifs, des formes personnalisées et d'autres propriétés inattendues. Des exemples interactifs montrent comment des bordures simples, des guillemets stylisés et des formes variées peuvent transformer des citations en éléments de design expressifs et distinctifs, renforçant ainsi la personnalité et la voix d'une marque.
Le lien explique les redirections de terminal à travers des exemples de commandes. Il montre comment rediriger la sortie d'une commande vers un fichier avec >
, ajouter à un fichier avec >>
, envoyer un fichier en entrée avec <
, et gérer les erreurs avec 2>
. Il aborde aussi les pièges courants, comme la suppression accidentelle de fichiers et les problèmes de permissions avec sudo
. Enfin, il compare l'utilisation de cat
et <
pour les entrées, et mentionne des raccourcis comme &>
pour rediriger à la fois la sortie standard et les erreurs.
Le lien explique le rôle du shell dans le terminal, qui est essentiel pour démarrer des programmes. Il présente les trois shells les plus populaires : bash, le shell par défaut sur Linux ; zsh, le shell par défaut sur Mac depuis 2025 ; et fish, connu pour être plus convivial. Le zine mentionne également que bash et zsh sont des "POSIX shells", suivant un standard pour les shells Unix, bien qu'il existe des différences entre eux. Il fournit des informations sur l'emplacement des fichiers de configuration pour chaque shell : ~/.bashrc
ou ~/.bash_profile
pour bash, ~/.zshrc
pour zsh, et ~/.config/fish/config.fish
pour fish. Enfin, il offre un conseil pour déterminer quel fichier de configuration bash utilise.
La page explique comment gérer plusieurs programmes, ou "jobs", dans un même onglet de terminal. Les programmes peuvent s'exécuter au premier plan, en arrière-plan ou être arrêtés (mis en pause). En utilisant &
, un programme peut être exécuté en arrière-plan, ce qui est utile pour des tâches parallèles comme la conversion de fichiers. La commande jobs
permet de lister les tâches en arrière-plan ou arrêtées, et vous pouvez les manipuler en les ramenant au premier plan avec fg
, en les tuant avec kill
, ou en les détachant avec disown
. Lorsque vous fermez un onglet de terminal, toutes les tâches sont tuées par un signal SIGHUP
, mais cela peut être évité avec disown
ou nohup
. Un conseil est donné pour tuer les programmes récalcitrants : utilisez Ctrl+Z
pour les arrêter, puis kill
pour les terminer
Le lien explique le rôle d'un émulateur de terminal, qui consiste principalement à convertir les actions de l'utilisateur (comme la frappe et le clic) en octets pour les envoyer, et à recevoir des octets pour les afficher visuellement. Il aborde brièvement l'histoire des terminaux, mentionnant qu'ils étaient autrefois des machines distinctes dans les années 80, et explique que les octets échangés peuvent être du texte, des codes d'échappement pour les couleurs, ou des caractères de contrôle. L'émulateur de terminal gère également des fonctions comme le copier-coller et la gestion des couleurs et des polices, offrant souvent une bibliothèque de thèmes pour personnaliser l'apparence. Enfin, il mentionne comment les combinaisons de touches comme Ctrl-X
sont traduites en octets.
La page explique comment les émulateurs de terminal utilisent 16 couleurs configurables, connues sous le nom de "couleurs ANSI". Ces couleurs peuvent être personnalisées via les paramètres de l'émulateur de terminal ou en exécutant un script qui utilise des codes d'échappement. Les programmes peuvent utiliser ces couleurs en imprimant des codes d'échappement spécifiques, comme illustré par l'exemple echo -e "\033[34m blue text"
. Cependant, les couleurs ANSI par défaut souffrent souvent de problèmes de contraste, rendant le texte difficile à lire. La solution recommandée est d'utiliser un émulateur de terminal avec une fonctionnalité de "contraste minimum", comme iTerm ou Kitty, pour améliorer la lisibilité. De plus, les programmes désactivent généralement les couleurs lorsqu'ils écrivent dans un pipe pour éviter les problèmes d'affichage.
Le lien explique comment les clics de souris dans un terminal peuvent être gérés soit par l'émulateur de terminal, soit par le programme en cours d'exécution. L'émulateur de terminal est utile pour des actions comme copier du texte, tandis que certains programmes, comme tmux ou vim, peuvent prendre le contrôle de la souris pour des fonctionnalités spécifiques, comme redimensionner des panneaux ou naviguer dans des menus. Ce processus, appelé "mouse reporting", permet aux programmes de recevoir des codes d'échappement pour localiser les clics de souris. L'article mentionne également des astuces pour forcer l'émulateur de terminal à reprendre le contrôle de la souris et discute du comportement de la molette de défilement dans différents programmes.
La page explique que différents émulateurs de terminal utilisent divers codes d'échappement pour effectuer des actions comme effacer l'écran. Les systèmes disposent d'une base de données appelée "terminfo" qui contient ces codes d'échappement, permettant aux programmes de savoir comment interagir avec le terminal. La variable d'environnement TERM
est utilisée pour identifier le type de terminal, mais cela peut poser problème lors de l'utilisation de SSH avec des systèmes anciens et des émulateurs modernes. Des solutions sont proposées pour résoudre ces problèmes, comme installer le fichier terminfo approprié ou utiliser un émulateur de terminal différent. Autre possibilité : définir TERM=xterm-256color fonctionne assez souvent