<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Juan Carlos del Valle</title>
    <description>The latest articles on Forem by Juan Carlos del Valle (@imekinox).</description>
    <link>https://forem.com/imekinox</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1060965%2F4dd50b1d-21f0-4550-83ff-646a1b03d120.jpeg</url>
      <title>Forem: Juan Carlos del Valle</title>
      <link>https://forem.com/imekinox</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/imekinox"/>
    <language>en</language>
    <item>
      <title>Mastering Airtable: A Powerful Tool for Developers</title>
      <dc:creator>Juan Carlos del Valle</dc:creator>
      <pubDate>Wed, 19 Apr 2023 23:51:01 +0000</pubDate>
      <link>https://forem.com/imekinox/mastering-airtable-a-powerful-tool-for-developers-7p5</link>
      <guid>https://forem.com/imekinox/mastering-airtable-a-powerful-tool-for-developers-7p5</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/c3ICWZLW_SA"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Today, I'm going to introduce you to an amazing tool called Airtable. It's perfect for developers who want to manage their data with a simple interface, allowing them to focus more on the front-end. The best part? It's mostly free for everyone to use! So, let's dive in and explore Airtable together.&lt;/p&gt;

&lt;h3&gt;
  
  
  Signing Up and Creating a Base
&lt;/h3&gt;

&lt;p&gt;Head over to airtable.com and sign up for a free account. Once you're logged in, you can create a new base. A base is a set of tables, similar to different sheets in a spreadsheet. By default, Airtable creates four columns: Name, Notes, Assignee, and Status. You can manage different types of fields, such as long text, assignee, and single select.&lt;/p&gt;

&lt;h3&gt;
  
  
  Customizing Your Fields
&lt;/h3&gt;

&lt;p&gt;You can easily edit any field by clicking the down arrow and selecting "Edit Field." You can change the field type and other settings. In this example, we'll create an auto number field called "ID," a long text field for the post or tweet, a date-time field for the "Post By" date, and a status field for "Posted" or "Pending."&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding Test Posts and Automations
&lt;/h3&gt;

&lt;p&gt;Add some test posts to your table and set their respective statuses. Next, explore the automations at the top of the page. Automations allow you to execute actions based on triggers, such as a record matching certain conditions or a scheduled time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting to Twitter
&lt;/h3&gt;

&lt;p&gt;In this example, we'll connect Airtable to Twitter using an automation that posts a tweet. To do this, choose the "Post Tweet" action and connect your Twitter account. You can test the action to make sure it works.&lt;/p&gt;

&lt;h3&gt;
  
  
  Filtering Data and Creating Custom Views
&lt;/h3&gt;

&lt;p&gt;Back in the data section, you can create custom views to filter the data based on certain conditions. For instance, you can create a "Pending Tweets" view that only shows tweets with a status of "Pending." You can also add a formula field to determine if a tweet needs to be posted based on the current date and time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting Up Automations to Post Tweets
&lt;/h3&gt;

&lt;p&gt;With your custom view in place, head back to the automations section and add a step between the scheduler and the "Post Tweet" action. This step will find records, specifically the pending tweets that need to be posted. Once you've set this up, you can create a loop to iterate through each pending tweet and post it to Twitter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Airtable is an incredibly powerful and flexible tool for developers. With its simple interface, powerful automations, and seamless integrations with other services like Twitter, it's easy to see why so many developers love it. By following this tutorial, you'll be well on your way to mastering Airtable and leveraging its full potential in your projects.&lt;/p&gt;

</description>
      <category>create</category>
      <category>airtable</category>
      <category>based</category>
    </item>
    <item>
      <title>Quick Introduction to GraphQL</title>
      <dc:creator>Juan Carlos del Valle</dc:creator>
      <pubDate>Wed, 12 Apr 2023 23:47:31 +0000</pubDate>
      <link>https://forem.com/imekinox/quick-introduction-to-graphql-2h1m</link>
      <guid>https://forem.com/imekinox/quick-introduction-to-graphql-2h1m</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/tuqwECMBQRs"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Hello and welcome back! My name is Juan, and I'm on a mission of making coding accessible to everyone in the world. Today, we'll discuss GraphQL, an alternative to traditional REST APIs that offers a more efficient and flexible way to fetch data from the server. This is especially perfect for front-end developers looking to optimize their applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is GraphQL?
