À propos du service
TraduitJe suis développeur Clojure et je crée des services backend fonctionnels et des applications de traitement de données fonctionnant sur la JVM. Au cœur de mon travail se trouvent des structures de données immuables, des fonctions pures et un style compositionnel où un programme est construit à partir de petites pièces clairement nommées sur lesquelles vous pouvez réellement raisonner. Étant donné que Clojure est un Lisp, mon principal outil est le REPL : je fais évoluer un programme de manière interactive, j'évalue des expressions directement sur des données en direct et j'affine le design au fur et à mesure, plutôt que de tout deviner à l'avance et de déboguer plus tard. C'est une discipline distincte, contrairement au travail avec Java, Scala ou Elixir, et je l'aborde comme un artisanat à part entière, pas Java avec des parenthèses.
En ce qui concerne le multithreading, j'utilise honnêtement les outils que le langage fournit : atomes, refs, agents et canaux core.async — par tâche, pas par mode. J'ai construit des services HTTP REST et de streaming sur Ring et reitit, décrit des données via spec et Malli, travaillé avec Postgres via next.jdbc et HoneySQL, traité de grands volumes avec des transducteurs et des séquences paresseuses afin que la mémoire reste plate. Je me soucie d'une intégration soignée avec l'écosystème JVM environnant, d'une gestion des erreurs sensée et de déploiements ennuyeux-dans-le-bon-sens. Si le code s'est embrouillé dans un état enchevêtré, je le ramène à un cœur propre et à des bords fins avec des effets.
Si vous avez un service qui doit être correct sous charge, un pipeline de données qui doit rester maintenable, ou un projet Clojure bloqué à mi-chemin, je le prendrai en main et le ferai avancer. J'écris des tests qui corrigent le comportement, documentent des points complexes et laissent un processus REPL sain afin que la prochaine personne soit productive dès le premier jour.
— Services backend en Clojure et ClojureScript pour JVM
— APIs REST et de streaming sur Ring, reitit et core.async
— Modélisation et validation des données via clojure.spec et Malli
— Travailler avec Postgres via next.jdbc, HoneySQL et le pooling de connexions
— Multithreading avec atomes, refs, agents et canaux
— Transducteurs, séquences paresseuses, traitement de grands volumes
— Développement piloté par REPL, tests et refactoring vers des fonctions pures
En ce qui concerne le multithreading, j'utilise honnêtement les outils que le langage fournit : atomes, refs, agents et canaux core.async — par tâche, pas par mode. J'ai construit des services HTTP REST et de streaming sur Ring et reitit, décrit des données via spec et Malli, travaillé avec Postgres via next.jdbc et HoneySQL, traité de grands volumes avec des transducteurs et des séquences paresseuses afin que la mémoire reste plate. Je me soucie d'une intégration soignée avec l'écosystème JVM environnant, d'une gestion des erreurs sensée et de déploiements ennuyeux-dans-le-bon-sens. Si le code s'est embrouillé dans un état enchevêtré, je le ramène à un cœur propre et à des bords fins avec des effets.
Si vous avez un service qui doit être correct sous charge, un pipeline de données qui doit rester maintenable, ou un projet Clojure bloqué à mi-chemin, je le prendrai en main et le ferai avancer. J'écris des tests qui corrigent le comportement, documentent des points complexes et laissent un processus REPL sain afin que la prochaine personne soit productive dès le premier jour.
— Services backend en Clojure et ClojureScript pour JVM
— APIs REST et de streaming sur Ring, reitit et core.async
— Modélisation et validation des données via clojure.spec et Malli
— Travailler avec Postgres via next.jdbc, HoneySQL et le pooling de connexions
— Multithreading avec atomes, refs, agents et canaux
— Transducteurs, séquences paresseuses, traitement de grands volumes
— Développement piloté par REPL, tests et refactoring vers des fonctions pures