1 points par GN⁺ 3 시간 전 | 1 commentaires | Partager sur WhatsApp
  • Dans l’esprit de Software is Joy, la question invite à partager le side project sur lequel vous avez pris le plus de plaisir à travailler jusqu’à présent.

1 commentaires

 
GN⁺ 3 시간 전
Avis sur Lobste.rs
  • mw : les quelque 200 services d’AWS sont construits sur une dizaine de services clés comme EC2, Lambda, S3, DynamoDB, KMS et IAM, mais en dessous il existe d’autres services de base qui ne sont pas exposés à l’extérieur.
    Je suis en train d’implémenter moi-même, avec un minimum de dépendances, des éléments comme la gestion des clés racines et des certificats, un dépôt de configuration pour mapper l’infrastructure de déploiement, la gestion des identités, etc., de façon à ne dépendre de rien et à éviter les dépendances circulaires. Ce qui est amusant aussi, c’est de concevoir le système pour qu’un seul nœud encaisse toute la charge prévue, plutôt que pour un passage à grande échelle.

    • samcat116 : je serais curieux de savoir ce que sont concrètement ces services de base.
    • nick4 : je débute encore en pâtisserie française, mais j’ai pris plaisir à faire un gâteau basque. J’ai utilisé la recette d’un livre, mais https://www.seriouseats.com/gateau-basque-recipe-6823020 a l’air plutôt bien aussi.
  • theisaaczone : j’ai créé en Go une API web de ping pour listes de serveurs qui interroge le nombre de personnes connectées à un serveur Minecraft et le renvoie en JSON. Ce n’est ni très complexe ni très gros techniquement, mais je suis assez fier de le voir traiter sans problème 1 à 2 millions de requêtes par mois.
    Récemment, je l’ai réécrit pour supprimer toutes les dépendances hors bibliothèque standard, et j’aime ce genre de projets au périmètre réduit.

    • dijit : il existe aussi un plugin qui exporte l’état de Minecraft comme cible de collecte Prometheus. C’est le seul plugin que j’utilise sur mon serveur, et il est vraiment pratique.
  • miguno : parmi les roguelikes traditionnels, mon préféré est Sil-Q. Il se distingue par une recréation fidèle de l’univers de Tolkien, des mécaniques de combat et de furtivité soignées, et des parties courtes et intenses de 30 à 60 minutes ; on pourrait le décrire comme un jeu de cambriolage de donjon dans le Premier Âge de la Terre du Milieu, ou comme « Angband: Black Ops ».
    Cette année, j’ai collaboré avec le développeur d’origine, Quirk, et l’artiste du tileset, MicroChasm, pour ressusciter ce projet en sommeil. Nous avons modernisé le code, corrigé trois ans de bugs connus, créé des distributions Win/Mac/Linux, amélioré le gameplay et l’ergonomie, et travaillé sur la documentation et le site web.
    C’était mon premier projet en C, et nettoyer du code vieux jusqu’à 40 ans pour Amiga, NeXT, SGI, DEC Alpha et RISC OS, ainsi que quatre couches graphiques maison différentes, donnait l’impression d’errer dans les mines abandonnées de la Moria. J’ai aussi ajouté quelques tests à une base de code qui n’en avait aucun ; les détails sont ici : https://github.com/sil-quirk/sil-q/releases/tag/v1.5.1-beta1.
    C’est un petit jeu dans un genre de niche, mais la nouvelle bêta a été téléchargée 900 fois, et à une époque saturée de productions de vibe coding vite abandonnées, prendre soin d’un jeu open source à la longue lignée est réconfortant.

  • DustyFuzzy : depuis 2021, je construis un site personnel pour archiver du contenu pour adultes. J’ai implémenté l’import d’URL, les tags, un classement Glicko-2 à partir des résultats de duels entre deux éléments, etc., puis je suis passé de Python à .NET Core.
    Avec près de 70 000 fichiers, je me suis aussi amusé à optimiser du code O(n²) écrit naïvement.

    • icefox : je serais curieux de savoir ce que donne .NET Core sur la durée. J’ai de bons souvenirs de C#/F#, et il me semble qu’on peut assez facilement créer un environnement CLI cohérent même hors Windows, mais Microsoft semble avoir changé plusieurs fois d’orientation et d’outils ces cinq dernières années, donc je ne suis pas très sûr des perspectives à long terme.
  • alterae : j’ai créé un outil en ligne de commande qui choisit un élément au hasard dans une liste, et je l’utilise étonnamment souvent. Sa page de manuel est plus longue que le code source, et j’ai vraiment pris plaisir à l’écrire.

    • bitshift : je serais curieux de savoir comment tu l’utilises. J’emploie souvent shuf -n pour échantillonner de gros fichiers ou listes ; c’est pratique pour se faire une idée approximative de la composition des requérants sans lire tout un journal de requêtes.
  • fazalmajid : j’utilise depuis 2004 un lecteur RSS que j’ai fait moi-même, et cette année, pour apprendre, j’ai réécrit à la main la version Python en Rust. Les contentions de verrous d’écriture SQLite causées par la lenteur du traitement de texte en Python ont disparu, ce qui a entraîné un gros gain de performance.
    La nouvelle version, https://github.com/fazalmajid/rTemboz, n’a pas encore exactement toutes les mêmes fonctionnalités, mais elle en apporte aussi de nouvelles. C’est l’appli que j’utilise le plus, notamment pour lire lobste.rs et filtrer le bruit de la pop culture ; contrôler soi-même la priorité de ses flux au lieu de la déléguer à Facebook, Google ou Apple, c’est préserver sa souveraineté et son indépendance.

  • lcamtuf : ce qui me procure le plus de plaisir, ce n’est pas le logiciel, mais de m’éloigner de l’ordinateur pour fabriquer des objets tangibles. Des projets comme cette horloge à voltmètres et cette calculatrice à afficheurs analogiques en sont des exemples.
    Après plus de 15 ans à écrire sur la sécurité informatique, j’ai lancé à titre expérimental un blog qui ne traite pas du tout de mon travail, avec des billets sur les fondements des mathématiques, des curiosités algorithmiques et l’électronique. Ce qui devait tester s’il était possible de rassembler un lectorat hors du secteur est devenu, à l’ère des LLM, une forme d’art abstrait.

    • colindean : j’ai commencé à cuire du pain avec de la farine, du sel, de la levure et de l’eau, en apprenant les techniques de base. J’ai expérimenté avec les proportions d’ingrédients, les types de farine, et le moment où ajouter les herbes et épices ; jusqu’ici, la meilleure combinaison est romarin et sel à l’ail.
      Plutôt que de lire Modernist Bread, je découvre les secrets par moi-même. J’ai aussi mis des projets logiciels de côté pendant deux ans et rénové moi-même environ 75 % de deux maisons ; j’y ai gagné des compétences pratiques rares chez les techniciens, ainsi qu’un nouveau respect pour les artisans qui répondent aux messages et arrivent à l’heure.
  • op : tout le pixel art de https://oppi.li/art a été créé dans un éditeur de pixel art 1 bit que j’ai écrit moi-même en Rust. Il intègre un Lisp pour la configuration et les scripts ; je l’ai fait uniquement pour moi, afin d’apprendre les algorithmes raster 2D, et je ne l’ai pas publié.
    Travailler sans échéance ni objectif fixe rend le projet beaucoup plus amusant.

  • ombredog : se concentre sur la compréhension de l’architecture de Servo et du fuzzing en Rust. A aussi créé une démonstration de remplacement de pointeurs de fonction avec dyld sur macOS, et prévoit de publier un code de preuve de concept montrant comment une fonction malveillante est empaquetée et comment la retrouver à l’exécution
    C’est encore à un stade précoce et son attention est souvent détournée par des fuzzers prêts à l’emploi, comme le build Fuzzilli de Ladybird, mais cela lui a donné envie d’écrire du langage système. Prévoit aussi de créer en Zig un CLI pour télécharger des outils et de le publier sur noblenote, sur Codeberg

  • luhker : a implémenté de façon inutilement sophistiquée, à base de Web Components, un pad de samples, séquenceur et chaîne d’effets pour jouer sur le site du groupe des extraits que personne n’a envie d’entendre. Le CSS est un peu cassé, mais on peut voir le balisage déclaratif de la chaîne d’effets : https://strahlenkeller.de/endlager/

  • zknd : développe un framework basé sur la génération de code pour offrir une productivité de niveau framework tout en conservant les idiomes de Go. Trouve satisfaisant de voir plusieurs idées s’imbriquer en un logiciel cohérent
    Développe aussi en Rust le firmware d’une liseuse

  • krig : a migré Gram de crates cocoa/objc abandonnées vers objc2. Il a fallu des mois, avec beaucoup de lecture de documentation et plusieurs échecs pour comprendre les patterns d’utilisation des nouvelles abstractions, mais cela a aussi permis d’unifier les couches de rendu et de texte sur Mac et Linux avec wgpu et cosmic-text
    Liens associés : https://gram-editor.com, https://docs.rs/objc2/latest/objc2/, https://wgpu.rs/ et https://github.com/pop-os/cosmic-text

  • z3bra : le projet le plus amusant a été cyber hunt. C’est un défi de chasse au trésor où l’on résout, sous des contraintes étranges, des problèmes qu’on ne rencontrerait jamais dans la vraie vie, en créant divers outils, configurations et bouts de code
    Cela inclut le calcul de hashes Argon2id de 5 Gio, la création d’un jeu Game Boy, la gestion statique de cookies sécurisés uniquement avec relayd(8), ou encore un proxy VPN utilisant un nouveau mode d’authentification de ssh(1). C’est son plus gros projet, qui a demandé un an de préparation ; le premier chapitre peut se tester uniquement via le Web en environ 20 minutes, puis la difficulté augmente progressivement

  • jbert : en voulant écrire une machine à registres comme cible de compilation simple, le projet est devenu un émulateur Z80, puis a évolué en émulateur ZX Spectrum. Il a exécuté du code de vérification et plusieurs jeux des années 1980 ; la conception s’est révélée étonnamment simple et amusante : GitHub

  • marx314 : fait tourner sur un serveur domestique Raspberry Pi 4 Pi-hole, Domoticz, Immich self hosted photo gallery, SmokePing, http2sonos, Mealie, WireGuard, Tor, etc.
    Il a aussi un conteneur PHP/nginx pour d’anciens appareils Web, une Kindle affichant la météo et les informations Airthings Wave, un vieil iPad pour les recettes, ainsi que des scripts SMS pour les alertes importantes et Signal pour les autres notifications. Quand le travail en entreprise devient politique, c’est comme une méditation qui le reconnecte aux problèmes techniques

    • tclancy : exploite quelque chose de similaire et se demande pourquoi avoir choisi Domoticz. Home Assistant était frustrant : il fallait configurer des variables YAML mal documentées sans vraiment écrire de code, puis espérer que le format ne soit pas abîmé lors de l’enregistrement
  • aspizu : son projet le plus gros et le plus populaire est un langage de programmation qui compile vers des blocs Scratch, écrit en Rust : https://github.com/aspizu/goboscript
    Il l’a développé et maintenu pendant des années, avec une migration de Python vers Rust. Cela permet de créer dans Scratch des projets techniquement impressionnants, comme des moteurs physiques et du lancer de rayons

  • jjude : presque tous les side projects sont amusants, mais l’essentiel est de savoir combien de temps on garde la passion. La plupart se sont arrêtés au bout d’environ 6 mois, et le plus durable est son blog non rentable https://jjude.com ; il a beaucoup appris en écrivant
    Cette année, il a développé SophAI https://www.sophai.app/radars en apprenant à construire avec l’IA. Le projet relie des ressources de plusieurs domaines et les synthétise par écrit ; en affinant sans cesse de petites fonctionnalités et les sources, il apprend les outils d’IA et les méthodes de développement tout en satisfaisant sa curiosité

  • hwj : a écrit en assembleur le firmware de la montre eZ430 Chronos, et développe en OCaml un compilateur Forth. La conception de son propre langage de programmation est actuellement en pause

  • einacio : écrit en PHP un serveur SMTP pour remplacer Postfix sur son serveur, et prend plaisir à travailler dessus car le protocole est accessible. Il diffuse le développement en direct, apprend aussi Twitch, et prévoit de créer plus tard un bot

  • spc476 : avec Lua et LPeg, parse des expressions, gère la priorité des opérateurs avec le Shunting Yard algorithm, puis génère du code pour CPU 8 bits 6809
    A aussi appliqué une optimisation simple qui évalue à la compilation les deux côtés d’une expression lorsqu’ils sont des littéraux, et utilise également my own 6809 assembler, développé avec plaisir pendant des années

  • heavyrain266 : apprend à contribuer à un projet dont beaucoup de gens dépendent, comme le compilateur Odin. A commencé par de petites modifications ajoutant des fonctionnalités DirectX et du support Win32 io_uring, puis est passé à des tâches moins spectaculaires comme la suppression de deux plateformes cibles non maintenues et l’amélioration de la détection de l’installation LLVM sur OpenBSD
    Souhaite rendre la maintenance plus facile pour les dix prochaines années. À l’inverse, ces huit dernières années, chaque tentative de contribution significative à la chaîne d’outils Rust s’est heurtée à des barrières de type entreprise : RFC, bots de tri, revues, plateformes cibles par niveaux, conflits de fusion fréquents, etc.

  • pcaisse : de loin le projet le plus satisfaisant a été la carte des langues des États-Unis https://languagemap.us/. J’ai passé beaucoup trop de temps sur le nettoyage des données, les scripts Bash, l’ajustement de l’apparence de la carte et l’automatisation de l’exploitation, mais je suis très satisfait du résultat
    Il ne nécessite aucune maintenance et les coûts AWS sont inférieurs à 1 dollar par mois

  • LesleyLai : mon préféré est toujours le projet sur lequel je travaille actuellement, et en ce moment c’est un renderer Vulkan. Il vise une structure modulaire afin de pouvoir lancer facilement de nouvelles expérimentations graphiques à partir de la même base de code

  • Jan200101 : en créant un programme pour remplacer h5ai, qui n’est plus maintenu, j’ai aussi appris comment implémenter FastCGI. C’était à la fois amusant et pénible, et cela m’a permis de comprendre en profondeur le fonctionnement du Web

  • mariusor : j’ai créé en C un daemon utilisateur d’audio scrobbling pour les lecteurs MPRIS. C’est un petit projet que j’utilise depuis longtemps, qui enregistre l’historique d’écoute sur ListenBrainz, Last.fm et Libre.fm

  • zanlib : comme j’aime réimplémenter Lisp, j’ai créé evalexpr en JavaScript, lispex en Elixir, et isolisp, un Lisp full-stack basé sur des formulaires en JS. C’est un travail simple qui peut se faire en une demi-journée, mais qui donne un grand sentiment d’accomplissement

  • shrike : j’ai créé un enrichisseur de flux RSS qui ajoute aux flux RSS médiocres des données Open Graph, le nombre de recommandations et de commentaires, ainsi que le contenu complet des articles tronqués, puis j’importe le résultat dans FreshRSS au format OPML
    L’autre projet est un client IRC personnalisé en architecture client-serveur. La majeure partie du traitement est assurée par un serveur unique faisant autorité, auquel se connectent des clients Web, TUI et SwiftUI

  • pepesza : implémenter de zéro en Erlang une bibliothèque de cryptographie sur courbes elliptiques a été très amusant. Ensuite, en allant jusqu’aux engagements KZG, la complexité a explosé

  • banna : j’ai créé une architecture de jeu d’instructions jouet et écrit un billet à ce sujet, et mon travail le plus récent se trouve sur branch. Je réécris une partie du C en Zig et je réfléchis à la manière de visualiser les déplacements de données à l’intérieur de la machine virtuelle
    Avec TISC, j’explore le minimalisme mécanique. Je réfléchis à la façon dont chaque changement serait implémenté dans une vraie machine, et j’abandonne s’il y a trop de pièces mobiles ou si la complexité est simplement repoussée vers une autre couche d’abstraction. Pour l’instant, ce qui est le plus amusant, c’est que cela ressemble davantage à une expérience de pensée qu’à une implémentation

  • ramones : j’ai commencé à créer un petit moteur d’échecs en Rust, et ce qui m’a plu, c’est qu’quelle que soit la direction prise, il y avait quelque chose à apprendre. Les choix sont infinis : des spécifications comme PGN et FEN, les algorithmes du wiki des moteurs d’échecs, diverses structures de données dont les bit flags, etc.

  • icefox : j’ai eu beaucoup de plaisir à créer un simulateur physique à n corps avec raylib, puis à le migrer vers la bibliothèque GPU de SDL3. Très vite, le projet s’est davantage centré sur les expérimentations de moteur graphique et de shaders que sur la physique, mais c’est resté amusant
    Par hasard, j’ai aussi écrit pendant un mois une fanfiction de Katalepsis. Sans avoir à me soucier des aspects ennuyeux comme l’univers ou l’évolution des personnages, il a suffi de mettre trois personnages et une mauvaise idée dans une pièce pour retrouver le plaisir d’écrire de la fiction

  • kghose : le travail sur https://github.com/kghose/moulick est celui dont je me souviens le mieux. J’ai apprécié les contraintes de la programmation embarquée et la joie de voir fonctionner réellement un petit appareil que l’on peut tenir dans la main
    Mon prochain projet rêvé serait un appareil LLM embarqué ; après tout, combien de personnes n’ont pas rêvé dans leur enfance d’un robot compagnon ?

  • brn : les projets les plus satisfaisants sont https://bewcloud.com et https://uruky.com, que ma famille et moi utilisons encore tous les jours. Uruky est un projet relativement récent, tandis que Expenses de bewCloud est l’évolution d’une lignée d’applications de gestion des dépenses que je développe et publie depuis 2008

  • 3digitdev : j’ai créé un petit outil CLI de conversion qui prend le contenu du presse-papiers et effectue notamment le nettoyage de JSON, la conversion entre JSON, TOML et YAML, la suppression des horodatages et emojis dans les messages copiés depuis Slack ou Discord, ainsi que des conversions Base64
    Je l’ai écrit il y a quelques années et il fonctionne encore presque tous les jours sans problème, ce qui me fait plaisir à chaque utilisation. Une web app d’affinités de types et de composition d’équipe créée quand j’étais à fond dans Pokémon Sword/Shield reste aussi un projet agréable auquel je reviens régulièrement

  • fbegyn : difficile d’en choisir un, mais j’aime les projets qui résolvent de vrais problèmes. Il y a l’impression 3D pour un support de panneau solaire destiné à une ampoule, la cuisine, le travail du bois rendu frustrant par le manque d’espace, tc_exporter, le seul logiciel que j’ai avec de vrais utilisateurs, et la liste continue de s’allonger

  • motet-a : j’ai créé une web app permettant à des musiciens de téléverser et de partager des enregistrements de répétition. C’est un service de niche, proche d’un YouTube réservé à l’audio et uniquement privé ; il compte quelques dizaines d’utilisateurs, mais progresse régulièrement