CINXE.COM

David Paluy - DEV Community

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>David Paluy - DEV Community</title> <meta name="last-updated" content="2024-11-26 11:16:56 UTC"> <meta name="user-signed-in" content="false"> <meta name="head-cached-at" content="1732619816"> <meta name="environment" content="production"> <link rel="stylesheet" href="https://assets.dev.to/assets/minimal-1029a3181a2002b43ea3fa90b914eb5dacfc0a92024c5addf6b57d9e589d6a96.css" media="all" id="main-minimal-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/views-64d5fff92cc913e57b90d60da8f10d00138c946bcd9212518cbdbd2fb73efe93.css" media="all" id="main-views-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/crayons-0a3711d92a5aeac98656e1629816ca6272674f32b83b3832df1a0588c877d33c.css" media="all" id="main-crayons-stylesheet" /> <script src="https://assets.dev.to/assets/base-8dcc8a97f0617dfbfe06690e34a9d71cb7dd6554611a24ec3f71fb6b96414828.js" defer="defer"></script> <script src="https://assets.dev.to/assets/application-147cebefc5c4cddde055e8f5eb0055e811469b08405170e2411fbd7944b5ac04.js" defer="defer"></script> <script src="https://assets.dev.to/assets/baseInitializers-bc498cfd7bb7d2a2da59d68d0b2055cc2dd26fee3669ab88edbb396d37bc3369.js" defer="defer"></script> <script src="https://assets.dev.to/assets/baseTracking-b6bf73e5ee66633e151e7d5b7c6bbccedfa4c59e3615be97b98c4c0f543ddae7.js" defer="defer"></script> <meta name="search-script" content="https://assets.dev.to/assets/Search-cc5e8a352578866203771def747f37c3ec6a0869de0458328e0fcba3d5d2fceb.js"> <link rel="canonical" href="https://dev.to/dpaluy" /> <meta name="description" content="&quot;Of course, I&#39;m an optimist - I don&#39;t see much point in being anything else.&quot; "> <meta name="keywords" content="software development, engineering, rails, javascript, ruby"> <meta property="og:type" content="website" /> <meta property="og:url" content="https://dev.to/dpaluy" /> <meta property="og:title" content="David Paluy — DEV Community Profile" /> <meta property="og:image" content="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3otvb2z646ytpt1hl2rv.jpg" /> <meta property="og:description" content="&quot;Of course, I&#39;m an optimist - I don&#39;t see much point in being anything else.&quot; " /> <meta property="og:site_name" content="DEV Community" /> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@thepracticaldev"> <meta name="twitter:creator" content="@dpaluy"> <meta name="twitter:title" content="David Paluy — DEV Community Profile"> <meta name="twitter:description" content="&quot;Of course, I&#39;m an optimist - I don&#39;t see much point in being anything else.&quot; "> <meta name="twitter:image:src" content="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3otvb2z646ytpt1hl2rv.jpg" /> <link rel="alternate" type="application/rss+xml" title="DEV Community RSS Feed" href="https://dev.to/feed/dpaluy" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <link rel="icon" type="image/x-icon" href="https://media2.dev.to/dynamic/image/width=32,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" /> <link rel="apple-touch-icon" href="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link rel="apple-touch-icon" sizes="152x152" href="https://media2.dev.to/dynamic/image/width=152,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link rel="apple-touch-icon" sizes="180x180" href="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link rel="apple-touch-icon" sizes="167x167" href="https://media2.dev.to/dynamic/image/width=167,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png"> <link href="https://media2.dev.to/dynamic/image/width=192,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" rel="icon" sizes="192x192" /> <link href="https://media2.dev.to/dynamic/image/width=128,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" rel="icon" sizes="128x128" /> <meta name="apple-mobile-web-app-title" content="dev.to"> <meta name="application-name" content="dev.to"> <meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)"> <meta name="theme-color" content="#000000" media="(prefers-color-scheme: dark)"> <link rel="search" href="https://dev.to/open-search.xml" type="application/opensearchdescription+xml" title="DEV Community" /> <meta property="forem:name" content="DEV Community" /> <meta property="forem:logo" content="https://media2.dev.to/dynamic/image/width=512,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" /> <meta property="forem:domain" content="dev.to" /> </head> <body class="sans-serif-article-body default-header" data-user-status="logged-out" data-community-name="DEV Community" data-subscription-icon="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png" data-locale="en" data-honeybadger-key="hbp_nqu4Y66HuEKlD6YRGssZuRQnPOjDm50J8Zkr" data-deployed-at="2024-11-25T21:32:44Z" data-latest-commit-id="aec77c3475441cb91f0da2dae7a6c0c95a8d7e3d" data-ga-tracking="UA-71991109-1" data-cookie-banner-user-context="logged_out_only" data-cookie-banner-platform-context="off" data-algolia-id="PRSOBFP46H" data-algolia-search-key="9aa7d31610cba78851c9b1f63776a9dd" data-algolia-display="true" data-ga4-tracking-id="G-TYEM8Y3JN3"> <link rel="stylesheet" href="https://assets.dev.to/assets/minimal-1029a3181a2002b43ea3fa90b914eb5dacfc0a92024c5addf6b57d9e589d6a96.css" media="all" id="secondary-minimal-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/views-64d5fff92cc913e57b90d60da8f10d00138c946bcd9212518cbdbd2fb73efe93.css" media="all" id="secondary-views-stylesheet" /> <link rel="stylesheet" href="https://assets.dev.to/assets/crayons-0a3711d92a5aeac98656e1629816ca6272674f32b83b3832df1a0588c877d33c.css" media="all" id="secondary-crayons-stylesheet" /> <div id="body-styles"> <style> :root { --accent-brand-lighter-rgb: 80, 99, 301; --accent-brand-rgb: 59, 73, 223; --accent-brand-darker-rgb: 47, 58, 178; } </style> </div> <div id="audiocontent" data-podcast=""> </div> <div class="navigation-progress" id="navigation-progress"></div> <header id="topbar" class="crayons-header topbar print-hidden"> <span id="route-change-target" tabindex="-1"></span> <a href="#main-content" class="skip-content-link">Skip to content</a> <div class="crayons-header__container"> <span class="inline-block m:hidden "> <button class="c-btn c-btn--icon-alone js-hamburger-trigger mx-2"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="apfg37qehtijj9npvaizl0bcgrdqvdxl" class="crayons-icon"><title id="apfg37qehtijj9npvaizl0bcgrdqvdxl">Navigation menu</title> <path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"></path> </svg> </button> </span> <a href="/" class="site-logo" aria-label="DEV Community Home"> <img class="site-logo__img" src="https://media2.dev.to/dynamic/image/quality=100/https://dev-to-uploads.s3.amazonaws.com/uploads/logos/resized_logo_UQww2soKuUsjaOGNB38o.png" style="aspect-ratio: 10 / 8" alt="DEV Community"> </a> <div class="crayons-header--search js-search-form" id="header-search"> <form accept-charset="UTF-8" method="get" action="/search" role="search"> <div class="crayons-fields crayons-fields--horizontal"> <div class="crayons-field flex-1 relative"> <input id="search-input" class="crayons-header--search-input crayons-textfield js-search-input" type="text" id="nav-search" name="q" placeholder="Search..." autocomplete="off" /> <button type="submit" aria-label="Search" class="c-btn c-btn--icon-alone absolute inset-px right-auto mt-0 py-0"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="a1z6ft8k2f51u2k3cuf478lvvc0sd822" aria-hidden="true" class="crayons-icon"><title id="a1z6ft8k2f51u2k3cuf478lvvc0sd822">Search</title> <path d="M18.031 16.617l4.283 4.282-1.415 1.415-4.282-4.283A8.96 8.96 0 0111 20c-4.968 0-9-4.032-9-9s4.032-9 9-9 9 4.032 9 9a8.96 8.96 0 01-1.969 5.617zm-2.006-.742A6.977 6.977 0 0018 11c0-3.868-3.133-7-7-7-3.868 0-7 3.132-7 7 0 3.867 3.132 7 7 7a6.977 6.977 0 004.875-1.975l.15-.15z"></path> </svg> </button> <a class="crayons-header--search-brand-indicator" href="https://www.algolia.com/developers/?utm_source=devto&utm_medium=referral" target="_blank" rel="noopener noreferrer"> Powered by <svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" width="24" height="24" viewBox="0 0 500 500.34" role="img" aria-labelledby="arg11vt4ypbpqvaawn9itdbnr0mxw08c" aria-hidden="true" class="crayons-icon"><title id="arg11vt4ypbpqvaawn9itdbnr0mxw08c">Search</title> <defs></defs><path class="cls-1" d="M250,0C113.38,0,2,110.16,.03,246.32c-2,138.29,110.19,252.87,248.49,253.67,42.71,.25,83.85-10.2,120.38-30.05,3.56-1.93,4.11-6.83,1.08-9.52l-23.39-20.74c-4.75-4.22-11.52-5.41-17.37-2.92-25.5,10.85-53.21,16.39-81.76,16.04-111.75-1.37-202.04-94.35-200.26-206.1,1.76-110.33,92.06-199.55,202.8-199.55h202.83V407.68l-115.08-102.25c-3.72-3.31-9.43-2.66-12.43,1.31-18.47,24.46-48.56,39.67-81.98,37.36-46.36-3.2-83.92-40.52-87.4-86.86-4.15-55.28,39.65-101.58,94.07-101.58,49.21,0,89.74,37.88,93.97,86.01,.38,4.28,2.31,8.28,5.53,11.13l29.97,26.57c3.4,3.01,8.8,1.17,9.63-3.3,2.16-11.55,2.92-23.6,2.07-35.95-4.83-70.39-61.84-127.01-132.26-131.35-80.73-4.98-148.23,58.18-150.37,137.35-2.09,77.15,61.12,143.66,138.28,145.36,32.21,.71,62.07-9.42,86.2-26.97l150.36,133.29c6.45,5.71,16.62,1.14,16.62-7.48V9.49C500,4.25,495.75,0,490.51,0H250Z"></path> </svg> Algolia </a> </div> </div> </form> </div> <div class="flex items-center h-100 ml-auto"> <a class="c-link c-link--icon-alone c-link--block m:hidden mx-1" id="search-link" aria-label="Search" href="/search"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="ap8rkhg2bfw0s3ualwufhki0y4go1yrn" class="crayons-icon"><title id="ap8rkhg2bfw0s3ualwufhki0y4go1yrn">Search</title> <path d="M18.031 16.617l4.283 4.282-1.415 1.415-4.282-4.283A8.96 8.96 0 0111 20c-4.968 0-9-4.032-9-9s4.032-9 9-9 9 4.032 9 9a8.96 8.96 0 01-1.969 5.617zm-2.006-.742A6.977 6.977 0 0018 11c0-3.868-3.133-7-7-7-3.868 0-7 3.132-7 7 0 3.867 3.132 7 7 7a6.977 6.977 0 004.875-1.975l.15-.15z"></path> </svg> </a> <div class="flex" id="authentication-top-nav-actions"> <span class="hidden m:block"> <a href="/enter" class="c-link c-link--block mr-2 whitespace-nowrap ml-auto" data-no-instant> Log in </a> </span> <a href="/enter?state=new-user" data-tracking-id="ca_top_nav" data-tracking-source="top_navbar" class="c-cta c-cta--branded whitespace-nowrap mr-2" data-no-instant> Create account </a> </div> </div> </div> </header> <div class="hamburger"> <div class="hamburger__content"> <header class="hamburger__content__header"> <h2 class="fs-l fw-bold flex-1 break-word lh-tight">DEV Community</h2> <button class="c-btn c-btn--icon-alone js-hamburger-trigger shrink-0" aria-label="Close"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="ab6cppyzgde4iuxpfozbde17g9dcdp0g" aria-hidden="true" class="crayons-icon c-btn__icon"><title id="ab6cppyzgde4iuxpfozbde17g9dcdp0g">Close</title><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636l4.95 4.95z"></path></svg> </button> </header> <div class="p-2 js-navigation-links-container" id="authentication-hamburger-actions"> </div> </div> <div class="hamburger__overlay js-hamburger-trigger"></div> </div> <div id="active-broadcast" class="broadcast-wrapper"></div> <div id="page-content" class="wrapper stories stories-index" data-current-page="stories-index"> <div id="page-content-inner" data-internal-nav="false"> <div id="page-route-change" class="screen-reader-only" aria-live="polite" aria-atomic="true"></div> <main id="main-content"> <script type="application/ld+json"> {"@context":"http://schema.org","@type":"Person","mainEntityOfPage":{"@type":"WebPage","@id":"https://dev.to/dpaluy"},"url":"https://dev.to/dpaluy","sameAs":["https://twitter.com/dpaluy","https://github.com/dpaluy","https://majesticlabs.dev"],"image":"https://media2.dev.to/dynamic/image/width=320,height=320,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png","name":"David Paluy","description":"\"Of course, I'm an optimist - I don't see much point in being anything else.\" "} </script> <style> :root { --profile-brand-color: #002a9e; } </style> <div class="brand-bg"> <div class="crayons-layout crayons-layout--limited-l pt-7 m:pt-9"> <header class="profile-header crayons-card mt-2"> <div class="relative profile-header__top"> <span class="crayons-avatar crayons-avatar--3xl"> <img src="https://media2.dev.to/dynamic/image/width=320,height=320,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" width="128" height="128" alt="David Paluy profile picture" class="crayons-avatar__image"> </span> <div class="profile-header__actions"> <button id="user-follow-butt" class="crayons-btn whitespace-nowrap follow-action-button follow-user" data-info='{&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'>Follow</button> <div class="profile-dropdown ml-2 s:relative hidden" data-username="dpaluy"> <button id="user-profile-dropdown" aria-expanded="false" aria-controls="user-profile-dropdownmenu" aria-haspopup="true" class="crayons-btn crayons-btn--ghost-dimmed crayons-btn--icon"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a5ul45uqhequbsyu4w4umycz7ucpqrqo" class="crayons-icon dropdown-icon"><title id="a5ul45uqhequbsyu4w4umycz7ucpqrqo">User actions</title><path fill-rule="evenodd" clip-rule="evenodd" d="M7 12a2 2 0 11-4 0 2 2 0 014 0zm7 0a2 2 0 11-4 0 2 2 0 014 0zm5 2a2 2 0 100-4 2 2 0 000 4z"></path></svg> </button> <div id="user-profile-dropdownmenu" class="crayons-dropdown left-2 right-2 s:right-0 s:left-auto top-100 mt-1"> <span class="report-abuse-link-wrapper" data-path="/report-abuse?url=https://dev.to/dpaluy"></span> </div> </div> </div> </div> <div class="profile-header__details" data-url="/users/145919"> <div class="items-center js-username-container mb-2"> <h1 class="crayons-title lh-tight"> David Paluy <span class="ml-2"></span> </h1> </div> <p class="fs-base profile-header__bio m:fs-l color-base-90 mb-4 mx-auto max-w-100 m:max-w-75">&quot;Of course, I&#39;m an optimist - I don&#39;t see much point in being anything else.&quot; </p> <div class="profile-header__meta"> <span class="profile-header__meta__item"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="a873ixzi24lu2mvbyv5kkry6r1j358o5" class="crayons-icon mr-2 shrink-0"><title id="a873ixzi24lu2mvbyv5kkry6r1j358o5">Location</title> <path d="M18.364 17.364L12 23.728l-6.364-6.364a9 9 0 1112.728 0zM12 13a2 2 0 100-4 2 2 0 000 4z"></path> </svg> <span> Austin, TX </span> </span> <span class="profile-header__meta__item"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="asp2ay061zwwxi0vj6joiisi17in38lo" class="crayons-icon mr-2 shrink-0"><title id="asp2ay061zwwxi0vj6joiisi17in38lo">Joined</title> <path d="M8 6v3.999h3V6h2v3.999h3V6h2v3.999L19 10a3 3 0 012.995 2.824L22 13v1c0 1.014-.377 1.94-.999 2.645L21 21a1 1 0 01-1 1H4a1 1 0 01-1-1v-4.36a4.025 4.025 0 01-.972-2.182l-.022-.253L2 14v-1a3 3 0 012.824-2.995L5 10l1-.001V6h2zm11 6H5a1 1 0 00-.993.883L4 13v.971l.003.147a2 2 0 003.303 1.4c.363-.312.602-.744.674-1.218l.015-.153.005-.176c.036-1.248 1.827-1.293 1.989-.134l.01.134.004.147a2 2 0 003.992.031l.012-.282c.124-1.156 1.862-1.156 1.986 0l.012.282a2 2 0 003.99 0L20 14v-1a1 1 0 00-.883-.993L19 12zM7 1c1.32.871 1.663 2.088 1.449 2.888a1.5 1.5 0 11-2.898-.776C5.85 2.002 7 2.5 7 1zm5 0c1.32.871 1.663 2.088 1.449 2.888a1.5 1.5 0 01-2.898-.776C10.85 2.002 12 2.5 12 1zm5 0c1.32.871 1.663 2.088 1.449 2.888a1.5 1.5 0 01-2.898-.776C15.85 2.002 17 2.5 17 1z"></path> </svg> <span> Joined on <time datetime="2019-03-15T17:33:27Z" class="date">Mar 15, 2019</time> </span> </span> <a href="https://majesticlabs.dev" target="_blank" rel="noopener me ugc" class="profile-header__meta__item"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="aozhm8d28fqjp4wct88g0gd14wjm0h31" class="crayons-icon mr-2 shrink-0"><title id="aozhm8d28fqjp4wct88g0gd14wjm0h31">Personal website</title><path d="M10.667 8v1.333H7.333v7.334h7.334v-3.334H16v4a.666.666 0 01-.667.667H6.667A.666.666 0 016 17.333V8.667A.667.667 0 016.667 8h4zM18 6v5.333h-1.333V8.275l-5.196 5.196-.942-.942 5.194-5.196h-3.056V6H18z"></path></svg> <span> https://majesticlabs.dev </span> </a> <a href="https://github.com/dpaluy" target="_blank" rel="noopener me" class="profile-header__meta__item p-1"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="a74d6tw6wgtrponefmaah3bw7obhultp" class="crayons-icon shrink-0"><title id="a74d6tw6wgtrponefmaah3bw7obhultp">github website</title> <path d="M12 2C6.475 2 2 6.475 2 12a9.994 9.994 0 006.838 9.488c.5.087.687-.213.687-.476 0-.237-.013-1.024-.013-1.862-2.512.463-3.162-.612-3.362-1.175-.113-.288-.6-1.175-1.025-1.413-.35-.187-.85-.65-.013-.662.788-.013 1.35.725 1.538 1.025.9 1.512 2.338 1.087 2.912.825.088-.65.35-1.087.638-1.337-2.225-.25-4.55-1.113-4.55-4.938 0-1.088.387-1.987 1.025-2.688-.1-.25-.45-1.275.1-2.65 0 0 .837-.262 2.75 1.026a9.28 9.28 0 012.5-.338c.85 0 1.7.112 2.5.337 1.912-1.3 2.75-1.024 2.75-1.024.55 1.375.2 2.4.1 2.65.637.7 1.025 1.587 1.025 2.687 0 3.838-2.337 4.688-4.562 4.938.362.312.675.912.675 1.85 0 1.337-.013 2.412-.013 2.75 0 .262.188.574.688.474A10.016 10.016 0 0022 12c0-5.525-4.475-10-10-10z"></path> </svg> </a> <a href="https://twitter.com/dpaluy" target="_blank" rel="noopener me" class="profile-header__meta__item p-1"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="aatog22f8qjvau2n815oiy5b4uujl041" class="crayons-icon shrink-0"><title id="aatog22f8qjvau2n815oiy5b4uujl041">twitter website</title> <path d="M14.095479,10.316482L22.286354,1h-1.940718l-7.115352,8.087682L7.551414,1H1l8.589488,12.231093L1,23h1.940717l7.509372-8.542861L16.448587,23H23L14.095479,10.316482z M11.436522,13.338465l-0.871624-1.218704l-6.924311-9.68815h2.981339l5.58978,7.82155l0.867949,1.218704l7.26506,10.166271h-2.981339L11.436522,13.338465z"></path> </svg> </a> </div> </div> <div class="p-3 block m:hidden js-user-info-trigger-wrapper"> <button type="button" class="my-3 crayons-btn crayons-btn--outlined w-100 js-user-info-trigger">More info about @dpaluy</button> </div> </header> </div> </div> <div class="crayons-layout crayons-layout--limited-l crayons-layout--2-cols crayons-layout--2-cols--1-2 pt-4 m:pt-0" id="index-container" data-params="{&quot;user_id&quot;:145919,&quot;class_name&quot;:&quot;Article&quot;,&quot;sort_by&quot;:&quot;published_at&quot;,&quot;sort_direction&quot;:&quot;desc&quot;}" data-which="articles" data-tag="" data-feed="base-feed" data-articles-since="0"> <div class="crayons-layout__sidebar-left crayons-layout__content"> <div class="m:gap-4 hidden m:grid js-user-info"> <div class="crayons-card crayons-card--secondary"> <header class="crayons-card__header"> <h3 class="crayons-subtitle-3">Badges</h3> </header> <div class="crayons-card__body"> <div class="grid gap-4 grid-cols-3 s:grid-cols-4 m:grid-cols-2 align-center items-center js-profile-badges"> <div role="button" onclick="window.Forem.showModal({size: 'medium', showHeader: false, contentSelector: '#badge-91', overlay: true})" title="Five Year Club" class="js-profile-badge relative"> <img src="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F91%2FVersion2-04.png" alt="Five Year Club" class="mx-auto w-75 h-auto align-middle" style="object-fit: contain; cursor: pointer; width: 100%; aspect-ratio: 1 / 1; max-width: 80px;" loading="lazy" /> </div> <div id="badge-91" class="hidden"> <div class="badge_details"> <div class="badge-image-container p-3"> <img class="badge-image" src="https://media2.dev.to/dynamic/image/width=192,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F91%2FVersion2-04.png" alt="Five Year Club badge" title="Five Year Club" loading="lazy" /> </div> <div class="badge_text_content"> <h4 class="title fw-800 fs-l">Five Year Club</h4> <p class="description">This badge celebrates the longevity of those who have been a registered member of the DEV Community for at least five years.</p> <button class="got-it-btn items-start c-btn c-btn--primary" onclick="window.Forem.closeModal()">Got it</button> </div> <div class="close" onclick="window.Forem.closeModal()"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-hidden="true" class="close_icon"><title>Close</title><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636l4.95 4.95z"></path></svg> </div> </div> </div> <div role="button" onclick="window.Forem.showModal({size: 'medium', showHeader: false, contentSelector: '#badge-280', overlay: true})" title="Writing Debut" class="js-profile-badge relative"> <img src="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F280%2FWriting_Streak_Badges-05.png" alt="Writing Debut" class="mx-auto w-75 h-auto align-middle" style="object-fit: contain; cursor: pointer; width: 100%; aspect-ratio: 1 / 1; max-width: 80px;" loading="lazy" /> </div> <div id="badge-280" class="hidden"> <div class="badge_details"> <div class="badge-image-container p-3"> <img class="badge-image" src="https://media2.dev.to/dynamic/image/width=192,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F280%2FWriting_Streak_Badges-05.png" alt="Writing Debut badge" title="Writing Debut" loading="lazy" /> </div> <div class="badge_text_content"> <h4 class="title fw-800 fs-l">Writing Debut</h4> <p class="description">Awarded for writing and sharing your first DEV post! Continue sharing your work to earn the 4 Week Writing Streak Badge.</p> <button class="got-it-btn items-start c-btn c-btn--primary" onclick="window.Forem.closeModal()">Got it</button> </div> <div class="close" onclick="window.Forem.closeModal()"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-hidden="true" class="close_icon"><title>Close</title><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636l4.95 4.95z"></path></svg> </div> </div> </div> <div role="button" onclick="window.Forem.showModal({size: 'medium', showHeader: false, contentSelector: '#badge-75', overlay: true})" title="Four Year Club" class="js-profile-badge relative"> <img src="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F75%2FVersion2-05.png" alt="Four Year Club" class="mx-auto w-75 h-auto align-middle" style="object-fit: contain; cursor: pointer; width: 100%; aspect-ratio: 1 / 1; max-width: 80px;" loading="lazy" /> </div> <div id="badge-75" class="hidden"> <div class="badge_details"> <div class="badge-image-container p-3"> <img class="badge-image" src="https://media2.dev.to/dynamic/image/width=192,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F75%2FVersion2-05.png" alt="Four Year Club badge" title="Four Year Club" loading="lazy" /> </div> <div class="badge_text_content"> <h4 class="title fw-800 fs-l">Four Year Club</h4> <p class="description">This badge celebrates the longevity of those who have been a registered member of the DEV Community for at least four years.</p> <button class="got-it-btn items-start c-btn c-btn--primary" onclick="window.Forem.closeModal()">Got it</button> </div> <div class="close" onclick="window.Forem.closeModal()"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-hidden="true" class="close_icon"><title>Close</title><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636l4.95 4.95z"></path></svg> </div> </div> </div> <div role="button" onclick="window.Forem.showModal({size: 'medium', showHeader: false, contentSelector: '#badge-10', overlay: true})" title="Three Year Club" class="js-profile-badge relative"> <img src="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F10%2FVersion2-06.png" alt="Three Year Club" class="mx-auto w-75 h-auto align-middle" style="object-fit: contain; cursor: pointer; width: 100%; aspect-ratio: 1 / 1; max-width: 80px;" loading="lazy" /> </div> <div id="badge-10" class="hidden"> <div class="badge_details"> <div class="badge-image-container p-3"> <img class="badge-image" src="https://media2.dev.to/dynamic/image/width=192,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F10%2FVersion2-06.png" alt="Three Year Club badge" title="Three Year Club" loading="lazy" /> </div> <div class="badge_text_content"> <h4 class="title fw-800 fs-l">Three Year Club</h4> <p class="description">This badge celebrates the longevity of those who have been a registered member of the DEV Community for at least three years.</p> <button class="got-it-btn items-start c-btn c-btn--primary" onclick="window.Forem.closeModal()">Got it</button> </div> <div class="close" onclick="window.Forem.closeModal()"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-hidden="true" class="close_icon"><title>Close</title><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636l4.95 4.95z"></path></svg> </div> </div> </div> <div role="button" onclick="window.Forem.showModal({size: 'medium', showHeader: false, contentSelector: '#badge-9', overlay: true})" title="Two Year Club" class="js-profile-badge relative"> <img src="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F9%2FVersion2-07.png" alt="Two Year Club" class="mx-auto w-75 h-auto align-middle" style="object-fit: contain; cursor: pointer; width: 100%; aspect-ratio: 1 / 1; max-width: 80px;" loading="lazy" /> </div> <div id="badge-9" class="hidden"> <div class="badge_details"> <div class="badge-image-container p-3"> <img class="badge-image" src="https://media2.dev.to/dynamic/image/width=192,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F9%2FVersion2-07.png" alt="Two Year Club badge" title="Two Year Club" loading="lazy" /> </div> <div class="badge_text_content"> <h4 class="title fw-800 fs-l">Two Year Club</h4> <p class="description">This badge celebrates the longevity of those who have been a registered member of the DEV Community for at least two years.</p> <button class="got-it-btn items-start c-btn c-btn--primary" onclick="window.Forem.closeModal()">Got it</button> </div> <div class="close" onclick="window.Forem.closeModal()"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-hidden="true" class="close_icon"><title>Close</title><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636l4.95 4.95z"></path></svg> </div> </div> </div> <div role="button" onclick="window.Forem.showModal({size: 'medium', showHeader: false, contentSelector: '#badge-2', overlay: true})" title="One Year Club" class="js-profile-badge relative"> <img src="https://media2.dev.to/dynamic/image/width=180,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F2%2FVersion2-08.png" alt="One Year Club" class="mx-auto w-75 h-auto align-middle" style="object-fit: contain; cursor: pointer; width: 100%; aspect-ratio: 1 / 1; max-width: 80px;" loading="lazy" /> </div> <div id="badge-2" class="hidden"> <div class="badge_details"> <div class="badge-image-container p-3"> <img class="badge-image" src="https://media2.dev.to/dynamic/image/width=192,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fbadge%2Fbadge_image%2F2%2FVersion2-08.png" alt="One Year Club badge" title="One Year Club" loading="lazy" /> </div> <div class="badge_text_content"> <h4 class="title fw-800 fs-l">One Year Club</h4> <p class="description">This badge celebrates the longevity of those who have been a registered member of the DEV Community for at least one year.</p> <button class="got-it-btn items-start c-btn c-btn--primary" onclick="window.Forem.closeModal()">Got it</button> </div> <div class="close" onclick="window.Forem.closeModal()"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" aria-hidden="true" class="close_icon"><title>Close</title><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636l4.95 4.95z"></path></svg> </div> </div> </div> </div> </div> </div> <div class="crayons-card crayons-card--secondary p-4"> <div class="flex items-center mb-4"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="aug6qb8r0kluvfttdrptz76z9ng7qth" class="crayons-icon mr-3 color-base-50"><title id="aug6qb8r0kluvfttdrptz76z9ng7qth">Post</title> <path d="M19 22H5a3 3 0 01-3-3V3a1 1 0 011-1h14a1 1 0 011 1v12h4v4a3 3 0 01-3 3zm-1-5v2a1 1 0 002 0v-2h-2zm-2 3V4H4v15a1 1 0 001 1h11zM6 7h8v2H6V7zm0 4h8v2H6v-2zm0 4h5v2H6v-2z"></path> </svg> 17 posts published </div> <div class="flex items-center mb-4"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="ai1nsku0vlncchramshg0u2y4r5cawsq" class="crayons-icon mr-3 color-base-50"><title id="ai1nsku0vlncchramshg0u2y4r5cawsq">Comment</title> <path d="M10 3h4a8 8 0 010 16v3.5c-5-2-12-5-12-11.5a8 8 0 018-8zm2 14h2a6 6 0 000-12h-4a6 6 0 00-6 6c0 3.61 2.462 5.966 8 8.48V17z"></path> </svg> 1 comment written </div> <div class="flex items-center"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" role="img" aria-labelledby="aox85tksydw45qf8f69bzocy5v1g6hww" class="crayons-icon mr-3 color-base-50"><title id="aox85tksydw45qf8f69bzocy5v1g6hww">Tag</title> <path d="M7.784 14l.42-4H4V8h4.415l.525-5h2.011l-.525 5h3.989l.525-5h2.011l-.525 5H20v2h-3.784l-.42 4H20v2h-4.415l-.525 5h-2.011l.525-5H9.585l-.525 5H7.049l.525-5H4v-2h3.784zm2.011 0h3.99l.42-4h-3.99l-.42 4z"></path> </svg> 4 tags followed </div> </div> </div> </div> <main class="crayons-layout__content articles-list" id="articles-list"> <div class="substories" id="substories"> <div class="crayons-story " data-feed-content-id="2116595" data-content-user-id="145919"> <a href="/dpaluy/leveraging-ai-tools-for-modern-web-development-2k2c" aria-labelledby="article-link-2116595" class="crayons-story__hidden-navigation-link">Leveraging AI Tools for Modern Web Development</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2116595" aria-controls="story-author-preview-content-2116595" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-2116595" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/leveraging-ai-tools-for-modern-web-development-2k2c" class="crayons-story__tertiary fs-xs"><time datetime="2024-11-22T09:22:52Z">Nov 22</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1732267372"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/leveraging-ai-tools-for-modern-web-development-2k2c" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5s77m67ly5prmvkrvpkl.jpeg" id="article-link-2116595"> Leveraging AI Tools for Modern Web Development </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/aicodeworkflow"><span class="crayons-tag__prefix">#</span>aicodeworkflow</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/promptengineering"><span class="crayons-tag__prefix">#</span>promptengineering</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/webdevautomation"><span class="crayons-tag__prefix">#</span>webdevautomation</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/leveraging-ai-tools-for-modern-web-development-2k2c#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Leveraging AI Tools for Modern Web Development"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a7qa2xlm1vvlgfo0nx7fez4lj88fcdwf" class="crayons-icon"><title id="a7qa2xlm1vvlgfo0nx7fez4lj88fcdwf">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 4 min read </small> </div> </div> </div> </div> </div> <div id="comments-locked-cta" class="crayons-card mt-2 m:mt-0 mb-2 m:p-8 p-4"> <div class="align-center"> <svg xmlns="http://www.w3.org/2000/svg" width="132" height="102" viewBox="0 0 132 102" fill="none" aria-hidden="true"> <g filter="url(#a)"> <rect y="6" width="128" height="92" rx="8" fill="url(#b)"></rect> <rect x=".5" y="6.5" width="127" height="91" rx="7.5" stroke="#171717"></rect> </g> <path d="M.5 14A7.5 7.5 0 0 1 8 6.5h112a7.5 7.5 0 0 1 7.5 7.5v11.5H.5V14Z" fill="url(#c)" stroke="#171717"></path> <path opacity=".2" d="M13 63h27v2H13v-2ZM13 70h21v2H13v-2ZM13 77h28v2H13v-2ZM13 84h24v2H13v-2Z" fill="#171717"></path> <g filter="url(#d)"> <circle cx="64" cy="24" r="24" fill="url(#e)"></circle> <circle cx="64" cy="24" r="23.571" stroke="#171717" stroke-width=".857"></circle> </g> <circle cx="64" cy="16.286" r="5.571" fill="url(#f)" stroke="#171717" stroke-width=".857"></circle> <path d="M75.571 33.03c0 1.32-.535 2.285-1.373 3.008-.854.736-2.033 1.23-3.306 1.552-2.545.645-5.319.569-6.174.525a5.576 5.576 0 0 0-.579 0c-.855.044-3.629.12-6.174-.525-1.273-.322-2.452-.816-3.305-1.552-.84-.723-1.374-1.688-1.374-3.009 0-3.077 1.237-5.424 3.228-7.012 2-1.596 4.792-2.446 7.915-2.446 3.122 0 5.913.85 7.915 2.446 1.99 1.588 3.227 3.936 3.227 7.012Z" fill="url(#g)" stroke="#171717" stroke-width=".857"></path> <path d="M49.5 64a3.5 3.5 0 0 1 3.5-3.5h64a3.5 3.5 0 0 1 3.5 3.5v33.5h-71V64Z" fill="url(#h)" stroke="#171717"></path> <circle cx="59" cy="72" r="3.5" fill="#A7F3D0" stroke="#171717"></circle> <path fill="#171717" d="M66 71h20v2H66z"></path> <path opacity=".2" d="M66 80h30v2H66v-2ZM66 87h44v2H66v-2Z" fill="#171717"></path> <defs> <linearGradient id="b" x1="64" y1="6" x2="64" y2="98" gradientUnits="userSpaceOnUse"> <stop offset=".736" stop-color="#fff"></stop> <stop offset="1" stop-color="#D7D7D7"></stop> </linearGradient> <linearGradient id="c" x1="64" y1="6" x2="64" y2="98" gradientUnits="userSpaceOnUse"> <stop offset=".736" stop-color="#fff"></stop> <stop offset="1" stop-color="#D7D7D7"></stop> </linearGradient> <linearGradient id="e" x1="64" y1="0" x2="64" y2="48" gradientUnits="userSpaceOnUse"> <stop stop-color="#FFE89E"></stop> <stop offset="1" stop-color="#FFC50A"></stop> </linearGradient> <linearGradient id="f" x1="64" y1="10.286" x2="64" y2="23.623" gradientUnits="userSpaceOnUse"> <stop offset=".292" stop-color="#fff"></stop> <stop offset="1" stop-color="#E7E7E7"></stop> </linearGradient> <linearGradient id="g" x1="64.429" y1="23.143" x2="64.429" y2="40.291" gradientUnits="userSpaceOnUse"> <stop offset=".292" stop-color="#fff"></stop> <stop offset="1" stop-color="#E7E7E7"></stop> </linearGradient> <linearGradient id="h" x1="85" y1="52" x2="85" y2="114" gradientUnits="userSpaceOnUse"> <stop offset=".292" stop-color="#fff"></stop> <stop offset="1" stop-color="#E7E7E7"></stop> </linearGradient> <filter id="a" x="0" y="6" width="132" height="96" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood> <feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"></feColorMatrix> <feOffset dx="4" dy="4"></feOffset> <feComposite in2="hardAlpha" operator="out"></feComposite> <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0"></feColorMatrix> <feBlend in2="BackgroundImageFix" result="effect1_dropShadow_811_2367"></feBlend> <feBlend in="SourceGraphic" in2="effect1_dropShadow_811_2367" result="shape"></feBlend> </filter> <filter id="d" x="40" y="0" width="51.429" height="51.429" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood> <feColorMatrix in="SourceAlpha" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"></feColorMatrix> <feOffset dx="3.429" dy="3.429"></feOffset> <feComposite in2="hardAlpha" operator="out"></feComposite> <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0"></feColorMatrix> <feBlend in2="BackgroundImageFix" result="effect1_dropShadow_811_2367"></feBlend> <feBlend in="SourceGraphic" in2="effect1_dropShadow_811_2367" result="shape"></feBlend> </filter> </defs> </svg> </div> <h3 class="crayons-subtitle-3 mt-5 fs-l align-center"> Want to connect with David Paluy? </h3> <p class="align-center mt-1 color-base-60 fs-base"> Create an account to connect with David Paluy. You can also sign in below to proceed if you already have an account. </p> <div class="align-center mt-4"> <a href="/enter?state=new-user" class="crayons-btn crayons-btn--l w-75" data-tracking-id="ca_profile_comment_section_locked" data-tracking-source="comments_locked_cta" data-no-instant> Create Account </a> </div> <div class="align-center mt-4"> <span> Already have an account? <a href="/enter" data-tracking-id="si_profile_comment_section_locked" data-tracking-source="comments_locked_cta"> Sign in </a> </span> </div> </div> <div class="crayons-story " data-feed-content-id="2084366" data-content-user-id="145919"> <a href="/dpaluy/make-master-branch-default-again-3d52" aria-labelledby="article-link-2084366" class="crayons-story__hidden-navigation-link">Make master Branch Default Again</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2084366" aria-controls="story-author-preview-content-2084366" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-2084366" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/make-master-branch-default-again-3d52" class="crayons-story__tertiary fs-xs"><time datetime="2024-11-07T16:11:35Z">Nov 7</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1730995895"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/make-master-branch-default-again-3d52" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk74qt0d4cgdtl6ezketb.jpeg" id="article-link-2084366"> Make master Branch Default Again </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(245, 77, 39, 0.10); --tag-prefix: #F54D27; --tag-bg-hover: rgba(245, 77, 39, 0.10); --tag-prefix-hover: #F54D27; " href="/t/git"><span class="crayons-tag__prefix">#</span>git</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(0, 0, 0, 0.10); --tag-prefix: #000000; --tag-bg-hover: rgba(0, 0, 0, 0.10); --tag-prefix-hover: #000000; " href="/t/github"><span class="crayons-tag__prefix">#</span>github</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/master"><span class="crayons-tag__prefix">#</span>master</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/dothingsthatmatter"><span class="crayons-tag__prefix">#</span>dothingsthatmatter</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/make-master-branch-default-again-3d52" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2084366" aria-label="Add a comment to post - Make master Branch Default Again"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">4<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="/dpaluy/make-master-branch-default-again-3d52#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Make master Branch Default Again"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ahty0g8udfidkoqm6mrgo18bxmvz2wh4" class="crayons-icon"><title id="ahty0g8udfidkoqm6mrgo18bxmvz2wh4">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> 13<span class="hidden s:inline"> comments</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2079996" data-content-user-id="145919"> <a href="/dpaluy/implement-a-secure-dynamic-domain-approval-system-for-embeddable-widgets-in-ruby-on-rails-2f53" aria-labelledby="article-link-2079996" class="crayons-story__hidden-navigation-link">Implement a Secure, Dynamic Domain Approval System for Embeddable Widgets in Ruby on Rails</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2079996" aria-controls="story-author-preview-content-2079996" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-2079996" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/implement-a-secure-dynamic-domain-approval-system-for-embeddable-widgets-in-ruby-on-rails-2f53" class="crayons-story__tertiary fs-xs"><time datetime="2024-11-06T00:48:43Z">Nov 6</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1730854123"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/implement-a-secure-dynamic-domain-approval-system-for-embeddable-widgets-in-ruby-on-rails-2f53" data-preload-image="" id="article-link-2079996"> Implement a Secure, Dynamic Domain Approval System for Embeddable Widgets in Ruby on Rails </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(204, 0, 0, 0.10); --tag-prefix: #cc0000; --tag-bg-hover: rgba(204, 0, 0, 0.10); --tag-prefix-hover: #cc0000; " href="/t/rails"><span class="crayons-tag__prefix">#</span>rails</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/widget"><span class="crayons-tag__prefix">#</span>widget</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(27, 172, 128, 0.10); --tag-prefix: #1bac80; --tag-bg-hover: rgba(27, 172, 128, 0.10); --tag-prefix-hover: #1bac80; " href="/t/security"><span class="crayons-tag__prefix">#</span>security</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/embed"><span class="crayons-tag__prefix">#</span>embed</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/implement-a-secure-dynamic-domain-approval-system-for-embeddable-widgets-in-ruby-on-rails-2f53#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Implement a Secure, Dynamic Domain Approval System for Embeddable Widgets in Ruby on Rails"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a7qldlhm5udild4lq3s1bdiusuw4mr3j" class="crayons-icon"><title id="a7qldlhm5udild4lq3s1bdiusuw4mr3j">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2079834" data-content-user-id="145919"> <a href="/dpaluy/embed-js-widgets-smoothly-with-rails-a-step-by-step-guide-fpk" aria-labelledby="article-link-2079834" class="crayons-story__hidden-navigation-link">Embed JS Widgets with Rails: A Step-by-Step Guide</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2079834" aria-controls="story-author-preview-content-2079834" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-2079834" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/embed-js-widgets-smoothly-with-rails-a-step-by-step-guide-fpk" class="crayons-story__tertiary fs-xs"><time datetime="2024-11-05T21:12:00Z">Nov 5</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1730841120"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/embed-js-widgets-smoothly-with-rails-a-step-by-step-guide-fpk" data-preload-image="" id="article-link-2079834"> Embed JS Widgets with Rails: A Step-by-Step Guide </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(204, 0, 0, 0.10); --tag-prefix: #cc0000; --tag-bg-hover: rgba(204, 0, 0, 0.10); --tag-prefix-hover: #cc0000; " href="/t/rails"><span class="crayons-tag__prefix">#</span>rails</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(247, 223, 30, 0.10); --tag-prefix: #f7df1e; --tag-bg-hover: rgba(247, 223, 30, 0.10); --tag-prefix-hover: #f7df1e; " href="/t/javascript"><span class="crayons-tag__prefix">#</span>javascript</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/embed"><span class="crayons-tag__prefix">#</span>embed</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/widget"><span class="crayons-tag__prefix">#</span>widget</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/embed-js-widgets-smoothly-with-rails-a-step-by-step-guide-fpk" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2079834" aria-label="Add a comment to post - Embed JS Widgets with Rails: A Step-by-Step Guide"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="/dpaluy/embed-js-widgets-smoothly-with-rails-a-step-by-step-guide-fpk#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Embed JS Widgets with Rails: A Step-by-Step Guide"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="afw6ko02q1h4rfnf48oo3vfc2bnrtp02" class="crayons-icon"><title id="afw6ko02q1h4rfnf48oo3vfc2bnrtp02">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 5 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2073353" data-content-user-id="145919"> <a href="/dpaluy/using-cursorai-as-your-developer-companion-a-complete-guide-54gd" aria-labelledby="article-link-2073353" class="crayons-story__hidden-navigation-link">Using CursorAI as Your Developer Companion: A Complete Guide</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2073353" aria-controls="story-author-preview-content-2073353" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-2073353" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/using-cursorai-as-your-developer-companion-a-complete-guide-54gd" class="crayons-story__tertiary fs-xs"><time datetime="2024-11-02T23:22:31Z">Nov 2</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1730589751"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/using-cursorai-as-your-developer-companion-a-complete-guide-54gd" data-preload-image="" id="article-link-2073353"> Using CursorAI as Your Developer Companion: A Complete Guide </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/cursor"><span class="crayons-tag__prefix">#</span>cursor</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(23, 253, 26, 0.10); --tag-prefix: #17fd1a; --tag-bg-hover: rgba(23, 253, 26, 0.10); --tag-prefix-hover: #17fd1a; " href="/t/ai"><span class="crayons-tag__prefix">#</span>ai</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(42, 7, 152, 0.10); --tag-prefix: #2A0798; --tag-bg-hover: rgba(42, 7, 152, 0.10); --tag-prefix-hover: #2A0798; " href="/t/productivity"><span class="crayons-tag__prefix">#</span>productivity</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/code"><span class="crayons-tag__prefix">#</span>code</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/using-cursorai-as-your-developer-companion-a-complete-guide-54gd" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="2073353" aria-label="Add a comment to post - Using CursorAI as Your Developer Companion: A Complete Guide"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">3<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="/dpaluy/using-cursorai-as-your-developer-companion-a-complete-guide-54gd#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Using CursorAI as Your Developer Companion: A Complete Guide"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a31j9p3i65rnh24qhmkkbdnam0a22kqe" class="crayons-icon"><title id="a31j9p3i65rnh24qhmkkbdnam0a22kqe">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="2073265" data-content-user-id="145919"> <a href="/dpaluy/testing-external-services-with-rspec-vcr-and-webmock-in-ruby-on-rails-4ndo" aria-labelledby="article-link-2073265" class="crayons-story__hidden-navigation-link">Testing External Services with RSpec, VCR, and WebMock in Ruby on Rails</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-2073265" aria-controls="story-author-preview-content-2073265" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-2073265" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/testing-external-services-with-rspec-vcr-and-webmock-in-ruby-on-rails-4ndo" class="crayons-story__tertiary fs-xs"><time datetime="2024-11-02T22:20:05Z">Nov 2</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1730586005"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/testing-external-services-with-rspec-vcr-and-webmock-in-ruby-on-rails-4ndo" data-preload-image="" id="article-link-2073265"> Testing External Services with RSpec, VCR, and WebMock in Ruby on Rails </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/rspec"><span class="crayons-tag__prefix">#</span>rspec</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(204, 0, 0, 0.10); --tag-prefix: #cc0000; --tag-bg-hover: rgba(204, 0, 0, 0.10); --tag-prefix-hover: #cc0000; " href="/t/rails"><span class="crayons-tag__prefix">#</span>rails</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/vcr"><span class="crayons-tag__prefix">#</span>vcr</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/webmock"><span class="crayons-tag__prefix">#</span>webmock</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/testing-external-services-with-rspec-vcr-and-webmock-in-ruby-on-rails-4ndo#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Testing External Services with RSpec, VCR, and WebMock in Ruby on Rails"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="ap5rbuyoiw0fvnxj945ckultqpq3j2a6" class="crayons-icon"><title id="ap5rbuyoiw0fvnxj945ckultqpq3j2a6">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 3 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="1920153" data-content-user-id="145919"> <a href="/dpaluy/unlocking-protected-pdfs-99b" aria-labelledby="article-link-1920153" class="crayons-story__hidden-navigation-link">Unlocking Protected PDFs</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media.dev.to/cdn-cgi/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-1920153" aria-controls="story-author-preview-content-1920153" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-1920153" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media.dev.to/cdn-cgi/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/unlocking-protected-pdfs-99b" class="crayons-story__tertiary fs-xs"><time datetime="2024-07-11T20:12:42Z">Jul 11</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1720728762"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/unlocking-protected-pdfs-99b" data-preload-image="" id="article-link-1920153"> Unlocking Protected PDFs </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(247, 223, 30, 0.10); --tag-prefix: #f7df1e; --tag-bg-hover: rgba(247, 223, 30, 0.10); --tag-prefix-hover: #f7df1e; " href="/t/javascript"><span class="crayons-tag__prefix">#</span>javascript</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/googledrive"><span class="crayons-tag__prefix">#</span>googledrive</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/pdf"><span class="crayons-tag__prefix">#</span>pdf</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/unlocking-protected-pdfs-99b" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="1920153" aria-label="Add a comment to post - Unlocking Protected PDFs"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="/dpaluy/unlocking-protected-pdfs-99b#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Unlocking Protected PDFs"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a4swky208dzqhjncjgj9ygz7x4cbzot" class="crayons-icon"><title id="a4swky208dzqhjncjgj9ygz7x4cbzot">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="1369854" data-content-user-id="145919"> <a href="/dpaluy/rails-migration-custom-direction-action-1a2h" aria-labelledby="article-link-1369854" class="crayons-story__hidden-navigation-link">Rails Migration custom Direction Action</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-1369854" aria-controls="story-author-preview-content-1369854" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-1369854" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/rails-migration-custom-direction-action-1a2h" class="crayons-story__tertiary fs-xs"><time datetime="2023-02-17T20:04:17Z">Feb 17 &#39;23</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1676664257"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/rails-migration-custom-direction-action-1a2h" data-preload-image="" id="article-link-1369854"> Rails Migration custom Direction Action </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(204, 0, 0, 0.10); --tag-prefix: #cc0000; --tag-bg-hover: rgba(204, 0, 0, 0.10); --tag-prefix-hover: #cc0000; " href="/t/rails"><span class="crayons-tag__prefix">#</span>rails</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/migration"><span class="crayons-tag__prefix">#</span>migration</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/rails-migration-custom-direction-action-1a2h" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="1369854" aria-label="Add a comment to post - Rails Migration custom Direction Action"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">1<span class="hidden s:inline"> reaction</span></span> </div> </a> <a href="/dpaluy/rails-migration-custom-direction-action-1a2h#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Rails Migration custom Direction Action"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a2icz9urrsy746ct1knnfuiuvxwbazae" class="crayons-icon"><title id="a2icz9urrsy746ct1knnfuiuvxwbazae">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="1310426" data-content-user-id="145919"> <a href="/dpaluy/install-ruby-320-yjit-with-asdf-b82" aria-labelledby="article-link-1310426" class="crayons-story__hidden-navigation-link">Install Ruby 3.2.0 + YJIT with ASDF</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-1310426" aria-controls="story-author-preview-content-1310426" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-1310426" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/install-ruby-320-yjit-with-asdf-b82" class="crayons-story__tertiary fs-xs"><time datetime="2022-12-28T01:18:49Z">Dec 28 &#39;22</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1672190329"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/install-ruby-320-yjit-with-asdf-b82" data-preload-image="https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8r9nzxz0vxn65sk89llm.jpg" id="article-link-1310426"> Install Ruby 3.2.0 + YJIT with ASDF </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(204, 52, 45, 0.10); --tag-prefix: #CC342D; --tag-bg-hover: rgba(204, 52, 45, 0.10); --tag-prefix-hover: #CC342D; " href="/t/ruby"><span class="crayons-tag__prefix">#</span>ruby</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/yjit"><span class="crayons-tag__prefix">#</span>yjit</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/asdf"><span class="crayons-tag__prefix">#</span>asdf</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/install-ruby-320-yjit-with-asdf-b82" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="1310426" aria-label="Add a comment to post - Install Ruby 3.2.0 + YJIT with ASDF"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">12<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="/dpaluy/install-ruby-320-yjit-with-asdf-b82#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Install Ruby 3.2.0 + YJIT with ASDF"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aj14tkestjwq8mkk46hup5inpjv0d7s6" class="crayons-icon"><title id="aj14tkestjwq8mkk46hup5inpjv0d7s6">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> 2<span class="hidden s:inline"> comments</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="1220676" data-content-user-id="145919"> <a href="/dpaluy/github-goodies-4a7c" aria-labelledby="article-link-1220676" class="crayons-story__hidden-navigation-link">Github Goodies</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-1220676" aria-controls="story-author-preview-content-1220676" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-1220676" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/github-goodies-4a7c" class="crayons-story__tertiary fs-xs"><time datetime="2022-10-15T17:40:15Z">Oct 15 &#39;22</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1665855615"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/github-goodies-4a7c" data-preload-image="" id="article-link-1220676"> Github Goodies </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(0, 0, 0, 0.10); --tag-prefix: #000000; --tag-bg-hover: rgba(0, 0, 0, 0.10); --tag-prefix-hover: #000000; " href="/t/github"><span class="crayons-tag__prefix">#</span>github</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/keys"><span class="crayons-tag__prefix">#</span>keys</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/github-goodies-4a7c" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="1220676" aria-label="Add a comment to post - Github Goodies"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">17<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="/dpaluy/github-goodies-4a7c#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Github Goodies"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a2eara5e0iiof9ock3lgtd6utu4dn7k8" class="crayons-icon"><title id="a2eara5e0iiof9ock3lgtd6utu4dn7k8">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="450530" data-content-user-id="145919"> <a href="/dpaluy/a-guide-to-removing-automatic-emails-by-tweaking-your-public-linkedin-profile-1pff" aria-labelledby="article-link-450530" class="crayons-story__hidden-navigation-link">A guide to removing automatic emails by tweaking your public LinkedIn profile.</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-450530" aria-controls="story-author-preview-content-450530" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-450530" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/a-guide-to-removing-automatic-emails-by-tweaking-your-public-linkedin-profile-1pff" class="crayons-story__tertiary fs-xs"><time datetime="2020-09-08T17:24:12Z">Sep 8 &#39;20</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1599585852"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/a-guide-to-removing-automatic-emails-by-tweaking-your-public-linkedin-profile-1pff" data-preload-image="" id="article-link-450530"> A guide to removing automatic emails by tweaking your public LinkedIn profile. </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(42, 7, 152, 0.10); --tag-prefix: #2A0798; --tag-bg-hover: rgba(42, 7, 152, 0.10); --tag-prefix-hover: #2A0798; " href="/t/productivity"><span class="crayons-tag__prefix">#</span>productivity</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/linkedin"><span class="crayons-tag__prefix">#</span>linkedin</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/email"><span class="crayons-tag__prefix">#</span>email</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/a-guide-to-removing-automatic-emails-by-tweaking-your-public-linkedin-profile-1pff" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="450530" aria-label="Add a comment to post - A guide to removing automatic emails by tweaking your public LinkedIn profile."> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">4<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="/dpaluy/a-guide-to-removing-automatic-emails-by-tweaking-your-public-linkedin-profile-1pff#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - A guide to removing automatic emails by tweaking your public LinkedIn profile."> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="as2iqccnw42fl62pnks2kdo8ojhht8aa" class="crayons-icon"><title id="as2iqccnw42fl62pnks2kdo8ojhht8aa">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="436583" data-content-user-id="145919"> <a href="/dpaluy/polymorphic-model-resource-finder-in-ruby-on-rails-2jlg" aria-labelledby="article-link-436583" class="crayons-story__hidden-navigation-link">Polymorphic Model Resource Finder in Ruby On Rails</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-436583" aria-controls="story-author-preview-content-436583" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-436583" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/polymorphic-model-resource-finder-in-ruby-on-rails-2jlg" class="crayons-story__tertiary fs-xs"><time datetime="2020-08-24T20:30:20Z">Aug 24 &#39;20</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1598301020"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/polymorphic-model-resource-finder-in-ruby-on-rails-2jlg" data-preload-image="" id="article-link-436583"> Polymorphic Model Resource Finder in Ruby On Rails </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(204, 0, 0, 0.10); --tag-prefix: #cc0000; --tag-bg-hover: rgba(204, 0, 0, 0.10); --tag-prefix-hover: #cc0000; " href="/t/rails"><span class="crayons-tag__prefix">#</span>rails</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/polymorphic"><span class="crayons-tag__prefix">#</span>polymorphic</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/polymorphic-model-resource-finder-in-ruby-on-rails-2jlg" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="436583" aria-label="Add a comment to post - Polymorphic Model Resource Finder in Ruby On Rails"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">7<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="/dpaluy/polymorphic-model-resource-finder-in-ruby-on-rails-2jlg#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Polymorphic Model Resource Finder in Ruby On Rails"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="abem0r70a4jh9m7gixbvx2lsjm73vxyc" class="crayons-icon"><title id="abem0r70a4jh9m7gixbvx2lsjm73vxyc">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> 1<span class="hidden s:inline"> comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="435101" data-content-user-id="145919"> <a href="/dpaluy/slate-vs-freshwhen-optimizing-rails-conditional-caching-with-etags-2alg" aria-labelledby="article-link-435101" class="crayons-story__hidden-navigation-link">slate vs fresh_when - Optimizing Rails Conditional Caching with ETags</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-435101" aria-controls="story-author-preview-content-435101" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-435101" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/slate-vs-freshwhen-optimizing-rails-conditional-caching-with-etags-2alg" class="crayons-story__tertiary fs-xs"><time datetime="2020-08-22T23:05:28Z">Aug 22 &#39;20</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1598137528"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/slate-vs-freshwhen-optimizing-rails-conditional-caching-with-etags-2alg" data-preload-image="" id="article-link-435101"> slate vs fresh_when - Optimizing Rails Conditional Caching with ETags </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(204, 0, 0, 0.10); --tag-prefix: #cc0000; --tag-bg-hover: rgba(204, 0, 0, 0.10); --tag-prefix-hover: #cc0000; " href="/t/rails"><span class="crayons-tag__prefix">#</span>rails</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/cache"><span class="crayons-tag__prefix">#</span>cache</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/slate-vs-freshwhen-optimizing-rails-conditional-caching-with-etags-2alg" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="435101" aria-label="Add a comment to post - slate vs fresh_when - Optimizing Rails Conditional Caching with ETags"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">8<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="/dpaluy/slate-vs-freshwhen-optimizing-rails-conditional-caching-with-etags-2alg#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - slate vs fresh_when - Optimizing Rails Conditional Caching with ETags"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aquaf9s5jvkbh7b1i29tlpgav5j8vcnp" class="crayons-icon"><title id="aquaf9s5jvkbh7b1i29tlpgav5j8vcnp">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="434876" data-content-user-id="145919"> <a href="/dpaluy/account-middleware-in-ruby-on-rails-1a9l" aria-labelledby="article-link-434876" class="crayons-story__hidden-navigation-link">Account middleware in Ruby On Rails</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-434876" aria-controls="story-author-preview-content-434876" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-434876" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/account-middleware-in-ruby-on-rails-1a9l" class="crayons-story__tertiary fs-xs"><time datetime="2020-08-22T17:00:00Z">Aug 22 &#39;20</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1598115600"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/account-middleware-in-ruby-on-rails-1a9l" data-preload-image="" id="article-link-434876"> Account middleware in Ruby On Rails </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(204, 0, 0, 0.10); --tag-prefix: #cc0000; --tag-bg-hover: rgba(204, 0, 0, 0.10); --tag-prefix-hover: #cc0000; " href="/t/rails"><span class="crayons-tag__prefix">#</span>rails</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/middleware"><span class="crayons-tag__prefix">#</span>middleware</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/account-middleware-in-ruby-on-rails-1a9l" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="434876" aria-label="Add a comment to post - Account middleware in Ruby On Rails"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">9<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="/dpaluy/account-middleware-in-ruby-on-rails-1a9l#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Account middleware in Ruby On Rails"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a74o732dnpqacewna14i06ek2db00y8r" class="crayons-icon"><title id="a74o732dnpqacewna14i06ek2db00y8r">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="432632" data-content-user-id="145919"> <a href="/dpaluy/customizable-email-sender-address-with-devise-58a5" aria-labelledby="article-link-432632" class="crayons-story__hidden-navigation-link">Customizable Email sender address with Devise</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-432632" aria-controls="story-author-preview-content-432632" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-432632" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/customizable-email-sender-address-with-devise-58a5" class="crayons-story__tertiary fs-xs"><time datetime="2020-08-19T21:17:43Z">Aug 19 &#39;20</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1597871863"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/customizable-email-sender-address-with-devise-58a5" data-preload-image="" id="article-link-432632"> Customizable Email sender address with Devise </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(204, 0, 0, 0.10); --tag-prefix: #cc0000; --tag-bg-hover: rgba(204, 0, 0, 0.10); --tag-prefix-hover: #cc0000; " href="/t/rails"><span class="crayons-tag__prefix">#</span>rails</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/devise"><span class="crayons-tag__prefix">#</span>devise</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/email"><span class="crayons-tag__prefix">#</span>email</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/customizable-email-sender-address-with-devise-58a5" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="432632" aria-label="Add a comment to post - Customizable Email sender address with Devise"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">6<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="/dpaluy/customizable-email-sender-address-with-devise-58a5#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Customizable Email sender address with Devise"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="aqp6ll943nuerlw5dxauyzshjvn42cki" class="crayons-icon"><title id="aqp6ll943nuerlw5dxauyzshjvn42cki">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="432525" data-content-user-id="145919"> <a href="/dpaluy/replacing-placeholders-in-ruby-on-rails-he4" aria-labelledby="article-link-432525" class="crayons-story__hidden-navigation-link">Replacing placeholders in Ruby on Rails</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-432525" aria-controls="story-author-preview-content-432525" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-432525" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/replacing-placeholders-in-ruby-on-rails-he4" class="crayons-story__tertiary fs-xs"><time datetime="2020-08-19T18:10:10Z">Aug 19 &#39;20</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1597860610"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/replacing-placeholders-in-ruby-on-rails-he4" data-preload-image="" id="article-link-432525"> Replacing placeholders in Ruby on Rails </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(204, 0, 0, 0.10); --tag-prefix: #cc0000; --tag-bg-hover: rgba(204, 0, 0, 0.10); --tag-prefix-hover: #cc0000; " href="/t/rails"><span class="crayons-tag__prefix">#</span>rails</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/seo"><span class="crayons-tag__prefix">#</span>seo</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(20, 41, 200, 0.10); --tag-prefix: #1429c8; --tag-bg-hover: rgba(20, 41, 200, 0.10); --tag-prefix-hover: #1429c8; " href="/t/regex"><span class="crayons-tag__prefix">#</span>regex</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/metaprogramming"><span class="crayons-tag__prefix">#</span>metaprogramming</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/replacing-placeholders-in-ruby-on-rails-he4" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="432525" aria-label="Add a comment to post - Replacing placeholders in Ruby on Rails"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">10<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="/dpaluy/replacing-placeholders-in-ruby-on-rails-he4#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Replacing placeholders in Ruby on Rails"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="a9zu75bsmzk0gz57ja06gu66m22tmjyw" class="crayons-icon"><title id="a9zu75bsmzk0gz57ja06gu66m22tmjyw">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> 3<span class="hidden s:inline"> comments</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 2 min read </small> </div> </div> </div> </div> </div> <div class="crayons-story " data-feed-content-id="431546" data-content-user-id="145919"> <a href="/dpaluy/publishable-enum-in-ruby-on-rails-with-postgresql-2m24" aria-labelledby="article-link-431546" class="crayons-story__hidden-navigation-link">Publishable Enum in Ruby on Rails with PostgreSQL</a> <div class="crayons-story__body"> <div class="crayons-story__top"> <div class="crayons-story__meta"> <div class="crayons-story__author-pic"> <a href="/dpaluy" class="crayons-avatar crayons-avatar--l "> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" alt="dpaluy profile" class="crayons-avatar__image" loading="lazy" /> </a> </div> <div> <div> <a href="/dpaluy" class="crayons-story__secondary fw-medium m:hidden"> David Paluy </a> <div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"> <button id="story-author-preview-trigger-431546" aria-controls="story-author-preview-content-431546" class="profile-preview-card__trigger fs-s p-1 -ml-1 -my-2 crayons-btn crayons-btn--ghost" aria-label="David Paluy profile details"> David Paluy </button> <div id="story-author-preview-content-431546" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0" style="border-top-color: var(--card-color);" data-repositioning-dropdown="true" data-testid="profile-preview-card"> <div class="gap-4 grid"> <div class="-mt-4"> <a href="/dpaluy" class="flex"> <span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"> <img src="https://media.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145919%2F547f5da7-55fe-44b2-a4ee-ebf2a85d9260.png" class="crayons-avatar__image" alt="" loading="lazy" /> </span> <span class="crayons-link crayons-subtitle-2 mt-5">David Paluy</span> </a> </div> <div class="print-hidden"> <button class="crayons-btn follow-action-button whitespace-nowrap follow-user w-100" data-info='{&quot;style&quot;:&quot;full&quot;,&quot;id&quot;:145919,&quot;className&quot;:&quot;User&quot;,&quot;name&quot;:&quot;David Paluy&quot;}'> Follow </button> </div> <div class="author-preview-metadata-container" data-author-id="145919"></div> </div> </div> </div> </div> <a href="/dpaluy/publishable-enum-in-ruby-on-rails-with-postgresql-2m24" class="crayons-story__tertiary fs-xs"><time datetime="2020-08-18T21:46:59Z">Aug 18 &#39;20</time><span class="time-ago-indicator-initial-placeholder" data-seconds="1597787219"></span></a> </div> </div> </div> <div class="crayons-story__indention"> <h2 class="crayons-story__title"> <a href="/dpaluy/publishable-enum-in-ruby-on-rails-with-postgresql-2m24" data-preload-image="" id="article-link-431546"> Publishable Enum in Ruby on Rails with PostgreSQL </a> </h2> <div class="crayons-story__tags"> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(204, 0, 0, 0.10); --tag-prefix: #cc0000; --tag-bg-hover: rgba(204, 0, 0, 0.10); --tag-prefix-hover: #cc0000; " href="/t/rails"><span class="crayons-tag__prefix">#</span>rails</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(59, 73, 223, 0.10); --tag-prefix: #3b49df; --tag-bg-hover: rgba(59, 73, 223, 0.10); --tag-prefix-hover: #3b49df; " href="/t/enum"><span class="crayons-tag__prefix">#</span>enum</a> <a class="crayons-tag crayons-tag--monochrome " style=" --tag-bg: rgba(237, 21, 86, 0.10); --tag-prefix: #ED1556; --tag-bg-hover: rgba(237, 21, 86, 0.10); --tag-prefix-hover: #ED1556; " href="/t/postgres"><span class="crayons-tag__prefix">#</span>postgres</a> </div> <div class="crayons-story__bottom"> <div class="crayons-story__details"> <a href="/dpaluy/publishable-enum-in-ruby-on-rails-with-postgresql-2m24" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left" data-reaction-count data-reactable-id="431546" aria-label="Add a comment to post - Publishable Enum in Ruby on Rails with PostgreSQL"> <div class="multiple_reactions_aggregate"> <span class="multiple_reactions_icons_container" dir="rtl"> <span class="crayons_icon_container"> <img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> </span> </span> <span class="aggregate_reactions_counter">7<span class="hidden s:inline"> reactions</span></span> </div> </a> <a href="/dpaluy/publishable-enum-in-ruby-on-rails-with-postgresql-2m24#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center" aria-label="Add a comment to post - Publishable Enum in Ruby on Rails with PostgreSQL"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" role="img" aria-labelledby="an7hsag38jdv4ywsupcle5bpqgf3plfn" class="crayons-icon"><title id="an7hsag38jdv4ywsupcle5bpqgf3plfn">Comments</title><path d="M10.5 5h3a6 6 0 110 12v2.625c-3.75-1.5-9-3.75-9-8.625a6 6 0 016-6zM12 15.5h1.5a4.501 4.501 0 001.722-8.657A4.5 4.5 0 0013.5 6.5h-3A4.5 4.5 0 006 11c0 2.707 1.846 4.475 6 6.36V15.5z"></path></svg> <span class="hidden s:inline">Add Comment</span> </a> </div> <div class="crayons-story__save"> <small class="crayons-story__tertiary fs-xs mr-2"> 1 min read </small> </div> </div> </div> </div> </div> <div class="placeholder-div"></div> </div> <div class="loading-articles" id="loading-articles"> loading... </div> </main> </div> </main> <script src="https://assets.dev.to/assets/storiesList-b9c50cbd898a3a64258a3a49db1c531651b0a4a11937be35ed4651111802b5b5.js" defer="defer"></script> <script src="https://assets.dev.to/assets/followButtons-f2455d1f50a862b83fa006b1953e3a1644598781243cae25d3e75b13c04184fd.js" defer="defer"></script> <script src="https://assets.dev.to/assets/feedPreviewCards-8d16b0b656456a28c0a290f756cf6e21e19833111c4796f48c631bfea8323d51.js" defer="defer"></script> <script src="https://assets.dev.to/assets/hideBookmarkButtons-0cc08aac1c422e6b6f75e5284b5350215abf211b59fb3eb8d8a4ef85e205b607.js" defer="defer"></script> <script src="https://assets.dev.to/assets/profileDropdown-a171e1fd7174339f87bba9babc7a7d545bb24d5769c13609d763aaaeb74a5ba9.js" defer="defer"></script> <script src="https://assets.dev.to/assets/users/profilePage-1393cb4a2fea4e217cb2a2451f02d7a20ee01da60dc85f128f703631908dab09.js" defer="defer"></script> <script src="https://assets.dev.to/assets/localizeArticleDates-70147c5c6bfe350b42e020ebb2a3dd37419d83978982b5a67b6389119bf162ac.js" defer="defer"></script> <script src="https://assets.dev.to/assets/asyncUserStatusCheck-c38c3dcbc3fa64c8ff9e403434eabaf359c4957d3fb713784cc99144da5d5358.js" defer="defer"></script> <div id="runtime-banner-container"></div> </div> </div> <footer id="footer" class="crayons-footer print-hidden"> <div id="footer-container" class="crayons-footer__container"> <div style="" data-display-unit data-id="146443" data-category-click="click" data-category-impression="impression" data-context-type="home" data-special="nothing" data-article-id="" data-type-of="in_house"> <p style="font-weight: bold;margin-bottom: 10px"> Thank you to our Diamond Sponsor <a href="https://neon.tech/">Neon</a> for supporting our community. </p> </div> <p class="fs-s crayons-footer__description"> <a class="c-link c-link--branded fw-medium" aria-label="DEV Community Home" href="/">DEV Community</a> — A constructive and inclusive social network for software developers. With you every step of your journey. </p> <ul class="footer__nav-links flex gap-2 justify-center flex-wrap fs-s p-0" style="" /> <li class="footer__nav-link flex items-center"> <a href="/"> Home </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/++"> DEV++ </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/pod"> Podcasts </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/videos"> Videos </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/tags"> Tags </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/help"> DEV Help </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="https://shop.forem.com/"> Forem Shop </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/advertise"> Advertise on DEV </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/challenges"> DEV Challenges </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/showcase"> DEV Showcase </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/about"> About </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/contact"> Contact </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/free-postgres-database-tier"> Free Postgres Database </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/guides"> Guides </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/software-comparisons"> Software comparisons </a> <span class="dot ml-2"></span> </li> </ul> <ul class="footer__nav-links flex gap-2 justify-center flex-wrap fs-s p-0" style="" /> <li class="footer__nav-link flex items-center"> <a href="/code-of-conduct"> Code of Conduct </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/privacy"> Privacy Policy </a> <span class="dot ml-2"></span> </li> <li class="footer__nav-link flex items-center"> <a href="/terms"> Terms of use </a> <span class="dot ml-2"></span> </li> </ul> <div class="fs-s"> <p>Built on <a class="c-link c-link--branded" target="_blank" rel="noopener" href="https://www.forem.com">Forem</a> — the <a target="_blank" rel="noopener" class="c-link c-link--branded" href="https://dev.to/t/opensource">open source</a> software that powers <a target="_blank" rel="noopener" class="c-link c-link--branded" href="https://dev.to">DEV</a> and other inclusive communities.</p> <p>Made with love and <a target="_blank" rel="noopener" class="c-link c-link--branded" href="https://dev.to/t/rails">Ruby on Rails</a>. DEV Community <span title="copyright">&copy;</span> 2016 - 2024.</p> </div> </div> </footer> <div id="snack-zone"></div> <div id="global-signup-modal" class="authentication-modal hidden"> <div class="authentication-modal__container"> <figure class="authentication-modal__image-container"> <img class="authentication-modal__image" src="https://media2.dev.to/dynamic/image/width=190,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j7kvp660rqzt99zui8e.png" alt="DEV Community" loading="lazy" /> </figure> <div class="authentication-modal__content"> <p class="authentication-modal__description"> We&#39;re a place where coders share, stay up-to-date and grow their careers. </p> </div> <div class="authentication-modal__actions"> <a href="/enter" class="crayons-btn" aria-label="Log in" data-no-instant> Log in </a> <a href="/enter?state=new-user" class="crayons-btn crayons-btn--ghost-brand js-global-signup-modal__create-account" aria-label="Create new account" data-no-instant> Create account </a> </div> </div> </div> <script src="https://assets.dev.to/assets/signupModalShortcuts-0b25469b985100a01e94cbd7fccaf7f0a4d776e129aac65c766aa32cb28ab29a.js" defer="defer"></script> <div id="cookie-consent"></div> <div id="i18n-translations" data-translations="{&quot;en&quot;:{&quot;core&quot;:{&quot;add_comment&quot;:&quot;Add comment&quot;,&quot;beta&quot;:&quot;beta&quot;,&quot;comment&quot;:&quot;Comment&quot;,&quot;copy_link&quot;:&quot;Copy link&quot;,&quot;edit_profile&quot;:&quot;Edit profile&quot;,&quot;follow&quot;:&quot;Follow&quot;,&quot;follow_back&quot;:&quot;Follow back&quot;,&quot;following&quot;:&quot;Following&quot;,&quot;like&quot;:&quot;Like&quot;,&quot;loading&quot;:&quot;loading...&quot;,&quot;reaction&quot;:&quot;Reaction&quot;,&quot;report_abuse&quot;:&quot;Report abuse&quot;,&quot;search&quot;:&quot;Search&quot;,&quot;success_settings&quot;:&quot;Successfully updated settings.&quot;,&quot;counted_organization&quot;:{&quot;one&quot;:&quot;%{count} organization&quot;,&quot;other&quot;:&quot;%{count} organizations&quot;},&quot;counted_user&quot;:{&quot;one&quot;:&quot;%{count} person&quot;,&quot;other&quot;:&quot;%{count} people&quot;},&quot;not_following&quot;:&quot;You&#39;re not following anyone&quot;,&quot;following_everyone&quot;:&quot;You&#39;re following %{details} (everyone)&quot;,&quot;you_are_following&quot;:&quot;You&#39;re following&quot;,&quot;and&quot;:&quot;and&quot;}}}"></div> <div id="reaction-category-resources" class="hidden" aria-hidden="true"> <img data-name="Like" data-slug="like" data-position="1" src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18" /> <img data-name="Unicorn" data-slug="unicorn" data-position="2" src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18" /> <img data-name="Exploding Head" data-slug="exploding_head" data-position="3" src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18" /> <img data-name="Raised Hands" data-slug="raised_hands" data-position="4" src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18" /> <img data-name="Fire" data-slug="fire" data-position="5" src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18" /> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10