&lt;/h3&gt;

&lt;p&gt;GraphQL is a query language for APIs, developed by Facebook. It's a more efficient and powerful way to fetch data from the server, making it easier to handle complex data requests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Started with GraphQL
&lt;/h3&gt;

&lt;p&gt;To start, we need a GraphQL server. We'll be using Hasura, but there are several other options out there, mostly open-source.&lt;/p&gt;

&lt;p&gt;For this tutorial, I'll be using the server that we built in a previous video. Here's a &lt;a href="https://youtu.be/oX51rm3FsEo"&gt;link&lt;/a&gt; for you to go ahead and set up the server so you can run these queries on your computer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Querying Data with GraphQL
&lt;/h3&gt;

&lt;p&gt;Queries are used to request data from the server. In this example, we'll retrieve the title and description of our exercises.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="k"&gt;query&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;getExercisesList&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;exercises&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To also get the muscles that the exercise triggers, we can simply add the muscles field and run the query again.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mutations in GraphQL
&lt;/h3&gt;

&lt;p&gt;Mutations are used for insert, update, or delete operations in GraphQL. Queries are for reading, while mutations are for writing or updating.&lt;/p&gt;

&lt;p&gt;Here's an example of a mutation to create a workout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="k"&gt;mutation&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;createWorkout&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;insert_workout_one&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;object&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"My First Workout"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"This is the description of my first workout"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;workout_id&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Adding Exercises to a Workout
&lt;/h4&gt;

&lt;p&gt;To add exercises to a workout, we can modify the mutation like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="k"&gt;mutation&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;createWorkoutWithExercises&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;insert_workout_one&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;object&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"My Second Workout"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"This is the description of my second workout"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;exercises&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;exercise_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"exercise-id-1"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;exercise_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"exercise-id-2"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;workout_id&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Using Conditions, Offsets, and Limits in Queries
&lt;/h3&gt;

&lt;p&gt;With GraphQL, we can easily limit the amount of data we retrieve and apply conditions to our queries. This is useful for pagination and filtering data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="k"&gt;query&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;getWorkouts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;!)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;workouts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;offset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;exercises&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;exercise&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;_eq&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$title&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;exercises&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;exercise&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Real-time Updates with Subscriptions
&lt;/h3&gt;

&lt;p&gt;GraphQL supports real-time updates through subscriptions. You can subscribe to changes in your data and automatically receive updates when the data changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="k"&gt;subscription&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;getWorkouts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;workouts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;exercises&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="n"&gt;exercise&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Using Streams
&lt;/h3&gt;

&lt;p&gt;Another approach for real-time updates is using streams. Streams are more suitable for use cases like building chat applications.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight graphql"&gt;&lt;code&gt;&lt;span class="k"&gt;subscription&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;workoutStream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$batchSize&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;Int&lt;/span&gt;&lt;span class="p"&gt;!,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$cursor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;timestamptz&lt;/span&gt;&lt;span class="p"&gt;!)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="n"&gt;workout_stream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;batch_size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$batchSize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;cursor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$cursor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>graphql</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Struggling with Your Social Media Bio? Try ChatGPT's Simple and Free Template!</title>
      <dc:creator>Juan Carlos del Valle</dc:creator>
      <pubDate>Tue, 11 Apr 2023 17:37:57 +0000</pubDate>
      <link>https://forem.com/imekinox/struggling-with-your-social-media-bio-try-chatgpts-simple-and-free-template-2g3h</link>
      <guid>https://forem.com/imekinox/struggling-with-your-social-media-bio-try-chatgpts-simple-and-free-template-2g3h</guid>
      <description>&lt;p&gt;Are you struggling to come up with the perfect bio for your social media profiles? Look no further than ChatGPT's simple and free template!&lt;/p&gt;

&lt;p&gt;This user-friendly template offers a quick and easy solution to craft an engaging and impressive bio that reflects your personality and interests. Whether you're a seasoned influencer or just getting started, ChatGPT has everything you need to take your social media game to the next level. So why wait? Try this free template today and watch your online presence soar!&lt;/p&gt;

