• Lessons learned after migrating from Heroku to a kubernetes cluster

    Photo by Markus Spiske on Unsplash

    Part of the mission I was given when I arrived at my now workplace was the complete migration of our rails hosting from a Heroku service to a kubernetes solution. This was my first experience migrating a production stack, and my first experience with kubernetes as well. And just in case you’d think the task wasn’t daunting enough, the previous sole developper decided to leave for another opportunity a few weeks after my arrival. This departure was soon forgotten with the company hiring another developper who had already transitioned an app to kubernetes. So I took a course on udemy, read the kubernetes documentation thouroughly, took notes, and played around with a toy cluster. Then I set out on the transition journey.

    Six months later, the Heroku-Kubernetes transition is now over. I have gained a lot of experience. And I feel it’s time to share it.

    Continuer la lecture   

  • An alternative to the ActiveRecord after_initialize callback

    Callback hell

    I was playing with dynamic nested forms with Stimulus today and I stumbled upon a void left by Rails’ ActiveRecord callbacks.

    I have this Caregiver model within a nested form and I need to create it along with a User entity in my form, to be able to populate the fields. The problem is that creating an after_initialize callback (even with :new_record? will break the general behaviour of my app, and I don’t want to run through all the specs and fix FactoryBot issues etc.

    So I just decided to create a small method in my Caregiver model:

    # ceragiver.rb
    
    def init_with_user
      self.build_user
      self
    end
    

    Then I just need to call it in my view like this:

    <%= f.fields_for :caregivers, caregiver.new.init_with_user, child_index: 'TEMPLATE_RECORD' do |cf| %>
      <%= render 'caregiver_fields', cf: cf %>
    <% end %>
    

    This makes the code in my view simpler, more explicit, while avoiding the dreaded callback hell.

  • Chaining conditions in regular expressions

    Regexp hell

    I recently had to make a semi-complex check on a string to validate it.

    Basically, I have this model method which produces a serial number based on the ID of the object. Valid returned values for this method are L00000002, L00000587 or L00014522. In short, they should be constituted of a capital L followed by 8 digits composed of the id of the object padded with zeros.

    So I had to find a way to simply created a matcher for this to use in my model spec. I could have built two expectations, one for the length, and one for the composition. But I just decided to believe that regular expressions are powerful enough to do both at the same time. So I headed to rubular and started fiddling and googling around.

    Read more   

  • Un pas dans le vide ?

    Le pas de foi Comme j’en parlais dans un article précedent, je me suis engagé dans une démarche de reconversion professionnelle.

    Après deux tentatives infructueuses, je me retrouve désormais embauché comme développeur fullstack dans une boite très sympa de la région de poitiers. La demande de dispo a été envoyée hier, les collègues sont désormais tous au courant, et je me retrouve face à un nouveau défi sous forme de nouveau départ. Et c’est une situation très déstablisante - pour le moment.

    Continuer la lecture   

  • Les liens du jeudi - Episode 2

    Image par Free-Photos de Pixabay

    Deuxième épisode des liens du jeudi. Au menu, on Dockerise rails, on covoiture et on rationalise.

    Continuer la lecture   

  • Prevent Devise from sending confirmation emails

    Image par Antonios Ntoumas de Pixabay

    I am about to release a huge rails project I have been working on for quite a while. This project is meant to replace an old app that manages a database of customers with emails. The new rails project uses Devise for authentication.

    Before we push the final update to the production server, we need to find a way to import the users without sending confirmation emails, but still keep them unconfirmed until they actually login to the new system and provide a password. New registrations should also still be confirmable.

    Read more   

  • Les liens du jeudi - Episode 1

    Image par analogicus de Pixabay

    Je poste régulièrement mes trouvailles sur le net… Voici le premier épisode. Enjoy !

    Continuer la lecture   

  • Genèse d'une reconversion

    Image by Mohamed Hassan on Pixabay

    “Il était temps!” diront mes amis.

    Si je suis resté enseignant dans l’Éducation Nationale si longtemps, c’est que je ne les avais jamais vraiment écoutés. L’objectif de ce post n’étant pas de vous faire part de mes 19 années de passionnantes périgrinations, je me contenterai de dire que j’ai choisi l’enseignement par pragmatisme plus que par vocation. En soi, c’était une erreur.

    Le moment est venu, donc, de quitter l’enseignement et de se tourner vers le développement informatique à plein temps. Pour le moment, rien n’est fait. Je suis encore en poste, je corrige des copies, j’anime des cours… Mes collègues, ma hérarchie et mes élèves ne savent rien de ma décision. Le temps viendra.

    J’ai l’intention de venir ici faire le point régulièrement, partager mes réflexions sur cette transformation, à la fois pour me permettre de formaliser mon évolution, mais aussi pour donner un coup de pouce à d’autres qui seraient dans une situation analogue.

    Continuer la lecture   

  • Crystal, l'avenir de Ruby

    /img/ruby2crystal.png

    Cela fait quelques mois que je suis de près le développement d’un langage informatique qui a fait son apparition il y a quelques années déjà : Crystal.

    Je suis vraiment un grand fan de code. Au point parfois de regarder mon IDE en me disant : “c’est beauuuuu…” Mais du coup, mon côté esthète me pousse vers des langages dont la syntaxe est fluide, concise et intuitive. C’est cette envie de joli code qui m’a poussé à abandonner PHP, ses $variables, ses -> et ses ; en fin de ligne. Beuark. J’ai aussi longtemps snobé le Javascript, pour à peu près les mêmes raisons, même s’il est difficile de s’en passer ! Il a été sauvé quand j’ai découvert SandardJS et appris que les points-virgules du Javascript étaient optionnels, car oui, je suis point-virgule-phobe et je l’assume. Je peux désormais lire mon code Javascript sans être pris de spasmes.

    Je suis tombé dans le Ruby il y a une grosse dizaine d’années, en pleine hype Ruby on Rails, attiré par ces tutos qui montraient comment monter un blog en 3 minutes 27 chrono. J’ai appris à dompter la bête au fil des ans, et j’ai appris à apprécier l’expressivité de ce langage. Cette flexibilité, elle vient du fait que Ruby propose plusieurs manières de faire la même chose. Ce langage ne contraint pas le développeur dans un mode de pensée unique, il le laisse libre de s’attaquer à un problème de la manière qui lui semble la plus adaptée. C’est ce qui donne Ruby cette impression d’être un langage informatique lisible par les humains.

    Mais Ruby a ses limites.

    Read more   

  • First, I drink the coffee...

    …Then, I do the things.

    Here is a wallpaper I made. Feel free to download…

    Read more   

  • Deepin, ça a de la Gueule (mais pas que) !

    Deepin Desktop Environment

    Ca fait maintenant un petit moment que je me suis tourné vers un nouvel environnement de travail sous Linux appelé Deepin Desktop Environment. Ce petit bijou esthétique est l’émanation d’une distribution Chinoise appelée tout simplement ‘Deepin’ basée sur Debian. Pour autant, Deepin en tant qu’environnement est disponible sur plusieurs plateformes, dont Manjaro, que j’utilise. La sortie de la version 15.8 est l’occasion pour moi de faire la point sur ce que Deepin a à proposer. C’est beau, certes, mais est-ce que le ramage vaut le plumage ?

    Chantons.

    Continuer la lecture   

  • Utiliser l’application electron Mastodon (Linux)

    Mastodon

    Voici un rapide tutoriel pour utiliser l’appli electron développée pour accéder à Mastodon. Je me concentre sur Linux/Ubuntu, car c’est le système que j’utilise. Néanmoins, il suffira probablement d’adapter ces étapes à votre environnement (Windows, MacOS, autres distributions Linux) pour pouvoir l’utiliser sur ces plateformes.

    Ce tutoriel concerne la version 0.2.1.

    Continuer la lecture   

  • Pourquoi Mastodon cartonne chez les Frenchies

    Mastodon cartonne en France

    Tout le monde en parle. Bon, pas tout le monde, OK, mais pas mal de monde, en fait. Depuis quelques jours, les journaux spécialisés dans le numérique et les réseaux sociaux publient des articles qui vantent les mérites de Mastodon, ce réseau social qui semble vouloir faire de l’ombre à Twitter. Même France Info en a parlé.

    Il y a quelques mois, j’ai vu apparaître sur Hacker News un post du créateur de Mastodon. Il nous invitait à tester et rejoindre le petit réseau social qui, selon lui, avait les armes pour offrir une alternative crédible à Twitter.

    C’est ce que j’ai fait. Mais à l’époque, pas d’appli Android digne de ce nom, peu de monde sur les serveurs… Ca me faisait penser à Twitter à ses débuts, avec une timeline mondiale qui défilait, mais personne que je connaisse. Après deux ou trois toots, j’ai oublié, en me disant que ce service web finirait par avoir la même destinée que App.net.

    Mais ces derniers jours, voyant que la hype prenait forme en France, j’ai décidé de m’y remettre. Et mine de rien, il y a de plus en plus de monde, les applis Android (et iOS) sont utilisables, et la communauté semble ouverte, conviviale et désireuse d’aider ceux qui débutent.

    Ce qui (me) frappe, surtout, c’est la très forte présence francophone. Du coup, je me suis demandé pourquoi ça nous plaisait bien, à nous, les frenchies.

    Continuer la lecture   

  • De quoi être fier...

    Quand Jean-Luc gadreau m'a demandé si j'étais d'accord de composer et d'arranger son prochain album de slam, j'ai tout de suite dit oui. Jean-Luc fait partie de ces gens qui sont très ouverts musicalement et qui n'ont pas peur d'innover. Je me suis dit que ce serait une expérience musicale intéressante et enrichissante.

    En février 2012, quand nous nous sommes vus en compagnie de Gregory Boutinon, qui a co-composé et co-arrangé le CD, Jean-Luc a insisté sur la liberté qu'il nous donnait. Une vraie carte blanche avec une seule directive : electro-rock, et une deadline : fin juin 2012 ! Le temps de se mettre en route, cela nous laissait 4 mois pour composer, arranger, mixer et masteriser l'album.

    Continuer la lecture   

  • Un plugin Coda pour Symfony2

    (English below)

    J'ai créé un petit plugin Coda pour lancer les commandes Symfony2 les plus courantes.

    C'est un travail en cours, pour l'instant très basique. Mais on peut installer Symfony directement depuis Coda, sans toucher à une ligne de code, pourvu que Git soit installé.

    Vous pouvez télécharger le plugin sur GitHub.

    Les instructions (en anglais) sont à données ci-dessous :

    Installation Instructions

    Download the zip file.

    Unzip.

    Double-click the Symfony2.codaplugin bundle, or drag and drop on Coda’s icon.

    Use it!

    Usage

    Check out the readme on Github.

    [EDIT :  J'ai enlevé le Readme de cet article, il aurait été trop vite obsolète. Pour le consulter, se rendre sur le repo Github.]

  • On démarre avec Symfony2

    J’ai décidé de créer un projet avec Symfony 2. Je vais donc en profiter pour mettre quelques notes à ce sujet sur ce blog, au fur et à mesure des bugs que j’ai rencontré. Cela fait trop longtemps que je corrige des bugs, et que, une fois confronté au même problème 6 mois plus tard, je reprends la méthode « essai/erreur » pour le résoudre… Désormais, tout (ou presque) sera consigné ici, et consultable par tous !

    Continuer la lecture   

  • CSS et Javascript au régime avec Smaller

    L'une des étapes de la création d'un site web qui s'avère assez cruciale est l'optimisation du contenu afin de permettre un chargement rapide des pages dans les navigateurs. Un site qui se charge rapidement est aussi un site qui fera plaisir à Google et ses amis, qui du coup le fera monter dans les résultats de recherche.

    Outre l'optimisation des images, on peut aussi penser à “minifier” le javascript et le CSS. Cela allège les transferts de données entre le serveur et le client. On y gagne quelques octets, ce qui est peut-être négligeable pour un petit site, mais si on est un peu ambitieux, et soucieux de produire un travail soigné, on se préparera à recevoir une avalanche de requêtes le jour où ledit site sortira de l'anonymat !

    Continuer la lecture   

  • MongoDB, l'avènement du noSQL

    La mise en place d'une base de données relationnelle peut être un vrai casse-tête. Si on s'est déjà lancé dans un projet d'envergure, on se rend vite compte que non seulement la période de planification du projet est primordiale, mais surtout que dès qu'on veut opérer un changement quelquonque sur la structure de la base, il faut répercuter ces changements dans toutes les requêtes SQL du projet, parfois revoir les jointures… bref, tout ça pour ajouter la fonction ‘tag’ qui n'était pas dans le projet initial, ça peut faire mal, et surtout ça fait perdre du temps.

    Arrive MongoDB. Arrive le noSQL. Arrive la modélisation du monde réél. Arrive un cachet d'aspirine.

    Continuer la lecture   

  • Pow! un serveur rails auto-suffisant

    Grand bidouilleur devant l'Eternel, je suis toujours à l'affut des dernières nouveautés technologiques.

    L'équipe de 37signals, qui nous a pondu rails, a lancé il y a quelques semaines un petit serveur “zero-configuration” pour une utilisation avec Ruby on Rails. D'une simplicité d'utilisation déconcertante, il permet de faire vivre autant de “serveurs” que vous avez d'applis rails sur votre machine, chacun vivant dans son microcosme, sans interférer avec les autres.

    Continuer la lecture   

  • Mon Choix


    Face à aux douleurs de la vie, incapable d’y trouver un sens, une jeune fille joue avec sa vie en y cherchant l’espoir. Nous sommes tous, tôt ou tard, confrontés à cette question : où va ma vie ? Ce court métrage retrace la cheminement de cette jeune fille qui a choisi d’en finir.

    Continuer la lecture   

subscribe via RSS

Follow me on Mastodon