<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Craft]]></title><description><![CDATA[A repository of bitesize articles, tips & tricks (in both English and French) curated by Mirego’s team.]]></description><link>http://github.com/dylang/node-rss</link><generator>GatsbyJS</generator><lastBuildDate>Wed, 19 Jun 2024 01:23:17 GMT</lastBuildDate><item><title><![CDATA[Leveraging LiveView lifecycle hooks to send contextual data to Google Tag Manager]]></title><description><![CDATA[Google Tag Manager is a popular tool for receiving tracking events from your web application. Sometimes, you will use it to send specific…]]></description><link>https://craft.mirego.com/2024-05-13-leveraging-liveview-lifecycle-hooks-to-send-contextual-data-to-google-tag-manager</link><guid isPermaLink="false">https://craft.mirego.com/2024-05-13-leveraging-liveview-lifecycle-hooks-to-send-contextual-data-to-google-tag-manager</guid><pubDate>Mon, 13 May 2024 14:28:05 GMT</pubDate></item><item><title><![CDATA[Quelques astuces pour mieux comprendre les résultats de recherche d'Elasticsearch]]></title><description><![CDATA[J'ai récemment eu à investiguer pourquoi certains documents n'étaient pas présents dans la réponse d'une requête de recherche. Je n'étais…]]></description><link>https://craft.mirego.com/2023-06-14-quelques-astuces-pour-mieux-comprendre-les-résultats-de-recherche-d-elasticsearch</link><guid isPermaLink="false">https://craft.mirego.com/2023-06-14-quelques-astuces-pour-mieux-comprendre-les-résultats-de-recherche-d-elasticsearch</guid><pubDate>Wed, 14 Jun 2023 18:41:55 GMT</pubDate></item><item><title><![CDATA[Using AWS SSM to connect to OpenSearch Dashboards]]></title><description><![CDATA[By default, Amazon OpenSearch and OpenSearch Dashboards are configured to be only reachable from inside your VPC. Instead of connecting…]]></description><link>https://craft.mirego.com/2023-06-13-using-aws-ssm-to-connect-to-opensearch-dashboards</link><guid isPermaLink="false">https://craft.mirego.com/2023-06-13-using-aws-ssm-to-connect-to-opensearch-dashboards</guid><pubDate>Tue, 13 Jun 2023 21:05:52 GMT</pubDate></item><item><title><![CDATA[How we built our own GitHub Actions self-hosted macOS ephemeral runner setup]]></title><description><![CDATA[We are heavy GitHub Actions users at Mirego. We run hundreds of workflows per day, across Ubuntu and macOS runners. We quickly hit a…]]></description><link>https://craft.mirego.com/2023-05-04-how-we-built-our-own-github-actions-self-hosted-macos-ephemeral-runner-setup</link><guid isPermaLink="false">https://craft.mirego.com/2023-05-04-how-we-built-our-own-github-actions-self-hosted-macos-ephemeral-runner-setup</guid><pubDate>Fri, 05 May 2023 00:57:34 GMT</pubDate></item><item><title><![CDATA[Inject environment variables into GitHub Actions with a file and a one-liner script]]></title><description><![CDATA[Sometimes in a GitHub Actions workflow, we want to inject environment variables from a  file. For example, : In order to do that, it’s quite…]]></description><link>https://craft.mirego.com/2023-01-06-inject-environment-variables-into-github-actions-with-a-file-and-a-one-liner-script</link><guid isPermaLink="false">https://craft.mirego.com/2023-01-06-inject-environment-variables-into-github-actions-with-a-file-and-a-one-liner-script</guid><pubDate>Fri, 06 Jan 2023 19:33:41 GMT</pubDate></item><item><title><![CDATA[Counting a mapped and filtered list with Elixir]]></title><description><![CDATA[Suppose we have a list of attribute maps and we want to do three things: Convert each attribute map to a specific result (by passing them to…]]></description><link>https://craft.mirego.com/2022-12-19-counting-a-mapped-and-filtered-list-with-elixir</link><guid isPermaLink="false">https://craft.mirego.com/2022-12-19-counting-a-mapped-and-filtered-list-with-elixir</guid><pubDate>Mon, 19 Dec 2022 14:12:59 GMT</pubDate></item><item><title><![CDATA[GitHub Actions & ASDF]]></title><description><![CDATA[On utilise généralement ASDF et le fichier  comme source de vérité des versions de languages dans nos projets. Afin d'éviter cette solution…]]></description><link>https://craft.mirego.com/2022-12-06-github-actions-asdf</link><guid isPermaLink="false">https://craft.mirego.com/2022-12-06-github-actions-asdf</guid><pubDate>Tue, 06 Dec 2022 18:49:22 GMT</pubDate></item><item><title><![CDATA[PostgreSQL deferrable constraint]]></title><description><![CDATA[In a previous post, we discussed how to optimize bulk insert/update with Ecto by separating the evaluation from the execution of a series of…]]></description><link>https://craft.mirego.com/2022-11-10-postgresql-deferrable-constraint</link><guid isPermaLink="false">https://craft.mirego.com/2022-11-10-postgresql-deferrable-constraint</guid><pubDate>Thu, 10 Nov 2022 23:01:52 GMT</pubDate></item><item><title><![CDATA[You should never set the “multipart/form-data” content type manually]]></title><description><![CDATA[Today (actually yesterday) I learned that when sending  with , you should never set the  by yourself—you have to let the browser do it for…]]></description><link>https://craft.mirego.com/2022-11-03-you-should-never-set-the-multipart-form-data-content-type-manually</link><guid isPermaLink="false">https://craft.mirego.com/2022-11-03-you-should-never-set-the-multipart-form-data-content-type-manually</guid><pubDate>Thu, 03 Nov 2022 10:19:32 GMT</pubDate></item><item><title><![CDATA[Expose GraphQL operation in logs with Absinthe]]></title><description><![CDATA[A few months ago, we started using this pattern (originally written by our own @EtienneStPierre) in our GraphQL APIs (using Absinthe) and we…]]></description><link>https://craft.mirego.com/2022-10-06-expose-graphql-operation-in-logs-with-absinthe</link><guid isPermaLink="false">https://craft.mirego.com/2022-10-06-expose-graphql-operation-in-logs-with-absinthe</guid><pubDate>Thu, 06 Oct 2022 10:23:31 GMT</pubDate></item><item><title><![CDATA[PostgreSQL bulk insert]]></title><description><![CDATA[I was working on a feature that needs to insert in bulk a bunch of processed data into a PostgreSQL database for a given organization. This…]]></description><link>https://craft.mirego.com/2022-09-30-postgres-bulk-insert</link><guid isPermaLink="false">https://craft.mirego.com/2022-09-30-postgres-bulk-insert</guid><pubDate>Fri, 30 Sep 2022 20:01:04 GMT</pubDate></item><item><title><![CDATA[aws-cli : Using 1Password to Store Credentials]]></title><description><![CDATA[Here's a quick recipe to avoid storing sensitive credentials such as  and  in plain text in a config file! Instead of using a file such as…]]></description><link>https://craft.mirego.com/2022-09-30-aws-cli-one-password</link><guid isPermaLink="false">https://craft.mirego.com/2022-09-30-aws-cli-one-password</guid><pubDate>Fri, 30 Sep 2022 19:14:49 GMT</pubDate></item><item><title><![CDATA[Faire interagir deux smart contracts ensemble]]></title><description><![CDATA[Dans ce post, nous allons créer un smart contract qui va interagir avec le contrat connu des Cryptokitties. La première étape est de trouver…]]></description><link>https://craft.mirego.com/2022-09-26-calling-other-smart-contracts</link><guid isPermaLink="false">https://craft.mirego.com/2022-09-26-calling-other-smart-contracts</guid><pubDate>Mon, 26 Sep 2022 18:38:33 GMT</pubDate></item><item><title><![CDATA[Connecter une application Web3 a un smart contract]]></title><description><![CDATA[Pré-requis Ce post assume que vous avez déjà déployé un smart contract et que Metamask est configuré correctement pour le développement…]]></description><link>https://craft.mirego.com/2022-09-16-web3-ethers</link><guid isPermaLink="false">https://craft.mirego.com/2022-09-16-web3-ethers</guid><pubDate>Mon, 19 Sep 2022 17:33:27 GMT</pubDate></item><item><title><![CDATA[Configurer Metamask pour votre environnement de développement]]></title><description><![CDATA[Metamask est un ajout (plugin) au fureteur Chrome / Brave / Firefox qui permet l'interaction entre une application web et un blockchain…]]></description><link>https://craft.mirego.com/2022-09-16-configurer-metamask</link><guid isPermaLink="false">https://craft.mirego.com/2022-09-16-configurer-metamask</guid><pubDate>Sun, 18 Sep 2022 17:35:53 GMT</pubDate></item><item><title><![CDATA[Comment créer et déployer un smart contract]]></title><description><![CDATA[Installer Hardhat Hardhat est un environnement de développement pour les blockchains compatibles Ethereum. Sélectionnez typescript et…]]></description><link>https://craft.mirego.com/2022-09-16-creer-un-smart-contract</link><guid isPermaLink="false">https://craft.mirego.com/2022-09-16-creer-un-smart-contract</guid><pubDate>Fri, 16 Sep 2022 15:30:37 GMT</pubDate></item><item><title><![CDATA[Telemetry UI]]></title><description><![CDATA[TLDR; We use telemetry_ui to display telemetry based metrics in our Phoenix apps. Screenshot of /metrics showcasing values and charts At…]]></description><link>https://craft.mirego.com/2022-09-10-telemetry-ui</link><guid isPermaLink="false">https://craft.mirego.com/2022-09-10-telemetry-ui</guid><pubDate>Sat, 10 Sep 2022 19:26:32 GMT</pubDate></item><item><title><![CDATA[Optimizing batch operations with Ecto]]></title><description><![CDATA[We had a feature in a product that required us to insert and update lots of data on a user action. Here is how we transformed 1000 SQL…]]></description><link>https://craft.mirego.com/2022-08-31-optimizing-batch-operations-with-ecto</link><guid isPermaLink="false">https://craft.mirego.com/2022-08-31-optimizing-batch-operations-with-ecto</guid><pubDate>Wed, 31 Aug 2022 18:06:49 GMT</pubDate></item><item><title><![CDATA[Ecto’s fragments still feel like Elixir]]></title><description><![CDATA[I love that it’s so easy to write SQL queries using Elixir statements with Ecto: But what I also really love is that if I want to eject out…]]></description><link>https://craft.mirego.com/2022-08-15-ecto-s-fragments-still-feel-like-elixir</link><guid isPermaLink="false">https://craft.mirego.com/2022-08-15-ecto-s-fragments-still-feel-like-elixir</guid><pubDate>Mon, 15 Aug 2022 17:19:10 GMT</pubDate></item><item><title><![CDATA[Using CloudFront’s managed policies in Terraform]]></title><description><![CDATA[While configuring a new AWS CloudFront distribution for a project, I wanted to take advantage of CloudFront’s managed policies (instead of…]]></description><link>https://craft.mirego.com/2022-08-11-using-cloudfront-s-managed-policies-in-terraform</link><guid isPermaLink="false">https://craft.mirego.com/2022-08-11-using-cloudfront-s-managed-policies-in-terraform</guid><pubDate>Thu, 11 Aug 2022 13:59:47 GMT</pubDate></item><item><title><![CDATA[A new public repository for Elixir security advisories]]></title><description><![CDATA[We’ve been using the community-maintained dependabot/elixir-security-advisories repository as a source of data for MixAudit (our dependency…]]></description><link>https://craft.mirego.com/2022-08-09-a-new-public-repository-for-elixir-security-advisories</link><guid isPermaLink="false">https://craft.mirego.com/2022-08-09-a-new-public-repository-for-elixir-security-advisories</guid><pubDate>Tue, 09 Aug 2022 18:54:31 GMT</pubDate></item><item><title><![CDATA[Validate JSON data in ActiveRecord]]></title><description><![CDATA[ActiveRecord makes it easy to store JSON data inside a record (using a  column in PostgreSQL for example): In the above model, we make sure…]]></description><link>https://craft.mirego.com/2022-07-07-validate-json-data-in-activerecord</link><guid isPermaLink="false">https://craft.mirego.com/2022-07-07-validate-json-data-in-activerecord</guid><pubDate>Thu, 07 Jul 2022 12:57:37 GMT</pubDate></item><item><title><![CDATA[Testing child process with mocked dependency in Elixir]]></title><description><![CDATA[Problem If you try to run the test suite after adding a child process that has a mocked dependency, you will end up with something like this…]]></description><link>https://craft.mirego.com/2022-07-05-testing-child-process-with-mocked-dependency-in-elixir</link><guid isPermaLink="false">https://craft.mirego.com/2022-07-05-testing-child-process-with-mocked-dependency-in-elixir</guid><pubDate>Tue, 05 Jul 2022 19:56:21 GMT</pubDate></item><item><title><![CDATA[Kotlin Tips : Quand utiliser l’accesseur get() sur une propriété calculée ?]]></title><description><![CDATA[Une propriété calculée est une propriété dont la valeur s’obtient après l’évaluation d’une expression L’accesseur sur une propriété, permet…]]></description><link>https://craft.mirego.com/2022-06-16-kotlin-tips-quand-utiliser-l-accesseur-get-sur-une-propriété-calculée</link><guid isPermaLink="false">https://craft.mirego.com/2022-06-16-kotlin-tips-quand-utiliser-l-accesseur-get-sur-une-propriété-calculée</guid><pubDate>Thu, 16 Jun 2022 16:15:55 GMT</pubDate></item><item><title><![CDATA[Until I can SSH…]]></title><description><![CDATA[I was working on a virtual machine setup to run GitHub Actions self-hosted runners. I’m launching a VM and I wanted to connect to it via SSH…]]></description><link>https://craft.mirego.com/2022-06-07-until-i-can-ssh</link><guid isPermaLink="false">https://craft.mirego.com/2022-06-07-until-i-can-ssh</guid><pubDate>Tue, 07 Jun 2022 12:41:33 GMT</pubDate></item><item><title><![CDATA[Know which app is selected to share your app content on Android]]></title><description><![CDATA[In one of our projects, we wanted to know the applications users select when sharing content from our app for analytics. The possible value…]]></description><link>https://craft.mirego.com/2022-05-16-getting-the-app-used-to-share-my-content-on-android</link><guid isPermaLink="false">https://craft.mirego.com/2022-05-16-getting-the-app-used-to-share-my-content-on-android</guid><pubDate>Mon, 16 May 2022 21:41:39 GMT</pubDate></item><item><title><![CDATA[Les facteurs d’influence sur l’appartenance à une équipe de sport]]></title><description><![CDATA[Aujourd'hui, j'ai appris qu'il y avait trois groupes de facteurs qui influençaient le sentiment d'appartenance à une équipe sportive.…]]></description><link>https://craft.mirego.com/2022-03-01-les-facteurs-d-influence-sur-l-appartenance-à-une-équipe-de-sport</link><guid isPermaLink="false">https://craft.mirego.com/2022-03-01-les-facteurs-d-influence-sur-l-appartenance-à-une-équipe-de-sport</guid><pubDate>Tue, 01 Mar 2022 13:13:50 GMT</pubDate></item><item><title><![CDATA[The fine line between DRY and unnecessary abstraction]]></title><description><![CDATA[We recently had to write a one-off script to update some data in a database. A simple “find and replace” in multiple columns across multiple…]]></description><link>https://craft.mirego.com/2022-02-24-the-fine-line-between-dry-and-unnecessary-abstraction</link><guid isPermaLink="false">https://craft.mirego.com/2022-02-24-the-fine-line-between-dry-and-unnecessary-abstraction</guid><pubDate>Fri, 25 Feb 2022 01:25:26 GMT</pubDate></item><item><title><![CDATA[Pages vues sous GA4]]></title><description><![CDATA[Lorsque l'on crée une balise de configuration dans Google Tag Manager pour Google Analytics 4 (GA4), il est important de cocher la case…]]></description><link>https://craft.mirego.com/2022-02-16-pages-vues-sous-ga4</link><guid isPermaLink="false">https://craft.mirego.com/2022-02-16-pages-vues-sous-ga4</guid><pubDate>Wed, 16 Feb 2022 15:42:04 GMT</pubDate></item><item><title><![CDATA[aws-cli : Best Practices for Dealing with Multiple Accounts]]></title><description><![CDATA[We often have to manage different sets of credentials for multiple AWS accounts. I was wondering what was the more efficient and secure way…]]></description><link>https://craft.mirego.com/2022-01-18-aws-cli-best-practices-multiple-accounts</link><guid isPermaLink="false">https://craft.mirego.com/2022-01-18-aws-cli-best-practices-multiple-accounts</guid><pubDate>Tue, 18 Jan 2022 22:39:08 GMT</pubDate></item><item><title><![CDATA[Intégrer Amplitude à un site web via Google Tag Manager]]></title><description><![CDATA[Malgré le fait qu’ils n’en font que très peu mention dans leur documentation, il est très simple d’ajouter Amplitude sur une propriété web…]]></description><link>https://craft.mirego.com/2022-01-14-intégrer-amplitude-à-un-site-web-via-google-tag-manager</link><guid isPermaLink="false">https://craft.mirego.com/2022-01-14-intégrer-amplitude-à-un-site-web-via-google-tag-manager</guid><pubDate>Fri, 14 Jan 2022 18:09:33 GMT</pubDate></item><item><title><![CDATA[Meaningful config keys in Elixir projects]]></title><description><![CDATA[When working with environment variables, it’s a good pattern to store them in Elixir’s config files (). However, it’s up to the developer to…]]></description><link>https://craft.mirego.com/2022-01-06-meaningful-config-keys-in-elixir-projects</link><guid isPermaLink="false">https://craft.mirego.com/2022-01-06-meaningful-config-keys-in-elixir-projects</guid><pubDate>Thu, 06 Jan 2022 14:27:24 GMT</pubDate></item><item><title><![CDATA[Logger certains non-fatals dans Crashlytics, ça peut sauver des vies!]]></title><description><![CDATA[Parfois, il peut arriver qu'un bug se reproduise rarement et seulement sur certains devices. Trouver la source du problème peut être…]]></description><link>https://craft.mirego.com/2021-12-17-crashlytics-non-fatals</link><guid isPermaLink="false">https://craft.mirego.com/2021-12-17-crashlytics-non-fatals</guid><pubDate>Fri, 17 Dec 2021 14:30:33 GMT</pubDate></item><item><title><![CDATA[Ne plus jamais oublier un ktlintCheck avant un commit]]></title><description><![CDATA[Au root du projet:  Ajoutes  et save (ici ça aurait pu être n'importe quelle(s) autre commande(s) gradle pre-commit)  Voila, tu as…]]></description><link>https://craft.mirego.com/2021-12-10-ne-plus-jamais-oublier-un-ktlintcheck-avant-un-commit</link><guid isPermaLink="false">https://craft.mirego.com/2021-12-10-ne-plus-jamais-oublier-un-ktlintcheck-avant-un-commit</guid><pubDate>Fri, 10 Dec 2021 15:58:33 GMT</pubDate></item><item><title><![CDATA[Ecto.Multi comme interface principale de fonctionnalité]]></title><description><![CDATA[Ce texte décrit un pattern qu’on utilise dans quelques projets chez Mirego qui tire avantage de  pour uniformiser l’interface de toutes nos…]]></description><link>https://craft.mirego.com/2021-12-01-ecto-multi-comme-interface-principale-de-fonctionnalité</link><guid isPermaLink="false">https://craft.mirego.com/2021-12-01-ecto-multi-comme-interface-principale-de-fonctionnalité</guid><pubDate>Wed, 01 Dec 2021 18:54:53 GMT</pubDate></item><item><title><![CDATA[Calculate the size of an AWS S3 bucket or directory]]></title><description><![CDATA[You can get the total size of an AWS S3 bucket using a GUI tool or via AWS console, right? How about when you don’t want to use any of that…]]></description><link>https://craft.mirego.com/2021-11-24-calculate-the-size-of-an-aws-s3-bucket-or-directory</link><guid isPermaLink="false">https://craft.mirego.com/2021-11-24-calculate-the-size-of-an-aws-s3-bucket-or-directory</guid><pubDate>Wed, 24 Nov 2021 18:37:41 GMT</pubDate></item><item><title><![CDATA[Elixir’s URI.to_string/1 or how I stopped worrying about default ports]]></title><description><![CDATA[We had some code that would build a URI using three parts: a scheme, a host and a port. The port should not be included if it’s 80 because…]]></description><link>https://craft.mirego.com/2021-11-16-elixir-s-uri-to-string-1-or-how-i-stopped-worrying-about-default-ports</link><guid isPermaLink="false">https://craft.mirego.com/2021-11-16-elixir-s-uri-to-string-1-or-how-i-stopped-worrying-about-default-ports</guid><pubDate>Tue, 16 Nov 2021 13:38:11 GMT</pubDate></item><item><title><![CDATA[Sharing ECR-hosted Docker images across AWS accounts]]></title><description><![CDATA[A common pattern is deploying the same application on different AWS accounts, for example one for development and one for production…]]></description><link>https://craft.mirego.com/2021-11-10-sharing-ecr-hosted-docker-images-across-aws-accounts</link><guid isPermaLink="false">https://craft.mirego.com/2021-11-10-sharing-ecr-hosted-docker-images-across-aws-accounts</guid><pubDate>Wed, 10 Nov 2021 15:26:49 GMT</pubDate></item><item><title><![CDATA[Using Elixir’s `Map.get/3` third argument as a fallback value]]></title><description><![CDATA[While performing a code review, I started to reflect on how to get a specific key in an Elixir map while specifying a default fallback value…]]></description><link>https://craft.mirego.com/2021-11-08-using-elixir-map-get-third-argument-as-fallback-value</link><guid isPermaLink="false">https://craft.mirego.com/2021-11-08-using-elixir-map-get-third-argument-as-fallback-value</guid><pubDate>Mon, 08 Nov 2021 17:48:47 GMT</pubDate></item><item><title><![CDATA[Building a simple search input with PostgreSQL full-text search features]]></title><description><![CDATA[PostgreSQL provides us with powerful tools to perform full-text search on our data. Today I used them to build a simple search input. The…]]></description><link>https://craft.mirego.com/2021-10-13-building-a-simple-search-input-with-postgresql-full-text-search-features</link><guid isPermaLink="false">https://craft.mirego.com/2021-10-13-building-a-simple-search-input-with-postgresql-full-text-search-features</guid><pubDate>Wed, 13 Oct 2021 18:48:16 GMT</pubDate></item><item><title><![CDATA[L’illusion d’effort / Labor illusion effect]]></title><description><![CDATA[Aujourd'hui, j'ai appris l'importance d'une stratégie produit fort efficace : l'illusion d'effort. Avec la puissance des processeurs d…]]></description><link>https://craft.mirego.com/2021-08-24-l-illusion-d-effort-labor-illusion-effect</link><guid isPermaLink="false">https://craft.mirego.com/2021-08-24-l-illusion-d-effort-labor-illusion-effect</guid><pubDate>Tue, 24 Aug 2021 18:07:46 GMT</pubDate></item><item><title><![CDATA[Using Elixir’s “tap” to improve introspection in pipelines]]></title><description><![CDATA[Elixir makes it pretty easy to inspect data that is passed through a pipeline: will print this to : before returning: But what if we want to…]]></description><link>https://craft.mirego.com/2021-08-23-using-elixir-s-tap-to-improve-introspection-in-pipelines</link><guid isPermaLink="false">https://craft.mirego.com/2021-08-23-using-elixir-s-tap-to-improve-introspection-in-pipelines</guid><pubDate>Mon, 23 Aug 2021 16:39:48 GMT</pubDate></item><item><title><![CDATA[Using Kin to verify .xcodeproj files]]></title><description><![CDATA[I am not an expert in iOS development so I wanted to share with you a tool that I find useful when dealing with automatic merging issues in…]]></description><link>https://craft.mirego.com/2021-08-10-using-kin-to-verify-xcodeproj-files</link><guid isPermaLink="false">https://craft.mirego.com/2021-08-10-using-kin-to-verify-xcodeproj-files</guid><pubDate>Tue, 10 Aug 2021 16:36:37 GMT</pubDate></item><item><title><![CDATA[Elixir and default argument evaluation]]></title><description><![CDATA[Until very recently, I always assumed that these two Elixir modules would behave exactly the same: Defining  as the default argument value…]]></description><link>https://craft.mirego.com/2021-07-14-elixir-and-default-argument-evaluation</link><guid isPermaLink="false">https://craft.mirego.com/2021-07-14-elixir-and-default-argument-evaluation</guid><pubDate>Wed, 14 Jul 2021 09:55:31 GMT</pubDate></item><item><title><![CDATA[How to enable the alternative source switcher in Android Studio]]></title><description><![CDATA[It happens frequently in Android Studio projects to have multiple versions of the same library, mostly because of the variety of transitive…]]></description><link>https://craft.mirego.com/2021-07-08-how-to-enable-the-alternative-source-switcher-in-android-studio</link><guid isPermaLink="false">https://craft.mirego.com/2021-07-08-how-to-enable-the-alternative-source-switcher-in-android-studio</guid><pubDate>Thu, 08 Jul 2021 19:15:00 GMT</pubDate></item><item><title><![CDATA[Generate environment variable-friendly Base64-encoded strings]]></title><description><![CDATA[It’s common practice to encode non-ASCII data (such as RSA keys or binary data) as a single-line Base64-encoded string before setting it as…]]></description><link>https://craft.mirego.com/2021-05-20-generate-environment-variable-friendly-base64-encoded-strings</link><guid isPermaLink="false">https://craft.mirego.com/2021-05-20-generate-environment-variable-friendly-base64-encoded-strings</guid><pubDate>Thu, 20 May 2021 18:12:54 GMT</pubDate></item><item><title><![CDATA[Android smallest-width resource qualifier]]></title><description><![CDATA[There is always some confusion regarding the proper way to handle different screen size on Android. The platform mechanism of defining…]]></description><link>https://craft.mirego.com/2021-04-20-android-smallest-width-resource-qualifier</link><guid isPermaLink="false">https://craft.mirego.com/2021-04-20-android-smallest-width-resource-qualifier</guid><pubDate>Tue, 20 Apr 2021 12:28:15 GMT</pubDate></item><item><title><![CDATA[Using tmux-thumbs to quickly yank text in tmux]]></title><description><![CDATA[When working inside a shell session, it’s a very common pattern to want to use some information from a previous command output to build a…]]></description><link>https://craft.mirego.com/2021-04-02-using-tmux-thumbs-to-quickly-yank-text-in-tmux</link><guid isPermaLink="false">https://craft.mirego.com/2021-04-02-using-tmux-thumbs-to-quickly-yank-text-in-tmux</guid><pubDate>Fri, 02 Apr 2021 12:07:22 GMT</pubDate></item><item><title><![CDATA[How to get the user’s location via CloudFront]]></title><description><![CDATA[Today I learned that it’s possible to get the user’s current location via special headers when calling CloudFront. All you have to do is: Go…]]></description><link>https://craft.mirego.com/2021-03-16-how-to-get-the-users-location-via-cloudfront</link><guid isPermaLink="false">https://craft.mirego.com/2021-03-16-how-to-get-the-users-location-via-cloudfront</guid><pubDate>Tue, 16 Mar 2021 17:40:59 GMT</pubDate></item><item><title><![CDATA[Getting GitHub Actions to clone from a private git server]]></title><description><![CDATA[Just this morning, I had to get our CI workflow to clone a new submodule that resides on a private Bitbucket server. Of course, this does…]]></description><link>https://craft.mirego.com/2021-02-19-cloning-from-a-private-repo-in-your-github-action</link><guid isPermaLink="false">https://craft.mirego.com/2021-02-19-cloning-from-a-private-repo-in-your-github-action</guid><pubDate>Fri, 19 Feb 2021 16:30:00 GMT</pubDate></item><item><title><![CDATA[Test upcoming DNS changes with “curl --resolve”]]></title><description><![CDATA[Recently, we had to move one of our backend entrypoint from Azure CDN to AWS CloudFront. Everything was in place and the only thing left to…]]></description><link>https://craft.mirego.com/2021-02-12-test-upcoming-dns-changes-with-curl-resolve</link><guid isPermaLink="false">https://craft.mirego.com/2021-02-12-test-upcoming-dns-changes-with-curl-resolve</guid><pubDate>Fri, 12 Feb 2021 11:00:00 GMT</pubDate></item><item><title><![CDATA[Refactor List.first/0 into a better flow]]></title><description><![CDATA[I’ve always heard that  is not the most Elixir-esque pattern out there — that there almost always is a better pattern to use instead. So…]]></description><link>https://craft.mirego.com/2021-02-08-refactor-list-first-into-better-flow</link><guid isPermaLink="false">https://craft.mirego.com/2021-02-08-refactor-list-first-into-better-flow</guid><pubDate>Mon, 08 Feb 2021 18:00:00 GMT</pubDate></item><item><title><![CDATA[Conditional includes in git configuration file]]></title><description><![CDATA[I like keeping my personal settings and my work ones separated. One of the problem I had was mixing up my  user. If I forgot to configure…]]></description><link>https://craft.mirego.com/2021-02-01-git-config-conditional-includes</link><guid isPermaLink="false">https://craft.mirego.com/2021-02-01-git-config-conditional-includes</guid><pubDate>Mon, 01 Feb 2021 18:00:00 GMT</pubDate></item><item><title><![CDATA[Utiliser ember-cli-code-coverage avec nyc]]></title><description><![CDATA[Si jamais vous désirez utiliser  avec l’outil  pour votre projet Ember.JS, sachez que les rapports générés avec les versions de la branche…]]></description><link>https://craft.mirego.com/2021-02-01-utiliser-ember-cli-code-coverage-et-nyc</link><guid isPermaLink="false">https://craft.mirego.com/2021-02-01-utiliser-ember-cli-code-coverage-et-nyc</guid><pubDate>Mon, 01 Feb 2021 12:05:00 GMT</pubDate></item><item><title><![CDATA[Webpack inline loaders and Gatsby]]></title><description><![CDATA[In two Gatsby websites we manage (open.mirego.com and til.mirego.com), we had the same snippet of code: However, the result on both websites…]]></description><link>https://craft.mirego.com/2021-01-10-webpack-inline-loaders-and-gatsby</link><guid isPermaLink="false">https://craft.mirego.com/2021-01-10-webpack-inline-loaders-and-gatsby</guid><pubDate>Sun, 10 Jan 2021 20:01:00 GMT</pubDate></item><item><title><![CDATA[Using Ecto.Changeset to parse JSON params map]]></title><description><![CDATA[In my previous post, I wrote: I recently had to deal with camelCase-formated JSON while working on REST payloads.
I am using an embedded…]]></description><link>https://craft.mirego.com/2020-12-20-params-map-ecto-changeset</link><guid isPermaLink="false">https://craft.mirego.com/2020-12-20-params-map-ecto-changeset</guid><pubDate>Mon, 21 Dec 2020 03:45:00 GMT</pubDate></item><item><title><![CDATA[Using for comprehension instead of Enum.reduce/4]]></title><description><![CDATA[I recently had to deal with camelCase-formated JSON while working on REST
payloads. I am using an embedded schema and  to standardize
the…]]></description><link>https://craft.mirego.com/2020-12-17-elixir-for-comprehension</link><guid isPermaLink="false">https://craft.mirego.com/2020-12-17-elixir-for-comprehension</guid><pubDate>Fri, 18 Dec 2020 03:36:00 GMT</pubDate></item><item><title><![CDATA[Automatic timesheets with Timing and Harvest]]></title><description><![CDATA[At Mirego, we're using Harvest to track time on various projects. It allows every team member to report the exact time spent on various…]]></description><link>https://craft.mirego.com/2020-12-16-automatic-timesheets-timing-harvest</link><guid isPermaLink="false">https://craft.mirego.com/2020-12-16-automatic-timesheets-timing-harvest</guid><pubDate>Wed, 16 Dec 2020 13:07:05 GMT</pubDate></item><item><title><![CDATA[Kubernetes and environment variables update]]></title><description><![CDATA[When declaring a Kubernetes deployment and its containers, we can use  +  to make these containers use environment variables stored inside a…]]></description><link>https://craft.mirego.com/2020-11-17-kubernetes-environment-variables-update</link><guid isPermaLink="false">https://craft.mirego.com/2020-11-17-kubernetes-environment-variables-update</guid><pubDate>Tue, 17 Nov 2020 19:05:02 GMT</pubDate></item><item><title><![CDATA[Use “asdf-postgres” to connect to SSL-enabled PostgreSQL databases]]></title><description><![CDATA[Most of the databases we use in our Web applications are hosted by Cloud SaaS products such as Amazon Relational Database Service (RDS) and…]]></description><link>https://craft.mirego.com/2020-10-23-use-asdf-postgres-to-connect-to-ssl-enabled-postgresql-databases</link><guid isPermaLink="false">https://craft.mirego.com/2020-10-23-use-asdf-postgres-to-connect-to-ssl-enabled-postgresql-databases</guid><pubDate>Fri, 23 Oct 2020 09:48:00 GMT</pubDate></item><item><title><![CDATA[Managing Xcode versions on Jenkins nodes]]></title><description><![CDATA[We use bare metal Mac mini to run our Jenkins worker nodes. For years we've been managing the Xcode version installed on these nodes by…]]></description><link>https://craft.mirego.com/2020-10-20-managing-xcode-on-jenkins-nodes</link><guid isPermaLink="false">https://craft.mirego.com/2020-10-20-managing-xcode-on-jenkins-nodes</guid><pubDate>Tue, 20 Oct 2020 08:57:42 GMT</pubDate></item><item><title><![CDATA[Modifier facilement sa configuration de proxy sur un appareil Android]]></title><description><![CDATA[Malgré qu’il soit maintenant possible d’inspecter le traffic HTTP d’un appareil Android en utilisant le Profiler d’Android Studio, il est…]]></description><link>https://craft.mirego.com/2020-10-19-modifier-ses-paramètres-proxy-android</link><guid isPermaLink="false">https://craft.mirego.com/2020-10-19-modifier-ses-paramètres-proxy-android</guid><pubDate>Mon, 19 Oct 2020 10:43:26 GMT</pubDate></item><item><title><![CDATA[Récupérer l’utilisateur associé à une clé d’identification AWS]]></title><description><![CDATA[Il peut arriver qu’on soit en possession d’une combinaison de clé d’accès AWS et de sa clé secrète mais d’ignorer exactement quel…]]></description><link>https://craft.mirego.com/2019-12-04-récupérer-l-utilisateur-associé-à-une-clé-d-identification-aws</link><guid isPermaLink="false">https://craft.mirego.com/2019-12-04-récupérer-l-utilisateur-associé-à-une-clé-d-identification-aws</guid><pubDate>Wed, 04 Dec 2019 10:43:26 GMT</pubDate></item><item><title><![CDATA[Augmenter la RAM dans Android Studio]]></title><description><![CDATA[On peut allouer plus de mémoire dans Android Studio afin d'améliorer les performance de l'IDE. Pour ce faire, il faut aller dans Help…]]></description><link>https://craft.mirego.com/2017-10-23-augmenter-la-ram-dans-android-studio</link><guid isPermaLink="false">https://craft.mirego.com/2017-10-23-augmenter-la-ram-dans-android-studio</guid><pubDate>Sat, 23 Nov 2019 18:51:47 GMT</pubDate></item><item><title><![CDATA[Gestion des contraintes PostgreSQL personnalisées avec Ecto]]></title><description><![CDATA[Ecto est capable de bien gérer des contraintes d’une base de données PostgreSQL : , ,  et . Par contre, il ne gère pas la violation de…]]></description><link>https://craft.mirego.com/2019-11-06-gestion-des-contraintes-postgresql-personnalisées-avec-ecto</link><guid isPermaLink="false">https://craft.mirego.com/2019-11-06-gestion-des-contraintes-postgresql-personnalisées-avec-ecto</guid><pubDate>Wed, 06 Nov 2019 20:38:35 GMT</pubDate></item><item><title><![CDATA[Utiliser les associations Ecto pour simplifier nos requêtes]]></title><description><![CDATA[Les associations Ecto sont très pratiques pour déclarer les relations qui unissent nos différents schémas. Ces associations servent…]]></description><link>https://craft.mirego.com/2019-10-30-utiliser-les-associations-ecto-pour-simplifier-nos-requêtes</link><guid isPermaLink="false">https://craft.mirego.com/2019-10-30-utiliser-les-associations-ecto-pour-simplifier-nos-requêtes</guid><pubDate>Wed, 30 Oct 2019 13:43:50 GMT</pubDate></item><item><title><![CDATA[Elixir struct keys]]></title><description><![CDATA[Tout le monde connait la façon de mettre à jour ou ajouter une key à une map: Par contre, quand on deal avec des structs, c’est toujours…]]></description><link>https://craft.mirego.com/2019-10-29-elixir-struct-keys</link><guid isPermaLink="false">https://craft.mirego.com/2019-10-29-elixir-struct-keys</guid><pubDate>Tue, 29 Oct 2019 14:54:29 GMT</pubDate></item><item><title><![CDATA[Running data & db migrations]]></title><description><![CDATA[When running both data and db migrations using the following command: one has to be careful since pending db and data migrations are both…]]></description><link>https://craft.mirego.com/2019-04-01-running-data-db-migrations</link><guid isPermaLink="false">https://craft.mirego.com/2019-04-01-running-data-db-migrations</guid><pubDate>Mon, 01 Apr 2019 16:23:25 GMT</pubDate></item><item><title><![CDATA[Parsing french dates with Ruby]]></title><description><![CDATA[Ruby is able to parse dates when they are provided as strings: We had similar code using , with a small difference: date strings were in…]]></description><link>https://craft.mirego.com/2019-03-19-parsing-french-dates-with-ruby</link><guid isPermaLink="false">https://craft.mirego.com/2019-03-19-parsing-french-dates-with-ruby</guid><pubDate>Tue, 19 Mar 2019 00:55:31 GMT</pubDate></item><item><title><![CDATA[Underestimated React.Context feature]]></title><description><![CDATA[Une feature sous-estimée du nouveau Context API de React est qu’un Consumer va toujours consommer la valeur du Provider parent le plus…]]></description><link>https://craft.mirego.com/2019-02-22-underestimated-react-context-feature</link><guid isPermaLink="false">https://craft.mirego.com/2019-02-22-underestimated-react-context-feature</guid><pubDate>Fri, 22 Feb 2019 17:04:07 GMT</pubDate></item><item><title><![CDATA[@media (hover: hover)]]></title><description><![CDATA[On peut utiliser la media query  afin de déterminer si le mécanisme d’input primaire du device permet de hoverer les éléments. Ça permet d…]]></description><link>https://craft.mirego.com/2019-02-08-media-hover-hover</link><guid isPermaLink="false">https://craft.mirego.com/2019-02-08-media-hover-hover</guid><pubDate>Fri, 08 Feb 2019 14:22:56 GMT</pubDate></item><item><title><![CDATA[User timezone]]></title><description><![CDATA[On peut connaitre le timezone d’un utilisateur via l’Internationalization API. Utile pour une app qui permet à l’utilisateur de configurer…]]></description><link>https://craft.mirego.com/2019-02-07-user-timezone</link><guid isPermaLink="false">https://craft.mirego.com/2019-02-07-user-timezone</guid><pubDate>Thu, 07 Feb 2019 20:35:55 GMT</pubDate></item><item><title><![CDATA[currentColor]]></title><description><![CDATA[Une valeur css dont je viens de découvrir l’existence: currentColor! Dans cet exemple, l'icone va être la couleur du texte du bouton,  💅]]></description><link>https://craft.mirego.com/2018-01-31-currentcolor</link><guid isPermaLink="false">https://craft.mirego.com/2018-01-31-currentcolor</guid><pubDate>Wed, 31 Jan 2018 17:02:15 GMT</pubDate></item><item><title><![CDATA[Comment récupérer un commit après un git push --force]]></title><description><![CDATA[En jouant au XBox avec mon gars d'une main et en pushant mode code de l'autre, j'ai fais un mauvais rebase sur ma branche en squashant mon…]]></description><link>https://craft.mirego.com/2018-01-27-comment-récupérer-un-commit-après-un-git-push-force</link><guid isPermaLink="false">https://craft.mirego.com/2018-01-27-comment-récupérer-un-commit-après-un-git-push-force</guid><pubDate>Sat, 27 Jan 2018 15:55:25 GMT</pubDate></item><item><title><![CDATA[Détecter les références circulaire dans une unique table]]></title><description><![CDATA[source: https://mccalljt.io/blog/2017/01/postgres-circular-references/]]></description><link>https://craft.mirego.com/2018-01-10-détecter-les-références-circulaire-dans-une-unique-table</link><guid isPermaLink="false">https://craft.mirego.com/2018-01-10-détecter-les-références-circulaire-dans-une-unique-table</guid><pubDate>Wed, 10 Jan 2018 15:29:11 GMT</pubDate></item><item><title><![CDATA[Récupérer un dump mémoire sur Heroku]]></title><description><![CDATA[Pour récupérer un dump de la mémoire sur heroku]]></description><link>https://craft.mirego.com/2018-01-10-récupérer-un-dump-mémoire-sur-heroku</link><guid isPermaLink="false">https://craft.mirego.com/2018-01-10-récupérer-un-dump-mémoire-sur-heroku</guid><pubDate>Wed, 10 Jan 2018 15:22:10 GMT</pubDate></item><item><title><![CDATA[ember-browserify et les tests]]></title><description><![CDATA[Lorsque l'on a des dépendances qui sont importés avec , il faut absolument avoir  dans ses variables d’environnement. Par exemple,  doit…]]></description><link>https://craft.mirego.com/2017-12-12-ember-browserify-et-les-tests</link><guid isPermaLink="false">https://craft.mirego.com/2017-12-12-ember-browserify-et-les-tests</guid><pubDate>Tue, 12 Dec 2017 19:27:27 GMT</pubDate></item><item><title><![CDATA[Utiliser des librairies NPM privées avec yarn 1.x]]></title><description><![CDATA[Si votre projet à été configuré avec une version de  pre-1.0 et que vous avez fait la mise à jour, vous avez remarqué que  ne suffit plus…]]></description><link>https://craft.mirego.com/2017-11-23-utiliser-des-librairies-npm-privées-avec-yarn-1-x</link><guid isPermaLink="false">https://craft.mirego.com/2017-11-23-utiliser-des-librairies-npm-privées-avec-yarn-1-x</guid><pubDate>Thu, 23 Nov 2017 20:16:02 GMT</pubDate></item><item><title><![CDATA[Emplacement des captures d’écrans de macOS]]></title><description><![CDATA[Par défaut, macOS sauvegarde les captures d’écran sur , ce qui n’est peut-être pas désirable si on souhaite conserver une archive de nos…]]></description><link>https://craft.mirego.com/2017-11-13-emplacement-des-captures-d-écrans-de-macos</link><guid isPermaLink="false">https://craft.mirego.com/2017-11-13-emplacement-des-captures-d-écrans-de-macos</guid><pubDate>Mon, 13 Nov 2017 19:45:04 GMT</pubDate></item><item><title><![CDATA[This is not the headers you’re looking for]]></title><description><![CDATA[, c'est le deuxième paramètre que prend la function . Les typings de TypeScript viennent de m'apprendre que ça peut prendre soit un objet…]]></description><link>https://craft.mirego.com/2017-11-10-this-is-not-the-headers-you-re-looking-for</link><guid isPermaLink="false">https://craft.mirego.com/2017-11-10-this-is-not-the-headers-you-re-looking-for</guid><pubDate>Fri, 10 Nov 2017 01:46:09 GMT</pubDate></item><item><title><![CDATA[Lier un commit/PR à un JIRA]]></title><description><![CDATA[Il suffit simplement d'ajouter  aux commits afin de les retrouver sous l'onglet "Development" de JIRA. Imgur]]></description><link>https://craft.mirego.com/2017-11-02-lier-un-commit-pr-à-un-jira</link><guid isPermaLink="false">https://craft.mirego.com/2017-11-02-lier-un-commit-pr-à-un-jira</guid><pubDate>Thu, 02 Nov 2017 21:13:01 GMT</pubDate></item><item><title><![CDATA[Générer un mot de passe random avec OpenSSL]]></title><description><![CDATA[Voici le script que j’utilise. À noter que ce script donne un mot de passe sans caractères spéciaux.]]></description><link>https://craft.mirego.com/2017-11-02-générer-un-mot-de-passe-random-avec-openssl</link><guid isPermaLink="false">https://craft.mirego.com/2017-11-02-générer-un-mot-de-passe-random-avec-openssl</guid><pubDate>Thu, 02 Nov 2017 13:23:44 GMT</pubDate></item><item><title><![CDATA[Générer un gif de qualité avec FFmpeg]]></title><description><![CDATA[Pour générer un gif de très bonne qualité pour une montrer le résultat d’une animation complexe par exemple, il suffit d’enregistrer le…]]></description><link>https://craft.mirego.com/2017-10-25-générer-un-gif-de-qualité-avec-ffmpeg</link><guid isPermaLink="false">https://craft.mirego.com/2017-10-25-générer-un-gif-de-qualité-avec-ffmpeg</guid><pubDate>Wed, 25 Oct 2017 12:15:13 GMT</pubDate></item><item><title><![CDATA[Récupération de la dernière expression dans iex]]></title><description><![CDATA[Dans , on peut utiliser  pour obtenir le résultat de la dernière expression exécuté. L’argument passé à la function est la th expression…]]></description><link>https://craft.mirego.com/2017-10-23-récupération-de-la-dernière-expression-dans-iex</link><guid isPermaLink="false">https://craft.mirego.com/2017-10-23-récupération-de-la-dernière-expression-dans-iex</guid><pubDate>Mon, 23 Oct 2017 16:57:10 GMT</pubDate></item><item><title><![CDATA[kebab-case tout du long dans un API GraphQL avec Lacinia]]></title><description><![CDATA[Lorsque nous bâtissons un API GraphQL en Clojure, nous utilisons la superbe lib de Walmart Labs . Par contre, cette dernière exige que les…]]></description><link>https://craft.mirego.com/2017-10-23-kebab-case-tout-du-long-dans-un-api-graphql-avec-lacinia</link><guid isPermaLink="false">https://craft.mirego.com/2017-10-23-kebab-case-tout-du-long-dans-un-api-graphql-avec-lacinia</guid><pubDate>Mon, 23 Oct 2017 13:14:06 GMT</pubDate></item><item><title><![CDATA[Retirer des jobs de la “retry queue” de Sidekiq]]></title><description><![CDATA[Parfois, il arrive qu’on ait enqueué plusieurs mauvaises jobs dans Sidekiq, ce qui fait en sorte que lorsqu’elles s’exécutent, elles raise…]]></description><link>https://craft.mirego.com/2017-10-20-retirer-des-jobs-de-la-retry-queue-de-sidekiq</link><guid isPermaLink="false">https://craft.mirego.com/2017-10-20-retirer-des-jobs-de-la-retry-queue-de-sidekiq</guid><pubDate>Fri, 20 Oct 2017 18:58:34 GMT</pubDate></item><item><title><![CDATA[Ignorer les whitespaces dans le diff GitHub]]></title><description><![CDATA[Parfois, les changements d’un fichier sont seulement dû à l’ajout d’un niveau d’indentation et ça complexifie le review du code. On peut…]]></description><link>https://craft.mirego.com/2017-10-10-ignorer-les-whitespaces-dans-le-diff-github</link><guid isPermaLink="false">https://craft.mirego.com/2017-10-10-ignorer-les-whitespaces-dans-le-diff-github</guid><pubDate>Tue, 10 Oct 2017 19:47:29 GMT</pubDate></item><item><title><![CDATA[Ignorer des fichiers globalement avec un fichier “.gitignore” global]]></title><description><![CDATA[Lorsque Git se demande s’il doit ignorer un fichier dans un repository, il regarde à deux endroits : Le fichier  situé à la racine du…]]></description><link>https://craft.mirego.com/2017-10-10-ignorer-des-fichiers-globalement-avec-un-fichier-gitignore-global</link><guid isPermaLink="false">https://craft.mirego.com/2017-10-10-ignorer-des-fichiers-globalement-avec-un-fichier-gitignore-global</guid><pubDate>Tue, 10 Oct 2017 13:07:58 GMT</pubDate></item><item><title><![CDATA[Enlever la gem “paranoia” d’une application Rails]]></title><description><![CDATA[Quelques choses pratiques à savoir lorsqu’on retire la gem  d’une application Rails. Lorsqu’on ajoute  à un modèle, la gem ajoute un  à ce…]]></description><link>https://craft.mirego.com/2017-10-10-enlever-la-gem-paranoia-d-une-application-rails</link><guid isPermaLink="false">https://craft.mirego.com/2017-10-10-enlever-la-gem-paranoia-d-une-application-rails</guid><pubDate>Tue, 10 Oct 2017 13:03:27 GMT</pubDate></item></channel></rss>