&lt;h2&gt;
  
  
  GPT Template for Your Social Media Profiles
&lt;/h2&gt;

&lt;p&gt;To get started, simply fill in the following details about yourself here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chat.openai.com/chat"&gt;https://chat.openai.com/chat&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Given this info about myself:

Name: 
Current position: 
Company: 
Stack: 

Roles: 
Interests: 
Looking For: 

1. Bio ( at least 3 paragraphs ) for my joinentre.com profile.
2. Short intro ( less than 160 characters) for my Twitter profile, no hashtags.
3. Short intro ( less than 80 characters) for TikTok, no hashtags.

Should be engaging, In first person.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Power of a Well-Crafted Bio
&lt;/h2&gt;

&lt;p&gt;An engaging bio can work wonders for your social media profiles. It not only showcases your skills, interests, and experiences but also helps to attract new followers and build a strong online presence.&lt;/p&gt;

&lt;p&gt;With ChatGPT's template, you can ensure that your bio is tailored for each platform and optimized for maximum impact.&lt;/p&gt;

</description>
      <category>gpt4</category>
      <category>socialmedia</category>
      <category>bio</category>
    </item>
    <item>
      <title>Build a Powerful GraphQL API with Postgres in Under 10 Minutes</title>
      <dc:creator>Juan Carlos del Valle</dc:creator>
      <pubDate>Fri, 07 Apr 2023 18:55:59 +0000</pubDate>
      <link>https://forem.com/imekinox/build-a-powerful-graphql-api-with-postgres-in-under-10-minutes-1pm1</link>
      <guid>https://forem.com/imekinox/build-a-powerful-graphql-api-with-postgres-in-under-10-minutes-1pm1</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/oX51rm3FsEo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;In this tutorial, you'll learn how to create a powerful GraphQL API using a relational database model and Postgres in under 10 minutes! We'll be setting up a Hasura engine, connecting it to a database, and exposing data through GraphQL. This is a great way to quickly develop a robust and scalable API for your applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up Hasura Engine and Postgres Database
&lt;/h2&gt;

&lt;p&gt;To start, we'll be using a tool called Hasura, which will serve as our GraphQL server. It requires a Postgres database, which we'll create using a Docker Compose file. This file will specify the Postgres version and the Hasura engine version we'll be using, as well as the ports and configurations needed to connect our database to the GraphQL API.&lt;/p&gt;

&lt;p&gt;First, create a docker-compose.yml file with the following content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: '3.6'
services:
  postgres:
    image: postgres:12
    restart: always
    ports:
    - "5432:5432"
    volumes:
    - db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: postgrespassword
  graphql-engine:
    image: hasura/graphql-engine:v2.21.0
    ports:
    - "8080:8080"
    depends_on:
    - "postgres"
    restart: always
    environment:
      ## postgres database to store Hasura metadata
      HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
      ## this env var can be used to add the above postgres database to Hasura as a data source. this can be removed/updated based on your needs
      PG_DATABASE_URL: postgres://postgres:postgrespassword@postgres:5432/postgres
      ## enable the console served by server
      HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
      ## enable debugging mode. It is recommended to disable this in production
      HASURA_GRAPHQL_DEV_MODE: "true"
      HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
      ## uncomment next line to run console offline (i.e load console assets from server instead of CDN)
      # HASURA_GRAPHQL_CONSOLE_ASSETS_DIR: /srv/console-assets
      ## uncomment next line to set an admin secret
      # HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
volumes:
  db_data:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;postgrespassword&lt;/code&gt; with a secure password of your choice. After that, run the following command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker-compose up -d  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command will pull the required images and start the services. Once everything is running, you can access the Hasura console on &lt;code&gt;localhost:8080&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up the Database
&lt;/h2&gt;

&lt;p&gt;We'll use a tool called Postico to connect to our Postgres database. Enter your database credentials (host, user, and password) and connect to the database. Create a new database called workouts_dev and configure Hasura to connect to this database.&lt;/p&gt;

&lt;p&gt;Now, we'll create the necessary tables in our database. In this example, we're creating tables for users, workouts, workouts_exercises, and exercises.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE users (
  id character varying(50) PRIMARY KEY,
  full_name character varying(256)
);

