<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Cristián Andrés</title>
    <description>The latest articles on DEV Community by Cristián Andrés (@slotbite).</description>
    <link>https://dev.to/slotbite</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F211777%2Fcccaeab5-e0bf-46ee-9172-b25713ab3326.jpeg</url>
      <title>DEV Community: Cristián Andrés</title>
      <link>https://dev.to/slotbite</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/slotbite"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Cristián Andrés</dc:creator>
      <pubDate>Thu, 23 Jan 2025 13:32:54 +0000</pubDate>
      <link>https://dev.to/slotbite/-3nk8</link>
      <guid>https://dev.to/slotbite/-3nk8</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/cloudnative_eng" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1128942%2Fa2d35873-5f5b-433f-a3ad-6d505690db45.png" alt="cloudnative_eng"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/cloudnative_eng/copier-vs-cookiecutter-1jno" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Copier vs Cookiecutter&lt;/h2&gt;
      &lt;h3&gt;Cloud Native Engineer ・ Jan 20&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>cloudnative</category>
      <category>devops</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Installing Python Dependencies on AWS Lambda Using EFS</title>
      <dc:creator>Cristián Andrés</dc:creator>
      <pubDate>Thu, 21 Nov 2024 14:37:40 +0000</pubDate>
      <link>https://dev.to/slotbite/installing-python-dependencies-on-aws-lambda-using-efs-1n25</link>
      <guid>https://dev.to/slotbite/installing-python-dependencies-on-aws-lambda-using-efs-1n25</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndilu2kye6y97c8jgrsr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fndilu2kye6y97c8jgrsr.png" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When working with AWS Lambda, one of the common challenges developers face is managing large Python dependencies. Libraries like &lt;strong&gt;Pandas&lt;/strong&gt;, &lt;strong&gt;Shapely&lt;/strong&gt;, and &lt;strong&gt;GeoPandas&lt;/strong&gt;, essential for tasks like geospatial analysis, often exceed Lambda's 250 MB unzipped layer limit. A practical solution? Store your dependencies on an &lt;strong&gt;EFS (Elastic File System)&lt;/strong&gt; and mount it to your Lambda function.  &lt;/p&gt;

&lt;p&gt;In this post, we’ll walk through the process of setting this up, including the prerequisites, key benefits, and step-by-step implementation.  &lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This post is intended for users with advanced AWS experience. It assumes a solid understanding of AWS services such as Lambda, EFS, VPC, and security groups, as well as familiarity with managing infrastructure and deploying scalable solutions in the cloud.&lt;br&gt;
Before we dive into the setup, ensure you have the following:  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;AWS Lambda Function&lt;/strong&gt;: A deployed Lambda function you’ll configure with EFS.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EFS File System&lt;/strong&gt;: An Elastic File System created in the same AWS region. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EFS access point&lt;/strong&gt;: An EFS access point created in the same AWS region, with the root directory path to /data , Ensure you set the POSIX permissions and directory creation permissions appropriately as follows, 1101 and 1001, Secondary Group ID 1002 and Permissions 0755.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VPC and Networking&lt;/strong&gt;: Ensure the Lambda function is in the same VPC as the EFS, with subnets and security groups properly configured.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IAM Permissions&lt;/strong&gt;: Your Lambda function needs permissions to access the EFS. Attach the appropriate policy (e.g., &lt;code&gt;elasticfilesystem:ClientMount&lt;/code&gt;, &lt;code&gt;elasticfilesystem:ClientWrite&lt;/code&gt;).
&lt;/li&gt;
&lt;/ol&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;Handler Code for Installing Packages&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The handler installs Python dependencies directly on an Amazon EFS storage mounted to an AWS Lambda function. This approach bypasses the size limitations of Lambda layers, making it suitable for heavy dependencies like pandas, geopandas, and shapely, often required for geospatial data processing. It ensures the required libraries are available in the /mnt/data directory for Lambda to use during execution:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import os
import subprocess

PACKAGE_DIR = "/mnt/data/lib/{}/site-packages/"

def get_python_version_tag():
    """Generates a Python version tag like 'python3.11'."""
    return f"python{os.sys.version_info.major}.{os.sys.version_info.minor}"

