Travailler sur des projets personnels est pour moi la forme de programmation la plus épanouissante, ce qui est bien démontré par une multitude de produits open-source et propriétaires réussis. Mon objectif avec ceux-ci est généralement de créer des cool outils utiles, techniquement stimulants et simplement

La plupart de ces outils sont dans les domaines du développement web full-stack, du NLP, ou des CLI, et sont principalement écrits en Python (Flask/vanilla), TypeScript (React/Svelte/Vue), et/ou Golang. Le code source d'une douzaine de projets complets est disponible sur mon Profil GitHub, et j'ai rédigé des descriptions plus détaillées de quelques-uns des meilleurs ci-dessous.

Pour les descriptions des expériences professionnelles et éducatives, voir mon CV.

Crème de la Crème

Lingotrack.com

Mon projet personnel d'octobre 22 à novembre 23, Lingotrack (50k+ SLOC, Golang + TypeScript + Svelte) est une plateforme sociale pour les apprenants en langues leur permettant de suivre leurs progrès et de trouver des médias attrayants adaptés à leur niveau. En visualisant les réalisations des apprenants, en leur permettant de découvrir du contenu étranger captivant et en les mettant en relation avec d'autres passionnés, le site espère rendre le chemin vers la maîtrise un peu moins intimidant.

La construction de Lingotrack m'a énormément appris, car j'ai essayé de faire autant que possible à partir de zéro comme expérience d'apprentissage. Cela impliquait tout, de l'intégration de Stripe à la gestion d'une VM Linux dans le cloud en passant par la création d'un CI/CD automatisé, sans oublier une bonne dose de frustration !

Mais le résultat final en a largement valu la peine — il y a près de mille utilisateurs actifs mensuels, plus de 1500 articles médiatiques dans notre base de données collaborative, 4,5 ans d'apprentissage enregistrés, et je reçois du courrier de fans plusieurs fois par semaine !

Vous pouvez en savoir plus sur Lingotrack sur la page officielle À propos ou en consultant son lancement bien accueilli sur Product Hunt.

Locadapt.com

Dans mes vies antérieures, j'ai travaillé comme traducteur, effectué des contrats de développement i18n pour une startup financée à plus de 40 millions de dollars, et vécu en Europe pendant une décennie. Au fil de ces expériences, une chose est devenue parfaitement claire : le processus d'internationalisation (rendre multilingue) d'un site web est très bénéfique, mais aussi déraisonnablement difficile.

Entrez Locadapt (plus de 25 000 lignes de code, TypeScript + React + Svelte + Supabase), une plateforme alimentée par Claude qui rend n'importe quel site multilingue avec deux lignes de code. En ajoutant simplement un extrait JS minifié + le CSS correspondant au head de n'importe quel site, la plateforme peut automatiquement, précisément et à moindre coût traduire n'importe quel site en plusieurs langues. Essayez-le sur cette page — il y a un bouton en bas à droite !

Les réalisations comprennent un tableau de bord de gestion des traductions, un service de proxy inverse pour une optimisation du référencement sur les sous-domaines, une parallélisation avec les Web Workers, un programme d'affiliation sur mesure, des fonctions edge sans serveur, une mise en cache côté client, des réécritures de pseudo-DOM sans navigateur, documentation détaillée, et plus encore.

Actuellement en concurrence avec quelques entreprises YC, et une startup bien financée à SF a essayé de me débaucher, mais je suis optimiste quant au produit et je persévère pour l'instant !

Victoires de Hackathon

ColdCraft.ai

alt alt alt alt

