<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://baptiste.devessier.fr/</id>
    <title>Baptiste Devessier</title>
    <updated>2024-10-26T18:42:13.478Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>Baptiste Devessier</name>
        <email>baptiste@devessier.fr</email>
    </author>
    <link rel="alternate" href="https://baptiste.devessier.fr/"/>
    <link rel="self" href="https://baptiste.devessier.fr/feed.xml"/>
    <subtitle>Baptiste Devessier's blog</subtitle>
    <entry>
        <title type="html"><![CDATA[Go back to fundamentals: HTML label]]></title>
        <id>https://baptiste.devessier.fr/writing/go-back-to-fundamentals-html-label/</id>
        <link href="https://baptiste.devessier.fr/writing/go-back-to-fundamentals-html-label/"/>
        <updated>2024-10-24T20:23:27.883Z</updated>
        <summary type="html"><![CDATA[Rediscover the power of the HTML label element by looking at how we can use it and its impact on accessibility.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[#5 Unit test a state machine]]></title>
        <id>https://baptiste.devessier.fr/writing/unit-test-a-state-machine/</id>
        <link href="https://baptiste.devessier.fr/writing/unit-test-a-state-machine/"/>
        <updated>2024-10-23T21:18:57.494Z</updated>
        <summary type="html"><![CDATA[Unit test state machines by leveraging their deterministic nature. Complete the coverage with integration and e2e testing.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[#4 Invoke and spawn utility machines]]></title>
        <id>https://baptiste.devessier.fr/writing/invoke-and-spawn-utility-machines/</id>
        <link href="https://baptiste.devessier.fr/writing/invoke-and-spawn-utility-machines/"/>
        <updated>2024-10-23T21:14:09.662Z</updated>
        <summary type="html"><![CDATA[Rely on XState’s Actor model to manage concurrency by invoking or spawning actors. Invoke for guaranteed actors and spawn for dynamic ones like worker pools. Actors communicate through events, ensuring modular and scalable systems.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[#3 Type XState with the Typegen]]></title>
        <id>https://baptiste.devessier.fr/writing/type-xstate-with-the-typegen/</id>
        <link href="https://baptiste.devessier.fr/writing/type-xstate-with-the-typegen/"/>
        <updated>2024-10-23T21:06:51.194Z</updated>
        <summary type="html"><![CDATA[Use XState's Typegen to automatically generate strong types for your machines by enabling it in your code, naming actions, delays, guards, and services for better TypeScript integration. Rely on Stately's VS Code extension or XState CLI for development and production builds.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[#2 Model a task queue with XState]]></title>
        <id>https://baptiste.devessier.fr/writing/model-a-task-queue-with-xstate/</id>
        <link href="https://baptiste.devessier.fr/writing/model-a-task-queue-with-xstate/"/>
        <updated>2024-10-23T21:02:02.953Z</updated>
        <summary type="html"><![CDATA[Implement a task queue in XState by processing tasks individually, queuing new tasks while busy, automatically triggering the next task with eventless transitions, and simplifying the design by globally handling task addition across all states.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[#1 The journey to learning XState]]></title>
        <id>https://baptiste.devessier.fr/writing/the-journey-to-learning-xstate/</id>
        <link href="https://baptiste.devessier.fr/writing/the-journey-to-learning-xstate/"/>
        <updated>2024-10-23T20:53:03.010Z</updated>
        <summary type="html"><![CDATA[Learn XState efficiently by exploring its documentation, taking courses, studying examples, and practicing with real projects to enhance your understanding and coding skills.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[#0 The State of XState Report]]></title>
        <id>https://baptiste.devessier.fr/writing/state-of-xstate-report/</id>
        <link href="https://baptiste.devessier.fr/writing/state-of-xstate-report/"/>
        <updated>2024-10-23T19:53:03.010Z</updated>
        <summary type="html"><![CDATA[My report is now public! Read it online now.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Create videos as React apps with Remotion]]></title>
        <id>https://newsletter.baptiste.devessier.fr/archive/create-videos-as-react-apps-with-remotion/</id>
        <link href="https://newsletter.baptiste.devessier.fr/archive/create-videos-as-react-apps-with-remotion/"/>
        <updated>2024-04-29T10:00:00.000Z</updated>
        <summary type="html"><![CDATA[Create dynamic videos with Remotion using HTML, CSS, JavaScript, and React. As
a tech content creator, I have found many use cases and showcase them today.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Expressive Code: My go-to code syntax highlighter]]></title>
        <id>https://newsletter.baptiste.devessier.fr/archive/expressive-code-my-go-to-code-syntax-highlighter/</id>
        <link href="https://newsletter.baptiste.devessier.fr/archive/expressive-code-my-go-to-code-syntax-highlighter/"/>
        <updated>2024-03-20T09:42:45.464Z</updated>
        <summary type="html"><![CDATA[A new syntax highlighter, Expressive Code, makes it a no-brainer to highlight
code. It has many wanted features by default, like line markers and multi-
themes support, and works in any build system.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[My first impressions of Panda CSS]]></title>
        <id>https://newsletter.baptiste.devessier.fr/archive/my-first-impressions-of-panda-css/</id>
        <link href="https://newsletter.baptiste.devessier.fr/archive/my-first-impressions-of-panda-css/"/>
        <updated>2024-01-30T21:00:00.000Z</updated>
        <summary type="html"><![CDATA[Tailwind CSS vs. Panda CSS: A comparison of styling solutions for the web,
covering type safety, merging styles, and component variants.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Astro goes full on View Transitions]]></title>
        <id>https://newsletter.baptiste.devessier.fr/archive/astro-goes-full-on-view-transitions/</id>
        <link href="https://newsletter.baptiste.devessier.fr/archive/astro-goes-full-on-view-transitions/"/>
        <updated>2023-12-21T21:00:00.000Z</updated>
        <summary type="html"><![CDATA[Explore Astro's latest features: lightweight SPA router with cross-page
animations, form support, and simplifying web development tools.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Share state across Astro Islands with Nano Stores]]></title>
        <id>https://baptiste.devessier.fr/writing/share-state-across-astro-islands-with-nano-stores/</id>
        <link href="https://baptiste.devessier.fr/writing/share-state-across-astro-islands-with-nano-stores/"/>
        <updated>2023-11-22T14:24:43.431Z</updated>
        <summary type="html"><![CDATA[Astro Islands shouldn't share state by default because they don't necessarily have the same lifetime. However, when sharing data across some of them is required – like the authenticated user's data – Nano Stores is helpful.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Refer to a class definition instead of one of its instances in TypeScript]]></title>
        <id>https://baptiste.devessier.fr/writing/refer-to-a-class-definition-instead-of-one-of-its-instances-in-typescript/</id>
        <link href="https://baptiste.devessier.fr/writing/refer-to-a-class-definition-instead-of-one-of-its-instances-in-typescript/"/>
        <updated>2023-09-04T10:56:14.699Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Catch JavaScript errors in React applications with an Error Boundary]]></title>
        <id>https://baptiste.devessier.fr/writing/catch-javascript-errors-in-react-applications-with-an-error-boundary/</id>
        <link href="https://baptiste.devessier.fr/writing/catch-javascript-errors-in-react-applications-with-an-error-boundary/"/>
        <updated>2022-12-30T22:37:22.547Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Always set validity duration of presigned URLs with AWS S3 SDK]]></title>
        <id>https://baptiste.devessier.fr/writing/always-set-validity-duration-of-presigned-urls-with-aws-s3-sdk/</id>
        <link href="https://baptiste.devessier.fr/writing/always-set-validity-duration-of-presigned-urls-with-aws-s3-sdk/"/>
        <updated>2022-12-21T16:15:10.546Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Fix Xcode Command Line Tools not working while installed]]></title>
        <id>https://baptiste.devessier.fr/writing/fix-xcode-command-line-tools-not-working-while-installed/</id>
        <link href="https://baptiste.devessier.fr/writing/fix-xcode-command-line-tools-not-working-while-installed/"/>
        <updated>2022-09-13T20:30:30.642Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Create a proxy state machine to drive CSS transitions on state changes with XState]]></title>
        <id>https://baptiste.devessier.fr/writing/create-a-proxy-state-machine-to-drive-css-transitions-on-state-changes-with-xstate/</id>
        <link href="https://baptiste.devessier.fr/writing/create-a-proxy-state-machine-to-drive-css-transitions-on-state-changes-with-xstate/"/>
        <updated>2022-09-01T11:26:34.208Z</updated>
        <summary type="html"><![CDATA[In order to add some behaviors to a state machine, we can change it, or we can add another machine in front of it to delegate some responsibilities. In this article I present the machine we added in front of our main machine to manage the load button of our Turing machine visualizer.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Create stale data indicator with XState]]></title>
        <id>https://baptiste.devessier.fr/writing/create-stale-data-indicator-with-xstate/</id>
        <link href="https://baptiste.devessier.fr/writing/create-stale-data-indicator-with-xstate/"/>
        <updated>2022-08-23T16:51:39.984Z</updated>
        <summary type="html"><![CDATA[The are few things as boring as not knowing the state of an application. Is this document saved or should I Ctrl+S? In this article I present the stale data indicator we display on our Turing machine visualizer when visualizer is not in sync with inputs.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Prevent flickering loading animation with XState]]></title>
        <id>https://baptiste.devessier.fr/writing/prevent-flickering-loading-animation-with-xstate/</id>
        <link href="https://baptiste.devessier.fr/writing/prevent-flickering-loading-animation-with-xstate/"/>
        <updated>2022-08-15T18:23:20.984Z</updated>
        <summary type="html"><![CDATA[Loading indicators tell users that something is happening and will complete soon. They exist to improve UX, but they can worsen UX if they are directly hidden after underlying HTTP requests resolve. In this article I share XState patterns I used to prevent this issue in our Turing machine visualizer.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Orchestrate request for server-side execution of Turing machine with XState]]></title>
        <id>https://baptiste.devessier.fr/writing/orchestrate-request-for-server-side-execution-of-turing-machine-with-xstate/</id>
        <link href="https://baptiste.devessier.fr/writing/orchestrate-request-for-server-side-execution-of-turing-machine-with-xstate/"/>
        <updated>2022-08-04T16:46:22.416Z</updated>
        <summary type="html"><![CDATA[We built a Turing machine visualizer but it does not execute machines itself—it's the job of an Erlang server. The visualizer needs to make a request to execute machines, and XState is the perfect tool to orchestrate this in combination with other behaviors of the visualizer.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Control tape of Turing machine visualizer with XState]]></title>
        <id>https://baptiste.devessier.fr/writing/control-tape-of-turing-machine-visualizer-with-xstate/</id>
        <link href="https://baptiste.devessier.fr/writing/control-tape-of-turing-machine-visualizer-with-xstate/"/>
        <updated>2022-08-02T16:57:30.076Z</updated>
        <summary type="html"><![CDATA[The execution of a Turing machine with an input produces a list of operations on a tape, that are made to be visualized. I built such a visualizer with XState, and used cool patterns to visualize operations on the tape.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Back up code with another Git remote]]></title>
        <id>https://baptiste.devessier.fr/writing/back-up-code-with-another-git-remote/</id>
        <link href="https://baptiste.devessier.fr/writing/back-up-code-with-another-git-remote/"/>
        <updated>2022-06-29T15:58:36.740Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Storing verification tokens into database]]></title>
        <id>https://baptiste.devessier.fr/writing/storing-verification-tokens-into-database/</id>
        <link href="https://baptiste.devessier.fr/writing/storing-verification-tokens-into-database/"/>
        <updated>2022-06-28T14:22:24.628Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Linking of native libraries of an Expo app in a monorepo]]></title>
        <id>https://baptiste.devessier.fr/writing/linking-of-native-libraries-of-an-expo-app-in-a-monorepo/</id>
        <link href="https://baptiste.devessier.fr/writing/linking-of-native-libraries-of-an-expo-app-in-a-monorepo/"/>
        <updated>2022-06-28T12:54:30.489Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Handle logic at the right place in React]]></title>
        <id>https://baptiste.devessier.fr/writing/handle-logic-at-the-right-place-in-react/</id>
        <link href="https://baptiste.devessier.fr/writing/handle-logic-at-the-right-place-in-react/"/>
        <updated>2022-04-17T19:27:29.290Z</updated>
        <summary type="html"><![CDATA[Deciding where to put logic code in React applications is crucial to keep a codebase clean and maintainable, and even functional. Rethinking the place of the logic to go from top to bottom can help a lot, and it's the main purpose of XState.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Stress testing with Artillery]]></title>
        <id>https://baptiste.devessier.fr/writing/stress-testing-with-artillery/</id>
        <link href="https://baptiste.devessier.fr/writing/stress-testing-with-artillery/"/>
        <updated>2022-04-12T15:53:43.170Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Create a named group in a JavaScript RegExp]]></title>
        <id>https://baptiste.devessier.fr/writing/create-a-named-group-in-a-javascript-regexp/</id>
        <link href="https://baptiste.devessier.fr/writing/create-a-named-group-in-a-javascript-regexp/"/>
        <updated>2022-04-08T15:45:10.557Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Stop a Docker container and remove its volumes]]></title>
        <id>https://baptiste.devessier.fr/writing/stop-a-docker-container-and-remove-its-volumes/</id>
        <link href="https://baptiste.devessier.fr/writing/stop-a-docker-container-and-remove-its-volumes/"/>
        <updated>2022-04-07T18:20:30.111Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Simplify data fetching in SvelteKit with page endpoints]]></title>
        <id>https://baptiste.devessier.fr/writing/simplify-data-fetching-in-sveltekit-with-page-endpoints/</id>
        <link href="https://baptiste.devessier.fr/writing/simplify-data-fetching-in-sveltekit-with-page-endpoints/"/>
        <updated>2022-03-27T11:45:13.554Z</updated>
        <summary type="html"><![CDATA[Page endpoints are a new way to simplify fetching data from endpoints in SvelteKit. They reduce the amount of code needed to fetch data, and prevent to forget handling HTTP errors.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Override version of a dependency of another dependency with npm]]></title>
        <id>https://baptiste.devessier.fr/writing/override-version-of-a-dependency-of-another-dependency-with-npm/</id>
        <link href="https://baptiste.devessier.fr/writing/override-version-of-a-dependency-of-another-dependency-with-npm/"/>
        <updated>2022-03-26T19:38:17.144Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Move recent commits to another branch]]></title>
        <id>https://baptiste.devessier.fr/writing/move-recent-commits-to-another-branch/</id>
        <link href="https://baptiste.devessier.fr/writing/move-recent-commits-to-another-branch/"/>
        <updated>2022-03-24T18:23:52.893Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Test NativeBase's `Select` component]]></title>
        <id>https://baptiste.devessier.fr/writing/test-nativebases-select-component/</id>
        <link href="https://baptiste.devessier.fr/writing/test-nativebases-select-component/"/>
        <updated>2022-03-12T17:11:37.794Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[A subquery can not be the `DEFAULT` value of a column in PostgreSQL]]></title>
        <id>https://baptiste.devessier.fr/writing/a-subquery-can-not-be-the-default-value-of-a-column-in-postgresql/</id>
        <link href="https://baptiste.devessier.fr/writing/a-subquery-can-not-be-the-default-value-of-a-column-in-postgresql/"/>
        <updated>2022-01-31T12:20:54.468Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Git Worktrees to manage several workspaces for the same repository]]></title>
        <id>https://baptiste.devessier.fr/writing/git-worktrees-to-manage-several-workspaces-for-the-same-repository/</id>
        <link href="https://baptiste.devessier.fr/writing/git-worktrees-to-manage-several-workspaces-for-the-same-repository/"/>
        <updated>2022-01-26T22:10:48.212Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Links to resources on same domain with SvelteKit]]></title>
        <id>https://baptiste.devessier.fr/writing/links-to-resources-on-same-domain-with-sveltekit/</id>
        <link href="https://baptiste.devessier.fr/writing/links-to-resources-on-same-domain-with-sveltekit/"/>
        <updated>2022-01-25T23:13:39.343Z</updated>
    </entry>
    <entry>
        <title type="html"><![CDATA[Generate RSS Feed with SvelteKit]]></title>
        <id>https://baptiste.devessier.fr/writing/generate-rss-feed-with-sveltekit/</id>
        <link href="https://baptiste.devessier.fr/writing/generate-rss-feed-with-sveltekit/"/>
        <updated>2021-12-25T22:17:07.070Z</updated>
        <summary type="html"><![CDATA[RSS Feeds let readers know about new content on your website. SvelteKit provides endpoints that can be used to generate RSS feeds.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Recreate Testing Library waitFor function with XState]]></title>
        <id>https://baptiste.devessier.fr/writing/recreate-testing-library-waitfor-function-with-xstate/</id>
        <link href="https://baptiste.devessier.fr/writing/recreate-testing-library-waitfor-function-with-xstate/"/>
        <updated>2021-12-19T22:02:11.662Z</updated>
        <summary type="html"><![CDATA[Testing Library brings a formidable waitFor function to your tests to wait for a condition to be met before a timeout is reached. But sometimes we need such a function outside of client-side tests.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Create state machines in Erlang]]></title>
        <id>https://baptiste.devessier.fr/writing/create-state-machines-in-erlang/</id>
        <link href="https://baptiste.devessier.fr/writing/create-state-machines-in-erlang/"/>
        <updated>2021-12-15T23:14:17.637Z</updated>
        <summary type="html"><![CDATA[Erlang is a functional language that implements pattern matching. We can make use of this great feature to create declarative state machines.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Temporal and Actor Model]]></title>
        <id>https://baptiste.devessier.fr/writing/temporal-and-actor-model/</id>
        <link href="https://baptiste.devessier.fr/writing/temporal-and-actor-model/"/>
        <updated>2021-11-24T22:55:51.895Z</updated>
        <summary type="html"><![CDATA[Temporal follows Actor Model to create workflows that are just plain code functions and plain actors.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Interpret SCXML state machines with XState]]></title>
        <id>https://baptiste.devessier.fr/writing/interpret-scxml-state-machines-with-xstate/</id>
        <link href="https://baptiste.devessier.fr/writing/interpret-scxml-state-machines-with-xstate/"/>
        <updated>2021-10-23T15:48:18.234Z</updated>
        <summary type="html"><![CDATA[SCXML is an universal format to describe state machines. XState can be used to interpret them in JavaScript.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[External transition to child state]]></title>
        <id>https://baptiste.devessier.fr/writing/external-transition-to-child-state/</id>
        <link href="https://baptiste.devessier.fr/writing/external-transition-to-child-state/"/>
        <updated>2021-10-20T21:52:46.521Z</updated>
        <summary type="html"><![CDATA[All transitions are external by default with XState, except transitions with a relative target, that are internal. It can lead to bugs when not understood properly.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Parallel states and events with XState]]></title>
        <id>https://baptiste.devessier.fr/writing/parallel-states-and-events-with-xstate/</id>
        <link href="https://baptiste.devessier.fr/writing/parallel-states-and-events-with-xstate/"/>
        <updated>2021-10-08T22:22:08.916Z</updated>
        <summary type="html"><![CDATA[Parallel states are an advanced feature of statecharts that allows to run a set of child states concurrently. We can even synchronize them easily by using normal XState events.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[YouTube player for React Native that also works on the Web]]></title>
        <id>https://baptiste.devessier.fr/writing/youtube-player-for-react-native-that-also-works-on-the-web/</id>
        <link href="https://baptiste.devessier.fr/writing/youtube-player-for-react-native-that-also-works-on-the-web/"/>
        <updated>2021-08-02T19:10:22.982Z</updated>
        <summary type="html"><![CDATA[The de facto library to use a YouTube player with React Native is react-native-youtube-iframe. Although is works perfectly on native platforms, it has some issues when used on the Web.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[Expo in a monorepo]]></title>
        <id>https://baptiste.devessier.fr/writing/expo-in-a-monorepo/</id>
        <link href="https://baptiste.devessier.fr/writing/expo-in-a-monorepo/"/>
        <updated>2021-06-12T18:48:01.937Z</updated>
        <summary type="html"><![CDATA[An Expo application can not be integrated inside a monorepo without doing some extra work. Fortunately the Expo team has published some tools to ease our job.]]></summary>
    </entry>
    <entry>
        <title type="html"><![CDATA[My commitment to learn in public]]></title>
        <id>https://baptiste.devessier.fr/writing/my-commitment-to-learn-in-public/</id>
        <link href="https://baptiste.devessier.fr/writing/my-commitment-to-learn-in-public/"/>
        <updated>2021-05-30T16:11:35.041Z</updated>
        <summary type="html"><![CDATA[I commit to learn in public by sharing my knowledges and showing my mistakes to everybody everyday.]]></summary>
    </entry>
</feed>