def install_package(package):
    """Installs a Python package into the EFS-mounted directory."""
    target_dir = PACKAGE_DIR.format(get_python_version_tag())
    os.makedirs(target_dir, exist_ok=True)
    try:
        subprocess.run(
            [
                "pip",
                "install",
                package,
                "--target",
                target_dir,
                "--upgrade",
                "--no-cache-dir",
            ],
            check=True,
        )
        print(f"Package {package} installed successfully!")
    except subprocess.CalledProcessError as e:
        print(f"Failed to install package {package}: {e}")

def handler(event, context):
    """AWS Lambda Handler for installing packages."""
    try:
        # List of packages to install from the event input
        packages = event.get("packages", [])
        for package in packages:
            install_package(package)
        #optional for see packages installed
        #os.system(f"ls -la {PACKAGE_DIR.format(get_python_version_tag())}")
        return {"statusCode": 200, "body": "Packages installed successfully!"}
    except Exception as e:
        print(f"Error: {e}")
        return {"statusCode": 500, "body": f"An error occurred: {e}"}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Steps to Test
&lt;/h2&gt;

&lt;p&gt;When invoking your Lambda function, pass the following JSON payload:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "packages": ["requests", "pandas"]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Verify Package Installation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Navigate to your EFS mount point (e.g., /mnt/data/lib/) using an SSH session or AWS CLI.&lt;br&gt;
Check the installed packages under the site-packages/ directory.&lt;br&gt;
or simple use a for see a packages installed&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;os.system(f"ls -la {PACKAGE_DIR.format(get_python_version_tag())}")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  &lt;strong&gt;Finally Use the Installed Dependencies in Lambda&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Update your Lambda function’s handler to include the dependencies installed on EFS, the key here is mount the path of dependencies in efs to a PYTHONPATH of lambda handler: &lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Important Note&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;All Lambda functions that wish to use the installed dependencies must attach the EFS to the Lambda. Without this attachment, the Lambda will not be able to access the required dependencies stored on EFS.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import sys
sys.path.append("/mnt/data/lib/python3.11/site-packages/")  # Adjust Python version as needed
# Dependencies are now available!!!
import pandas as pd  

def lambda_handler(event, context):
    return {"message": "Dependencies loaded successfully!"}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Key Benefits&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;While installing Python dependencies directly in EFS is not a common practice, it offers certain advantages in scenarios where Lambda's default limitations, such as the &lt;strong&gt;250 MB unzipped layer size&lt;/strong&gt;, become restrictive. This approach is particularly beneficial for applications requiring geospatial computations with heavy libraries like &lt;strong&gt;Pandas&lt;/strong&gt;, &lt;strong&gt;Shapely&lt;/strong&gt;, and &lt;strong&gt;GeoPandas&lt;/strong&gt;, which often exceed the layer size limit. &lt;/p&gt;

&lt;h4&gt;
  
  
  Benefits of Using EFS for Dependencies:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Bypass Lambda Layer Size Limits&lt;/strong&gt;: Install and use libraries without worrying about packaging constraints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enable Large-Scale Geospatial Processing&lt;/strong&gt;: Handle complex spatial computations in a serverless environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamline Dependency Management&lt;/strong&gt;: Add or update libraries dynamically without redeploying your Lambda function.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This solution is ideal for advanced data processing tasks, such as &lt;strong&gt;geospatial analysis&lt;/strong&gt;,also allows for the easy scaling of storage as required, while maintaining the flexibility of a serverless architecture.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>efs</category>
      <category>lambda</category>
      <category>python</category>
    </item>
    <item>
      <title>🚀 Never Lose Your Clipboard History Again on Windows!</title>
      <dc:creator>Cristián Andrés</dc:creator>
      <pubDate>Thu, 21 Nov 2024 13:47:22 +0000</pubDate>
      <link>https://dev.to/slotbite/lost-last-paste--3a9a</link>
      <guid>https://dev.to/slotbite/lost-last-paste--3a9a</guid>
      <description>&lt;p&gt;Ever hit Windows + V only to realize your clipboard forgot the text you just copied? 🤯&lt;br&gt;
By default, the Windows clipboard only stores a limited history, and after a busy day, finding that one specific copy-paste can feel impossible.&lt;/p&gt;

&lt;p&gt;But don’t worry – we’ve got you covered! Introducing a tool that automatically saves everything you copy from your clipboard. Whether it's text, links, or more, this tool ensures you never lose track of your clipboard history again.&lt;/p&gt;