ColdCraft.ai (~10k SLOC, Flask + TypeScript + Svelte) est une extension Chrome de cold emailing SaaS avec un tableau de bord associé qui s'intègre à votre CV, Google Calendar, Gmail et LinkedIn pour vous aider à rédiger des e-mails froids hyperpersonnalisés en quelques secondes. Je l'ai construit avec un ami sur plusieurs semaines au printemps de première année (SP '24).

Le projet a remporté LinkedIn et Ciscoles prix d'entreprise lors du salon annuel d'ingénierie de Cornell, et a reçu plusieurs offres d'investissement et d'acquisition.

NoteHacks

Mes amis à Cornell se moquaient parfois de moi parce que je ne prenais pas de notes en classe. Cependant, j'ai trouvé (et je trouve toujours) que j'apprends mieux en me concentrant pleinement sur le cours en question plutôt qu'en diluant mon attention par une prise de notes frénétique.

Cela dit, les notes sont certainement toujours très utiles pour les devoirs, le renforcement, etc., et j'ai donc fait équipe avec quelques nouveaux amis partageant les mêmes idées à Le plus grand hackathon du Canada pour construire un outil de prise de notes alimenté par l'IA et la CV qui pourrait s'occuper de ce travail fastidieux pour nous. Notre outil alimenté par Next.js, Flask et OpenAI assiste aux cours, écoute et prend des notes résumées en Markdown avec lesquelles vous pouvez interagir et sauvegarder ultérieurement. De plus, des métaparamètres basés sur les gestes tels que le niveau de résumé, la mise en pause et l'expansion / réduction des notes sont également disponibles.

Nos efforts et nos nuits blanches nous ont valu #1/43 pour le Meilleure utilisation de Groq track (une entreprise LLM de premier plan).

Surgelingo

alt

J'ai remporté le prix 'Best Solo Hack' lors d'un hackathon en ligne de 48 heures avec près d'une centaine de participants. Le thème était la perturbation d'une industrie, et ma soumission, un outil d'apprentissage des langues nommé SurgeLingo qui utilisait le NLP et PostgreSQL pour fournir aux apprenants des phrases personnalisées de style Twitter, l'a fait efficacement avec l'industrie de l'apprentissage des langues étrangères.

Vous pouvez voir la soumission au hackathon sur la page Devpost ici, ainsi que une vidéo correspondante et une description plus détaillée. De même, vous pouvez l'exécuter localement en le forkant backend et frontend depuis Github.

FindCircles

alt alt alt alt

Circles (~7k SLOC, Next.js + Supabase + Google Cloud) est une application web pour des rencontres faciles et spontanées au sein de groupes d'amis et pour se connecter avec de nouvelles personnes, inspirée par les expériences de mes trois coéquipiers de projet et moi-même sur l'immense campus de Cornell.

Les utilisateurs peuvent inviter des amis à former des cercles, et grâce à l'intégration de GCal, Circles trouve automatiquement les créneaux libres partagés et suggère des activités. Circles envoie également par e-mail des propositions de rencontres et d'événements chaque lundi ou sur demande. Le logiciel prend également en charge 2 autres fonctionnalités clés :

  1. inviter des amis mutuels qui sont libres, pour encourager à se faire de nouveaux amis
  2. créer des albums photos partagés pour les événements

L'outil a remporté le prix du Meilleur Domaine (findcircles.co) décerné par les juges lors du hackathon Big Red Hacks 2024 de Cornell, et était un favori des juges étudiants (malheureusement, les juges du personnel étaient trop rappelés à leurs Google Calendars professionnels et à la planification 😅).

Projets Personnels Sélectionnés

Tableau de bord d'apprentissage des langues

Une version plus simple et locale de Lingotrack qui a servi d'inspiration pour ladite itération ultérieure.

language-learning-dashboard est une application web esthétique d'apprentissage des langues full-stack que j'ai construite pendant quelques mois lors du confinement COVID-19 en hiver. En tant qu'apprenant sérieux du chinois, je me suis récemment trouvé pas tout à fait satisfait des sites disponibles sur le marché pour suivre ses progrès en langue étrangère — j'ai donc fait la chose logique en en construisant un de zéro pour moi-même !

Le résultat est un tableau de bord minimal mais puissant, offrant une interface rapide comme l'éclair et intuitive pour le suivi des progrès et l'enregistrement du temps, à la minute près. Qu'il s'agisse de téléchargements de fichiers, de visualisations chronologiques alimentées par PostgreSQL, ou même d'un mode sombre élégant, l'outil a tout. Mais par souci de concision, je n'entrerai pas dans tous les (nombreux !) détails ici car j'ai rédigé une documentation détaillée ailleurs en ligne et j'ai écrit mes expériences de son utilisation pendant trois mois sur mon blog.

Agenda de Vie en Ligne

Online Life Calendar est un planificateur de vie, une liste de tâches et une application de responsabilisation, le tout réuni en un seul outil. Construit avec Python, Flask, Jinja et une touche de JavaScript, l'outil offre une interface élégante et réactive pour suivre votre vie.

alt

Fonctionnalités

  • Visualisez votre vie de quelques jours à plusieurs décennies
  • Codez en couleur les étapes de votre vie en fonction des événements
  • Remplissez les moments de votre vie avec du texte et des images
  • Définissez des objectifs spécifiques pour vous-même sous forme de cartes simples
  • Consultez des statistiques détaillées sur votre vie et téléchargez votre propre calendrier de vie

...et bien plus encore ! Online Life Calendar est totalement gratuit, compte plusieurs centaines d'utilisateurs au moment de la rédaction, et s'est personnellement avéré être une excellente ressource pour l'auto-motivation et la planification. Son code source peut être trouvé ici.

Mise à jour : le site a été fermé pour des raisons financières, mais le code source est toujours disponible sur GitHub.

Statistiques linguistiques

J'ai une obsession malsaine pour les visualisations et les statistiques, et language-statistics le démontre bien. Il affiche une barre de couleur semblable à celle d'un dépôt GitHub pour votre répertoire directement depuis la ligne de commande, qui peut être visualisée comme une image PNG ou SVG.

J'ai toujours été plutôt agacé par le fait que la barre de langages GitHub soit limitée à GitHub, car les détails qu'elle offre sont assez révélateurs. J'ai donc décidé de la recréer sous forme de package Python. Maintenant, avec mon programme, vous pouvez simplement exécuter statistics depuis n'importe où dans votre terminal et voir une belle barre de couleurs, comme celle vue ci-dessus - et le meilleur de tout, une barre hautement personnalisable.

Voici quelques fonctionnalités supplémentaires qui lui donnent un avantage par rapport à celle de GitHub linguist:

  • choisir d'exclure certains types de fichiers
  • spécifier la profondeur à laquelle le programme recherche à partir du répertoire racine
  • contrôler l'apparence de votre image exportée
  • choisir la limite à laquelle les fichiers se fondent Other
  • décider des couleurs utilisées et du nombre maximum de types de fichiers

Il prend même en charge les fichiers nommés, tels que Dockerfile ou Cakefile. Vous pouvez en savoir plus en lisant le README.md à le dépôt, ou en le téléchargeant vous-même.

Linguakite

alt alt alt

LinguaKite est une application personnalisée d'apprentissage de l'anglais que j'ai créée pendant l'été de mon année de troisième. Une application full-stack, basée sur le NLP, avec environ 5000 lignes de code en Python et Vue, elle offre aux utilisateurs la possibilité de gérer et de visualiser leur banque de mots, de lire du contenu adapté à leur niveau, de passer des quiz pour renforcer leur compréhension, et plus encore.

Tout assembler a été un défi, étant donné certaines des combinaisons de frameworks plutôt inhabituelles que j'ai utilisées pour construire l'application, mais le résultat final a été d'une grande aide pour l'ami pour qui je l'avais construite et m'a beaucoup appris en cours de route.

Graphique d'échecs

alt alt alt
Obtenez analyses avancées dans votre jeu avec une visualisation d'échecs.

Bien que j'aie joué aux échecs quand j'étais plus jeune, je me suis éloigné du jeu royal jusqu'à l'apparition du COVID-19, lorsque plus de temps à la maison et moins de temps passé dans les transports signifiait que je devais trouver plus de passe-temps. Les échecs sont devenus l'un de ces passe-temps, et je me suis rapidement retrouvé à jouer ou à réviser ma stratégie pendant des heures chaque jour.

Pendant cette période, j'ai remarqué qu'il y avait un manque surprenant de logiciels qui représentaient visuellement les compétences des joueurs d'échecs. J'ai réalisé que je devais combler ce vide, et j'ai donc passé quelques semaines à coder chess-graph avec plotly.

J'ai mis beaucoup d'efforts dans ce projet, et la dernière version permet maintenant aux joueurs de choisir leur couleur, leur fichier de parties, l'ombrage, les info-bulles au survol, etc.

Mode Visage Bas

Il y a quelque temps, je suis tombé sur la OpenCV bibliothèque Python — un outil pour la vision par ordinateur. En l'explorant et en découvrant de plus en plus de capacités, j'ai réalisé que je pouvais l'utiliser pour résoudre un point de frustration personnelle considérable : une autonomie de batterie qui n'avait rien à faire sur un MacBook Air.

Et donc, après pas mal de bidouillage, j'avais un prototype fonctionnel de low-face-mode, un programme qui assombrissait mon écran quand je ne le regardais pas et l'éclaircissait quand je le regardais. De plus, il fonctionnait en temps réel, était exécutable depuis la ligne de commande, et permettait même d'éclaircir/assombrir en fonction d'une 'liste blanche' de visages autorisés.

Malheureusement, comme je l'ai vite découvert, l'exécution d'un tel programme en arrière-plan consommait beaucoup plus de batterie qu'elle n'en économisait. Mais travailler avec le langage de programmation AppleScript, résoudre une pull request pour prendre en charge Linux, et apprendre beaucoup de choses en général m'a laissé avec un produit fini (voir GIF) et très heureux malgré tout.

Conclusion

Ci-dessus est un échantillon représentatif de mon travail, mais si vous voulez en voir plus, rendez-vous sur mon Profil GitHub ou envoyez-moi un email !