CREATE TABLE workouts (
    workout_id uuid DEFAULT gen_random_uuid() PRIMARY KEY,
    user_id character varying(50) (null),
    title character varying(256),
    description text
);

CREATE TABLE workouts_exercises (
    workout_id uuid REFERENCES workouts(workout_id),
    exercise_id uuid REFERENCES exercises(exercise_id),
    repetitions smallint DEFAULT 10,
    rest_time smallint DEFAULT 30
);

CREATE TABLE exercises (
    exercise_id uuid DEFAULT gen_random_uuid() PRIMARY KEY,
    image_url character varying(256),
    title character varying(256),
    description text,
    muscles character varying(50)[]
);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After setting up the tables and their relationships, our database is ready to be used with the GraphQL API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up the GraphQL API
&lt;/h2&gt;

&lt;p&gt;With the database connected to Hasura, we can start tracking the tables in our GraphQL API. This will allow us to access and manipulate the data in these tables using GraphQL queries and mutations.&lt;/p&gt;

&lt;p&gt;To track the tables, go to the Hasura console, navigate to the database settings, and click on "Reload All Databases." You should now see the tables you created earlier. Click on "Track" for each table to add them to your GraphQL API.&lt;br&gt;
Once the tables are tracked, you can start writing GraphQL queries and mutations to interact with your data. In this example, we inserted a new exercise and queried the data using GraphQL.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;As you can see, it's easy to set up a powerful GraphQL API with a Postgres database using Hasura. In the next part of this tutorial series, we'll dive deeper into configuration options and cover how to integrate the&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>hasura</category>
      <category>docker</category>
    </item>
    <item>
      <title>3 Top Features of JavaScript ES6: A Guide for Beginners</title>
      <dc:creator>Juan Carlos del Valle</dc:creator>
      <pubDate>Fri, 07 Apr 2023 18:14:02 +0000</pubDate>
      <link>https://forem.com/imekinox/3-top-features-of-javascript-es6-a-guide-for-beginners-1olp</link>
      <guid>https://forem.com/imekinox/3-top-features-of-javascript-es6-a-guide-for-beginners-1olp</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/lbPHE7u5JbU"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Welcome back to our JavaScript tutorial for beginners.&lt;/p&gt;

&lt;p&gt;In this video, Juan shares his top three features of JavaScript in the new ES6 specification. If you’re new to the language or the new specification, these three features will be helpful to make your code more readable and concise.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Destructuring Assignment
&lt;/h2&gt;

&lt;p&gt;Destructuring is a convenient way to extract elements from arrays or attributes from objects. It can make your code more readable and concise. Let’s see an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const arr = [1, 2, 3, 4, 5];

const [item1, item2, ...rest] = arr;

console.log(item1, item2, rest); // 1 2 [3, 4, 5]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, we use the destructuring syntax to extract the first two items of the array and the rest of the items in a new array. The same syntax can be used to extract properties from an object:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const person = {
  name: 'John',
  age: 30,
  city: 'New York',
};

const { name, age, ...other } = person;

console.log(name, age, other); // John 30 { city: 'New York' }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Default Parameters
&lt;/h2&gt;

&lt;p&gt;We can specify default parameters to our functions so that we can have default values for them. This is a pretty convenient way, especially when using TypeScript. Let’s see an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function greet(name = 'Juan', message = 'Welcome') {
  console.log(`${message} ${name}`);
}

greet(); // Welcome Juan
greet('John', 'Hello'); // Hello John
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, we use the default parameter syntax to set the default values for name and message. If we don't pass any arguments to the function, it will use the default values.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Template Literals
&lt;/h2&gt;

&lt;p&gt;Template literals provide an easy way to create strings with embedded expressions. It just makes it easier to concatenate data. Let’s see an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const name = 'John';
const message = `Welcome ${name}`;

console.log(message); // Welcome John
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, we use the template literal syntax to create a string with an embedded expression. This is a more concise way to concatenate strings than using the + operator.&lt;/p&gt;

&lt;p&gt;In conclusion, these are the three top features of JavaScript in the new ES6 specification. They are simple to use and can speed up your coding. Juan recommends using these features in your everyday coding. Thank you!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