&lt;p&gt;Ready to take control of your clipboard?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffm5vgwvs4rmr24iv1q6y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffm5vgwvs4rmr24iv1q6y.png" alt="Image description" width="702" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ditto-cp.sourceforge.io/" rel="noopener noreferrer"&gt;ditto-cp&lt;/a&gt;&lt;br&gt;
&lt;a href="https://superuser.com/a/1847223/569711" rel="noopener noreferrer"&gt;Source Superuser&lt;/a&gt;&lt;/p&gt;

</description>
      <category>windows</category>
      <category>productivity</category>
      <category>development</category>
      <category>clipboard</category>
    </item>
    <item>
      <title>How can I use the python logging in Ray?</title>
      <dc:creator>Cristián Andrés</dc:creator>
      <pubDate>Thu, 22 Feb 2024 16:24:57 +0000</pubDate>
      <link>https://dev.to/slotbite/how-can-i-use-the-python-logging-in-ray-2m0</link>
      <guid>https://dev.to/slotbite/how-can-i-use-the-python-logging-in-ray-2m0</guid>
      <description>&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;div class="ltag__stackexchange--header"&gt;
          &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
          &lt;a href="https://stackoverflow.com/questions/55272066/how-can-i-use-the-python-logging-in-ray" rel="noopener noreferrer"&gt;
            How can I use the python logging in Ray?
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Mar 21 '19&lt;/span&gt;
            &lt;span&gt;Comments: 1&lt;/span&gt;
            &lt;span&gt;Answers: 3&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/55272066/how-can-i-use-the-python-logging-in-ray" rel="noopener noreferrer"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          16
        &lt;/div&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;p&gt;I use the logging module in the main function/process, it works well, but it seems can't work in Actor process/subprocess. How to make it work? In the sample below code, logging.info work in the main process but failed in the worker process. Thanks.&lt;/p&gt;
&lt;pre class="lang-py prettyprint-override"&gt;&lt;code&gt;import logging
import ray

@ray.remote
class Worker(object):&lt;/code&gt;&lt;/pre&gt;…
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    &lt;a href="https://stackoverflow.com/questions/55272066/how-can-i-use-the-python-logging-in-ray" class="ltag__stackexchange--btn" rel="noopener noreferrer"&gt;Open Full Question&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Migrando geometries con DMS</title>
      <dc:creator>Cristián Andrés</dc:creator>
      <pubDate>Fri, 26 Jan 2024 01:14:53 +0000</pubDate>
      <link>https://dev.to/slotbite/aws-dms-new-updates-5881</link>
      <guid>https://dev.to/slotbite/aws-dms-new-updates-5881</guid>
      <description>&lt;p&gt;Hola de nuevo, después de un buen tiempo desaparecido, ¡vuelvo con novedades en el mundo de los ETLs y pipelines automatizados!&lt;/p&gt;

&lt;p&gt;Esta vez, me encontré con una agradable sorpresa: AWS DMS ha solucionado un bug en su última versión (3.5.1) que complicaba la migración de geometrías muy extensas entre bases PostgreSQL. Los que han lidiado con esto entenderán el alivio que representa para futuros procesos.&lt;/p&gt;

&lt;p&gt;Por ahora, no está claro cómo afecta a otros destinos como S3 o Redshift, o formatos como Parquet, pero es probable que implique una transformación a WKT, lo que al menos facilita la lectura en Athena.&lt;/p&gt;

&lt;p&gt;Eso es todo por hoy. Tres ETLs fallaron y tengo mucho que corregir... ¡pero ya habrá más tiempo para seguir compartiendo!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>dms</category>
      <category>geoespatial</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>Answer: AWS Step Function - Dynamic parallelism MaxConcurrency Field</title>
      <dc:creator>Cristián Andrés</dc:creator>
      <pubDate>Thu, 18 Jan 2024 23:22:53 +0000</pubDate>
      <link>https://dev.to/slotbite/answer-aws-step-function-dynamic-parallelism-maxconcurrency-field-491p</link>
      <guid>https://dev.to/slotbite/answer-aws-step-function-dynamic-parallelism-maxconcurrency-field-491p</guid>
      <description>&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;div class="ltag__stackexchange--header"&gt;
          &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
          &lt;a href="https://stackoverflow.com/questions/70401562/aws-step-function-dynamic-parallelism-maxconcurrency-field/70405117#70405117" rel="noopener noreferrer"&gt;
            &lt;span class="title-flare"&gt;answer&lt;/span&gt; re: AWS Step Function - Dynamic parallelism MaxConcurrency Field
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Dec 18 '21&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/70401562/aws-step-function-dynamic-parallelism-maxconcurrency-field/70405117#70405117" rel="noopener noreferrer"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          1
        &lt;/div&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;p&gt;You can set &lt;code&gt;maxConcurrency&lt;/code&gt; at state machine definition-time, but not at execution-time.  As you experienced, Map's &lt;code&gt;maxConcurrency&lt;/code&gt; expects a &lt;code&gt;number&lt;/code&gt;, but the state machine language uses &lt;code&gt;strings&lt;/code&gt; to pass variables dynamically.&lt;/p&gt;
