Skip to content

Instantly share code, notes, and snippets.

@leye0
leye0 / gist:de3a747f17318338aa3d2466a7150f2a
Created September 6, 2025 15:41
Atomisme et bottom up dans l’intelligence générative avec un LLM (2023)
Puisque le contexte de travail est toujours limité lorsqu’on travaille avec un LLM, il est difficile de construire un projet complexe puis de fignoler les détails tout en gardant en contexte l’ensemble du système.
Il est nécessaire d’enchaîner les prompts en procédant avec une sorte de tree-shaking de tout ce qui est une piste vers un détail parallèle qui ne nous intéresse pas.
Dans la perspective de laisser la machine créer complètement un projet, on pourrait imaginer qu’une des premières étapes qu’effectuerait un bot serait de se questionner sur ce que sont les éléments qui hiérarchiquement peuvent constituer le projet final, en partant d’une sorte d’atome.
Exemple: Nous créons un site web. Le site est fait de pages, qui contiennent des sections, qui contiennent des widgets, qui sont constituées d’éléments plus basiques, i.e. des HTMLElement, lesquels peuvent avoir un style ou un thème, et peuvent recevoir ou émettre des valeurs selon un principe de binding et d’émission.
Pour respecter l’idée de tree-s
@leye0
leye0 / gist:75ee47c123876cfc7607bf2fe82ce3e1
Last active September 6, 2025 15:40
Approche "API" dans la génération automatique d'applications
Une des approches efficace pour la génération automatique d'applications est l'approche atomique,
où tout en maintenant un code avec les fonctions le plus pures, on s'assure de faire générer à l'AI les éléments
du plus élémentaire au plus complexe. J'ai écrit un Google Docs quelque part sur le sujet il y a
deux ans.
En plus de l'approche atomique, une autre approche permet d'alléger le poids du code dans le contexte et de simplifier
sa compréhension par le LLM: l'approche par API. L'idée est de percevoir notre code, peu importe la nature du produit ou l'envergure,
comme un ensemble de APIs. Le but est de voir les différents modules de notre app comme des microservices, quitte même à avoir
du code inutile. On peut laisser au AI la liberté de générer le module comme il veut, tant qu'il répond aux besoins.
On demande ensuite au API de documenter au maximum cet API, de sorte qu'au final, nous pouvons ajouter le "API" documenté au contexte
@leye0
leye0 / gist:6f4cc9d2d9e0930f9e051f187b6dd38a
Created September 15, 2022 15:39
git logging cheat sheet
# Get commit# for tag
git rev-list -n 1 tags/${myTag}
# Get branches containing commit#
git branch -a --contains ${myCommit}
@leye0
leye0 / is-contained-within.directive.ts
Last active December 11, 2019 17:39
Angular - Directive - Add a class to an element if the element is contained within an element specified by a selector
import { Directive, Input, OnChanges, SimpleChanges, ElementRef } from '@angular/core';
@Directive({
selector: '[isContainedWithin]'
})
export class IsContainedWithinDirective implements OnChanges {
@Input() isContainedWithin: string = '';
@Input() classToAdd: string = '';

Note: Un des objectifs de cette approche est de faciliter l'intégration éventuelle de ngrx/store, en plus de favoriser la modification des données à l'intérieur des services, de centraliser le data à l'intérieur d'un "data store" - et rendre stateless les services - et finalement de simplifier les components en maximisant leur passivité. La version ci-dessous n'implémente pas encore le concept de data store et d'action.

Structure du code

MyPotatoService.ts:

export class MyPotatoService {

    potatos$: BehaviorSubject<PotatoApiModel[]> = new BehaviorSubject<Potato>(null);
@leye0
leye0 / gist:5cb118fa6821ab81122864ac8e57d0e1
Created December 11, 2018 14:48
xlf-translate.js - Support ng-bootstrap i18n entry id format
#!/usr/bin/env node
'use strict';
// Based on
// Fix on https://github.com/tsvetomir/xlf-translate to...
// -> support ID fields directly on a trans-unit 'id' attribute instead of trans-unit.node.meaning (ex: ng-bootstrap i18n)
// -> support description generated from id and source instead of missing trans-unit.node.description
// See: https://github.com/tsvetomir/xlf-translate/issues/9
const jp = require('jsonpath');
@leye0
leye0 / xlf-extract.js
Created December 11, 2018 14:47
xlf-extract.js - Support ng-bootstrap i18n entry id format
#!/usr/bin/env node
'use strict';
// Fix on https://github.com/tsvetomir/xlf-extract to...
// -> support ID fields directly on a trans-unit 'id' attribute instead of trans-unit.node.meaning (ex: ng-bootstrap i18n)
// -> support description generated from id and source instead of missing trans-unit.node.description
// See: https://github.com/tsvetomir/xlf-extract/issues/5
const fs = require('fs');
const cheerio = require('cheerio');
@leye0
leye0 / sugg.directive.ts
Created December 4, 2018 15:31
Some select / dropdown / autocomplete / nameit directive (almost) clear of useless options
// Disclaimer: Use bootstrap 4 classes
import { Directive, Input, OnInit, ElementRef, Output, EventEmitter, SimpleChanges, OnChanges, HostListener } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { debounceTime, filter } from 'rxjs/operators';
const key_arrow_up = 38;
const key_arrow_down = 40;
const key_enter = 13;
@Directive({
@leye0
leye0 / add-missing-translations.js
Created November 27, 2018 18:31
Merge YAML source translation into destination translation and only add missing entries
// Little script to add missing source translation into destination translation file so it is easier to maintain
// Usage:
// add-missing-translations src=en dest=fr
const fs = require('fs');
const YAML = require('yaml');
function toKeyValues(args) {
return args.map(arg => arg.split('='))
Here’s a simple example of what I’m saying:
```
<style>
.div1 {
overflow-x: hidden;
overflow-y: scroll;
height: 100px;
width: 20px;
}