&lt;p&gt;(&lt;strong&gt;Note&lt;/strong&gt;: Step Functions are concurrent by default.  &lt;a href="https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-map-state.html" rel="nofollow noreferrer noopener"&gt;Docs&lt;/a&gt;: &lt;code&gt;maxConcurrency&lt;/code&gt;'s &lt;em&gt;"default value is 0, which&lt;/em&gt;…&lt;/p&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    &lt;a href="https://stackoverflow.com/questions/70401562/aws-step-function-dynamic-parallelism-maxconcurrency-field/70405117#70405117" class="ltag__stackexchange--btn" rel="noopener noreferrer"&gt;Open Full Answer&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Full screen chrome WITHIN a window?</title>
      <dc:creator>Cristián Andrés</dc:creator>
      <pubDate>Thu, 30 Nov 2023 13:15:44 +0000</pubDate>
      <link>https://dev.to/slotbite/full-screen-chrome-within-a-window-lco</link>
      <guid>https://dev.to/slotbite/full-screen-chrome-within-a-window-lco</guid>
      <description>&lt;p&gt;&lt;a href="https://www.reddit.com/r/chrome/comments/23t8cd/comment/innzhdf/?utm_source=share&amp;amp;utm_medium=web2x&amp;amp;context=3" rel="noopener noreferrer"&gt;Full screen chrome WITHIN a window?&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/open-as-popup/ncppfjladdkdaemaghochfikpmghbcpc" rel="noopener noreferrer"&gt;open-as-popup&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Smooth scroll in Visual Studio code</title>
      <dc:creator>Cristián Andrés</dc:creator>
      <pubDate>Wed, 29 Nov 2023 00:35:17 +0000</pubDate>
      <link>https://dev.to/slotbite/smooth-scroll-in-visual-studio-code-4epi</link>
      <guid>https://dev.to/slotbite/smooth-scroll-in-visual-studio-code-4epi</guid>
      <description>&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;div class="ltag__stackexchange--header"&gt;
          &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
          &lt;a href="https://stackoverflow.com/questions/50952468/smooth-scroll-in-visual-studio-code/50954213#50954213" rel="noopener noreferrer"&gt;
            &lt;span class="title-flare"&gt;answer&lt;/span&gt; re: Smooth scroll in Visual Studio code
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Jun 20 '18&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/50952468/smooth-scroll-in-visual-studio-code/50954213#50954213" rel="noopener noreferrer"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          100
        &lt;/div&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;blockquote&gt;
&lt;p&gt;// Controls if the editor will scroll using an animation&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;  "editor.smoothScrolling": false
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;// Enable this workaround if scrolling is no longer smooth after
restoring a minimized VS Code window. This is a workaround for an
issue (&lt;a href="https://github.com/Microsoft/vscode/issues/13612" rel="noreferrer noopener"&gt;https://github.com/Microsoft/vscode/issues/13612&lt;/a&gt;) where
scrolling starts to lag on devices with precision trackpads like…&lt;/p&gt;
&lt;/blockquote&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    &lt;a href="https://stackoverflow.com/questions/50952468/smooth-scroll-in-visual-studio-code/50954213#50954213" class="ltag__stackexchange--btn" rel="noopener noreferrer"&gt;Open Full Answer&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>You miss Copilot ? Say hi GPT-3 pilot 🖖[deprecated]</title>
      <dc:creator>Cristián Andrés</dc:creator>
      <pubDate>Fri, 06 Jan 2023 13:01:28 +0000</pubDate>
      <link>https://dev.to/slotbite/you-miss-copilot-say-hi-gpt-3-pilot-1ecc</link>
      <guid>https://dev.to/slotbite/you-miss-copilot-say-hi-gpt-3-pilot-1ecc</guid>
      <description>&lt;p&gt;Hi, today I am sharing a cool tool that will allow you to quickly code with the programming language of your choice. This is the VS Code extension 'VSCode-ChatGPT'.&lt;/p&gt;

&lt;p&gt;With this extension, programmers can write and run code quickly and easily. It offers helpful autocomplete moments, autocorrect to help catch language errors, and as a bonus (best in my opinion💎), a set of preconfigured templates for different specifics. Even if you've never programmed before, you may find ChatGPT's syntax wizard useful for learning the syntax of different languages.&lt;/p&gt;

&lt;p&gt;I invite you to give it a try today to find out what it can do to improve your workflow. It's free and easy to use!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=gencay.vscode-chatgpt" rel="noopener noreferrer"&gt;VSCode-ChatGPT&lt;/a&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>performance</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Answer: Impossible to get CRS with tomcat : org.opengis.referencing.NoSuchAuthorityCodeException</title>
      <dc:creator>Cristián Andrés</dc:creator>
      <pubDate>Thu, 29 Dec 2022 08:50:35 +0000</pubDate>
      <link>https://dev.to/slotbite/answer-impossible-to-get-crs-with-tomcat-orgopengisreferencingnosuchauthoritycodeexception-180l</link>
      <guid>https://dev.to/slotbite/answer-impossible-to-get-crs-with-tomcat-orgopengisreferencingnosuchauthoritycodeexception-180l</guid>
      <description>&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;div class="ltag__stackexchange--header"&gt;
          &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
          &lt;a href="https://stackoverflow.com/questions/51743860/impossible-to-get-crs-with-tomcat-org-opengis-referencing-nosuchauthoritycodee/51750691#51750691" rel="noopener noreferrer"&gt;
            &lt;span class="title-flare"&gt;answer&lt;/span&gt; re: Impossible to get CRS with tomcat : org.opengis.referencing.NoSuchAuthorityCodeException
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Aug  8 '18&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/51743860/impossible-to-get-crs-with-tomcat-org-opengis-referencing-nosuchauthoritycodee/51750691#51750691" rel="noopener noreferrer"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          1
        &lt;/div&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;p&gt;I found a workaround even if it doesn't solve the initial issue (related to dependencies of geotools and the deployement into Tomcat)&lt;/p&gt;
&lt;p&gt;don't use gt-epsg-hsql which leads your app searching for the EPSG code to decode into the HSQL database. &lt;/p&gt;

&lt;p&gt;Rather than using &lt;code&gt;CRS.decode(targetCrs);&lt;/code&gt;
with &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;CRS.parseWKT("PROJCS[\"WGS 84 / Plate Carree&lt;/code&gt;&lt;/pre&gt;…
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    &lt;a href="https://stackoverflow.com/questions/51743860/impossible-to-get-crs-with-tomcat-org-opengis-referencing-nosuchauthoritycodee/51750691#51750691" class="ltag__stackexchange--btn" rel="noopener noreferrer"&gt;Open Full Answer&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Como ⚡ publico una udf para Athena ? Parte I</title>
      <dc:creator>Cristián Andrés</dc:creator>
      <pubDate>Tue, 20 Dec 2022 23:54:44 +0000</pubDate>
      <link>https://dev.to/slotbite/como-publico-una-udf-para-athena-parte-i-1fkc</link>
      <guid>https://dev.to/slotbite/como-publico-una-udf-para-athena-parte-i-1fkc</guid>
      <description>&lt;p&gt;Bueno esta fue la pregunta inicial que dará origen a la siguiente aventura, suponga que en su datalake implemento un complejo pipelile de datos y se dio cuenta que en medio del proceso su motor no cuenta con una funcionalidad sql 🙇, en mi caso fue st_buffer, por cierto que en Athena si esta implementada pero en grados decimales (iuhggg), por lo que necesitábamos la preciada función en metros.&lt;br&gt;
Bueno luego de un corto googleo aparece el siguente Workshop de bastante utilidad y bien explicado:&lt;br&gt;
&lt;a href="https://catalog.us-east-1.prod.workshops.aws/workshops/9981f1a1-abdc-49b5-8387-cb01d238bb78/en-US/50-udf" rel="noopener noreferrer"&gt;Taller de Amazon Athena :: Hands on Labs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para comenzar recomienda usar Cloud9, pero es yo utilice WSL Ubuntu 22 sin mayores problemas.&lt;br&gt;
Bueno en simples pasos una vez que se configura el sam-aws-cli , credencial aws , maven y git , nos clonamos un repo el cual contiene un boilerplate con la estructura de un proyecto java 11 , que posee handler con algunos metodos a modo hello world, listo en este punto solo falta compilar el jar y ejecutar un sh para hacer un deploy de la aplicación , se necesita un permiso especial para poder hacerlo "serverlessrepo:CreateApplication" en el recurso "arn:aws:serverlessrepo:us-east-1::applications/*" &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe749lln51rw50482o0vo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe749lln51rw50482o0vo.png" alt="Image description" width="800" height="193"&gt;&lt;/a&gt;&lt;br&gt;
Listo se publicó la aplicación ahora qué ?, solo seguir el paso "Configuración del conector UDF" , en ese caso seguir el enlace y buscar aplicaciones privadas seleccionar "AthenaUserDefinedFunctions" y completar los datos , luego deployar , tómese una cerveza y Prepárese para probar su función UDF&lt;/p&gt;

&lt;p&gt;&lt;code&gt;USING EXTERNAL FUNCTION redact(col1 VARCHAR ) RETURNS VARCHAR &lt;br&gt;
LAMBDA 'customudf' SELECT redact('StringToBeCompressed');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Excelente nuestro hello world , próximamente en la parte II detallare el proceso para manipular datos geoespaciales y hacer el buffer con java, que esta algo fuera de mi zona de confort pero con GPT3 veremos si da alguna sorpresa.&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
    </item>
    <item>
      <title>Representing Directory &amp; File Structure in Markdown Syntax</title>
      <dc:creator>Cristián Andrés</dc:creator>
      <pubDate>Fri, 08 Jan 2021 13:47:58 +0000</pubDate>
      <link>https://dev.to/slotbite/representing-directory-file-structure-in-markdown-syntax-4gk4</link>
      <guid>https://dev.to/slotbite/representing-directory-file-structure-in-markdown-syntax-4gk4</guid>
      <description>&lt;div class="ltag__stackexchange--container"&gt;
  &lt;div class="ltag__stackexchange--title-container"&gt;
    
      &lt;div class="ltag__stackexchange--title"&gt;
        &lt;div class="ltag__stackexchange--header"&gt;
          &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackoverflow-logo-b42691ae545e4810b105ee957979a853a696085e67e43ee14c5699cf3e890fb4.svg" alt=""&gt;
          &lt;a href="https://stackoverflow.com/questions/19699059/print-directory-file-structure-with-icons-for-representation-in-markdown/57086391#57086391" rel="noopener noreferrer"&gt;
            &lt;span class="title-flare"&gt;answer&lt;/span&gt; re: Print Directory &amp;amp; File Structure with icons for representation in Markdown
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="ltag__stackexchange--post-metadata"&gt;
          &lt;span&gt;Jul 18 '19&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;a class="ltag__stackexchange--score-container" href="https://stackoverflow.com/questions/19699059/print-directory-file-structure-with-icons-for-representation-in-markdown/57086391#57086391" rel="noopener noreferrer"&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackexchange-arrow-up-eff2e2849e67d156181d258e38802c0b57fa011f74164a7f97675ca3b6ab756b.svg" alt=""&gt;
        &lt;div class="ltag__stackexchange--score-number"&gt;
          182
        &lt;/div&gt;
        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fstackexchange-arrow-down-4349fac0dd932d284fab7e4dd9846f19a3710558efde0d2dfd05897f3eeb9aba.svg" alt=""&gt;
      &lt;/a&gt;
    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--body"&gt;
    
&lt;p&gt;If you're using VS Code, this is an &lt;a href="https://marketplace.visualstudio.com/items?itemName=Shinotatwu-DS.file-tree-generator" rel="noreferrer noopener"&gt;awesome extension&lt;/a&gt; for generating file trees.&lt;/p&gt;
&lt;p&gt;Added directly to markdown...&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;📦quakehunter
 ┣ 📂client
 ┣ 📂node_modules
 ┣ 📂server
 ┃ ┗ 📜index.js
 ┣ 📜.gitignore
 ┣ 📜package-lock.json
 ┗ 📜package.json
&lt;/code&gt;&lt;/pre&gt;

    
  &lt;/div&gt;
  &lt;div class="ltag__stackexchange--btn--container"&gt;
    &lt;a href="https://stackoverflow.com/questions/19699059/print-directory-file-structure-with-icons-for-representation-in-markdown/57086391#57086391" class="ltag__stackexchange--btn" rel="noopener noreferrer"&gt;Open Full Answer&lt;/a&gt;
  &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>vscode</category>
      <category>folder</category>
      <category>tree</category>
    </item>
  </channel>
</rss>
