<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Christopher Duran</title>
    <description>The latest articles on Forem by Christopher Duran (@chriisduran).</description>
    <link>https://forem.com/chriisduran</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%2F913045%2F61669870-68e0-412e-9535-92c6e8734102.jpg</url>
      <title>Forem: Christopher Duran</title>
      <link>https://forem.com/chriisduran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/chriisduran"/>
    <language>en</language>
    <item>
      <title>My X List For developers and designers</title>
      <dc:creator>Christopher Duran</dc:creator>
      <pubDate>Thu, 02 Jan 2025 01:59:27 +0000</pubDate>
      <link>https://forem.com/chriisduran/my-x-list-for-developers-and-designers-210c</link>
      <guid>https://forem.com/chriisduran/my-x-list-for-developers-and-designers-210c</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%2Fjvh9bqzk38sjkpzbtagq.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%2Fjvh9bqzk38sjkpzbtagq.png" alt="cover" width="640" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recently, social media platforms have introduced the list feature, which allows you to group your favorite profiles based on different themes. This feature not only helps with organization but also allows you to share these lists with other users who have similar interests, enabling them to follow profiles related to those topics.&lt;/p&gt;

&lt;p&gt;One of the advantages i find in this option is that by adding profiles to a list, you no longer need to follow them individually. This streamlines the management of the profiles you follow, as you can keep up with their content through the lists instead of interacting with each profile separately. Below, i'll share some of the lists i've created, organized by areas of interest, covering topics such as programming, design, marketplace sites, and more.&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%2Fuh6xawfbf54wteucokx3.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%2Fuh6xawfbf54wteucokx3.png" alt="2dtopglobalprofile" width="601" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2D Top Global Profile&lt;/strong&gt;: This list includes profiles related to the creation of 2D projects, such as DeviantArt, ArtStation, WLOP, Clip Studio Paint, and others: &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fx.com%2Fi%2Flists%2F1868300637605130613" rel="noopener noreferrer"&gt;link&lt;/a&gt;&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%2Fp5tm13emlmsmd0uhsa4q.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%2Fp5tm13emlmsmd0uhsa4q.png" alt="cgitopglobalprofile" width="597" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CGI Top Global Profile&lt;/strong&gt;: This list includes profiles related to CGI content creation, such as Unreal Engine, CG Channel, Blender Studio, The Gnomon Workshop, and more: &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fx.com%2Fi%2Flists%2F1722045520082780598" rel="noopener noreferrer"&gt;link&lt;/a&gt;&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%2Fmv5jr090u67oxwd7ryld.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%2Fmv5jr090u67oxwd7ryld.png" alt="devtopglobalprofile" width="601" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dev Top Global Profiles&lt;/strong&gt;: If you're interested in staying updated with profiles like HackerOne, VS Code, Free Software Foundation, Python Software Foundation, then this is your list: &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fx.com%2Fi%2Flists%2F1868320869803872438" rel="noopener noreferrer"&gt;link&lt;/a&gt;&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%2F8039ozmnal3tw2rqerag.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%2F8039ozmnal3tw2rqerag.png" alt="mobiledevtopglobal" width="597" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mobile Dev Top Global&lt;/strong&gt;: If you're focused on mobile development, this list is made for you. It will show feedback from profiles like Android Developers News, Kotlin by JetBrains, React Native, and much more: &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fx.com%2Fi%2Flists%2F1868325753424592960" rel="noopener noreferrer"&gt;link&lt;/a&gt;&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%2F7i57cfjrk42snv8ev9yx.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%2F7i57cfjrk42snv8ev9yx.png" alt="storestopglobalprofile" width="599" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stores Top Global Profile&lt;/strong&gt;: This list contains all profiles related to the creation and sale of digital content, or at least features related to it. Profiles like Gumroad, Mintable, Buy Me A Coffee, Ko-Fi, and Patreon are included here: &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fx.com%2Fi%2Flists%2F1868331406193053944" rel="noopener noreferrer"&gt;link&lt;/a&gt;&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%2F0q9ap7ozjx070mek872z.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%2F0q9ap7ozjx070mek872z.png" alt="jobopportunitiestopglobalprofile" width="599" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Job Opportunities Top Global Profile&lt;/strong&gt;: If you're interested in staying updated with profiles related to job offerings and employment, this &lt;a href="https://medium.com/r/?url=https%3A%2F%2Fx.com%2Fi%2Flists%2F1868334649652466168" rel="noopener noreferrer"&gt;link&lt;/a&gt; includes profiles such as LinkedIn, Fiverr, Seek, Upwork, and much more.&lt;/p&gt;

</description>
      <category>twitter</category>
      <category>developer</category>
      <category>design</category>
      <category>beginners</category>
    </item>
    <item>
      <title>3D Earth Visualization with Three.js: A GitHub-Inspired Approach</title>
      <dc:creator>Christopher Duran</dc:creator>
      <pubDate>Mon, 07 Oct 2024 01:18:39 +0000</pubDate>
      <link>https://forem.com/chriisduran/3d-earth-visualization-with-threejs-a-github-inspired-approach-2jj9</link>
      <guid>https://forem.com/chriisduran/3d-earth-visualization-with-threejs-a-github-inspired-approach-2jj9</guid>
      <description>&lt;p&gt;Recently, i had the idea of implementing a 3D Earth on my website using &lt;a href="https://threejs.org/" rel="noopener noreferrer"&gt;Three.js&lt;/a&gt;. I was inspired by &lt;a href="https://github.com/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;'s landing page, where they use a similar visualization.&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%2F5xtpudvzrc6e38qxbuzy.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%2F5xtpudvzrc6e38qxbuzy.png" alt="Image description" width="640" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I wanted to take that idea a step further by adding the ability to define specific places on the globe based on their latitude and longitude coordinates. However, when i started researching, i realized that there were very few examples available online that offered the design and functionality i had in mind. Although i found some similar implementations, most were outdated or did not meet the technical requirements I was looking for.&lt;/p&gt;

&lt;p&gt;The uniqueness of this project is that it is not simply limited to a visual representation of the planet. My main goal was to be able to define real-world locations, marking starting and destination points that could be used to highlight projects i have worked on, or even point out places of interest in a personalized way. This adds a layer of interactivity, allowing users to visually explore the places mentioned on the site, enhancing the browsing experience. I firmly believe that 3D visualizations have great potential to transform the way we interact with geographic information on the web.&lt;/p&gt;

&lt;p&gt;What makes this project special is that it is built using the latest versions of &lt;a href="https://nodejs.org/en" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt;, ensuring compatibility with the most modern development environments and offering optimal performance. Node.js has evolved significantly in recent years, and using its most recent versions allowed me to take advantage of major improvements in speed and module handling. By developing with this technology, i ensure that the project is scalable and easily adaptable to future updates, which is crucial for any software aiming for long-term maintenance.&lt;/p&gt;

&lt;p&gt;A key part of the project was the implementation of basic interactions such as rotation and zoom. These features give the user complete control over the visualization of the planet, which is especially useful when it comes to detailed exploration of geographical locations.&lt;/p&gt;

&lt;p&gt;An important next step will be the implementation of a REST API that allows the project to access data about interesting places dynamically.&lt;/p&gt;

&lt;p&gt;For more detail read the awesome &lt;a href="https://dev.to/mulesoft/five-aspects-of-restful-api-design-2ec2"&gt;article&lt;/a&gt; created by &lt;a class="mentioned-user" href="https://dev.to/alextheedom"&gt;@alextheedom&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;This API will provide up-to-date information on global points of interest, such as historical landmarks, tourist spots, or even relevant projects from different industries. Users will be able to interact with the API to get additional details about each location marked on the globe. I believe this functionality will add a very interesting layer of value to the project, making it much more than just a simple 3D visualization.&lt;/p&gt;

&lt;p&gt;This is my result:&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%2Fnn18lzvyaox2gywzpxj8.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%2Fnn18lzvyaox2gywzpxj8.png" alt="Image description" width="639" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vimeo.com/1016815356" rel="noopener noreferrer"&gt;Video demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In summary, this project has not only allowed me to explore new capabilities of Three.js and Node.js, but it has also challenged me to find innovative solutions to common technical problems in creating 3D graphics for the web. Through this process, i have been able to improve my skills in TypeScript and strengthen my ability to solve compatibility and code optimization issues. My goal is to continue developing new features, such as the possibility of further customizing interactions and adding support for mobile devices, which will make this 3D experience accessible from any platform.&lt;/p&gt;

&lt;p&gt;🪙 You can buy my projects and support me on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://medium.com/r?url=https%3A%2F%2Fwww.patreon.com%2Fposts%2F3d-earth-planet-113497637%3Futm_medium%3Dclipboard_copy%26utm_source%3DcopyLink%26utm_campaign%3Dpostshare_creator%26utm_content%3Djoin_link" rel="noopener noreferrer"&gt;Patreon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ko-fi.com/post/3D-Earth-Planet-With-ThreeJS-U7U114ECWJ" rel="noopener noreferrer"&gt;Ko-Fi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://buymeacoffee.com/chriisduran/3d-earth-planet-threejs" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://chriisduran.gumroad.com/l/3dplanetwiththreejs" rel="noopener noreferrer"&gt;Gumroad&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>threejs</category>
      <category>node</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Destiny or Coincidence: Based on Shannon Perry s Experiment.</title>
      <dc:creator>Christopher Duran</dc:creator>
      <pubDate>Thu, 11 Jul 2024 00:50:12 +0000</pubDate>
      <link>https://forem.com/chriisduran/destiny-or-coincidence-based-on-shannon-perry-s-experiment-5alj</link>
      <guid>https://forem.com/chriisduran/destiny-or-coincidence-based-on-shannon-perry-s-experiment-5alj</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; I developed a project to determine if you have ever crossed paths with ‘that’ person before meeting them in your life based on your mobile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;I often read &lt;a href="https://www.xataka.com/privacidad/cuantas-veces-coincidiste-tu-pareja-antes-conocerla-asi-se-pueden-usar-datos-google-maps-para-descubrirlo" rel="noopener noreferrer"&gt;Xataka&lt;/a&gt; to stay updated on the latest technological developments and news. One thing that i readed and has intrigued me the most is &lt;a href="https://twitter.com/Channon_Perry" rel="noopener noreferrer"&gt;Shannon Perry&lt;/a&gt;’s experiment — a data analyst who used location data from her and her boyfriend’s histories to determine if they had ever been close before meeting each other.&lt;/p&gt;

&lt;h2&gt;
  
  
  How did she do it?
&lt;/h2&gt;

&lt;p&gt;She exported her and her boyfriend’s data from &lt;em&gt;Google Takeout&lt;/em&gt;. For more information, you can visit her website. The approach is simple yet fascinating: finding all instances where two people were close within a specific distance, on the same day, and at the same time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now it’s my turn
&lt;/h2&gt;

&lt;p&gt;Considering the approach is straightforward, I was intrigued to develop a similar tool — easy to use and accessible for anyone interested in experimenting with it&lt;/p&gt;

&lt;p&gt;Although Shannon explains the procedures to obtain results, as a programmer, I set myself the challenge of doing it on my own, using my own logic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools Used:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Google Takeout&lt;/strong&gt;: Used Google Takeout to export my location history data. Once the export process was completed, Google provided a download link.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Repli&lt;/strong&gt;t: Opted to run the code in the cloud to avoid overloading my laptop. While other options like Google Colab exist, I found Replit worked best for me with the free account. It’s important to interact with the page regularly to prevent the session from timing out.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Firebase&lt;/strong&gt;: Since my JSON location records file was approximately 400 MB, I uploaded it to Firebase. I chose to process the JSON files via a URL instead of downloading the file directly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CodePen&lt;/strong&gt;: Used CodePen to visualize the information obtained from Replit. I decided to use a heatmap to visualize most of the matches, along with options like lists and checkboxes to examine the positions of the two individuals in detail.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s get to work.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to...&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Visit my Medium &lt;a href="https://chriisduran.medium.com/destiny-or-coincidence-based-on-shannon-perry-s-experiment-d43da0ac5529" rel="noopener noreferrer"&gt;post&lt;/a&gt; to keep reading... 😊&lt;/p&gt;

</description>
      <category>python</category>
      <category>javascript</category>
      <category>replit</category>
      <category>codepen</category>
    </item>
    <item>
      <title>Simulate a black hole for React Native app?</title>
      <dc:creator>Christopher Duran</dc:creator>
      <pubDate>Sat, 20 Apr 2024 17:13:45 +0000</pubDate>
      <link>https://forem.com/chriisduran/simulate-a-black-hole-for-react-native-app-c0g</link>
      <guid>https://forem.com/chriisduran/simulate-a-black-hole-for-react-native-app-c0g</guid>
      <description>&lt;p&gt;Hi everyone, i´ve created this interesting article on my Medium, check it out ♥&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chriisduran.medium.com/simulate-a-black-hole-for-react-native-app-96c4d12ced83" rel="noopener noreferrer"&gt;https://chriisduran.medium.com/simulate-a-black-hole-for-react-native-app-96c4d12ced83&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>reactnative</category>
      <category>matterjs</category>
      <category>nicaragua</category>
    </item>
    <item>
      <title>Is React Native really flexible? Unexpected ending 💦</title>
      <dc:creator>Christopher Duran</dc:creator>
      <pubDate>Sat, 20 Apr 2024 17:11:52 +0000</pubDate>
      <link>https://forem.com/chriisduran/is-react-native-really-flexible-unexpected-ending-4479</link>
      <guid>https://forem.com/chriisduran/is-react-native-really-flexible-unexpected-ending-4479</guid>
      <description>&lt;p&gt;Hello everyone, i´ve create this interesting article on my Medium, check it out ♥´&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chriisduran.medium.com/is-react-native-really-flexible-dfcf15de5b70" rel="noopener noreferrer"&gt;https://chriisduran.medium.com/is-react-native-really-flexible-dfcf15de5b70&lt;/a&gt;&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>javascript</category>
      <category>html</category>
      <category>nicaragua</category>
    </item>
    <item>
      <title>Java developer try Jetpack Compose for first time</title>
      <dc:creator>Christopher Duran</dc:creator>
      <pubDate>Sat, 20 Apr 2024 17:07:11 +0000</pubDate>
      <link>https://forem.com/chriisduran/java-developer-try-jetpack-compose-for-first-time-j6j</link>
      <guid>https://forem.com/chriisduran/java-developer-try-jetpack-compose-for-first-time-j6j</guid>
      <description>&lt;p&gt;Hi everyone, i've created this interesting article in my Medium, check it out ♥&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chriisduran.medium.com/java-developer-try-jetpack-compose-for-first-time-f2c87faba8d5" rel="noopener noreferrer"&gt;https://chriisduran.medium.com/java-developer-try-jetpack-compose-for-first-time-f2c87faba8d5&lt;/a&gt;&lt;/p&gt;

</description>
      <category>jetpackcompose</category>
      <category>kotlin</category>
      <category>android</category>
      <category>nicaragua</category>
    </item>
    <item>
      <title>The power of CSS</title>
      <dc:creator>Christopher Duran</dc:creator>
      <pubDate>Sat, 20 Apr 2024 17:01:09 +0000</pubDate>
      <link>https://forem.com/chriisduran/the-power-of-css-2el9</link>
      <guid>https://forem.com/chriisduran/the-power-of-css-2el9</guid>
      <description>&lt;p&gt;Hello, i´ve created this interesting article on my Medium, check it out&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chriisduran.medium.com/the-power-of-css-323334bd3629" rel="noopener noreferrer"&gt;https://chriisduran.medium.com/the-power-of-css-323334bd3629&lt;/a&gt;&lt;/p&gt;

</description>
      <category>html</category>
      <category>javascript</category>
      <category>css</category>
      <category>nicaragua</category>
    </item>
    <item>
      <title>I created a blender add-on for beginner artists</title>
      <dc:creator>Christopher Duran</dc:creator>
      <pubDate>Sat, 20 Apr 2024 16:59:13 +0000</pubDate>
      <link>https://forem.com/chriisduran/i-created-a-blender-add-on-for-beginner-artists-2h64</link>
      <guid>https://forem.com/chriisduran/i-created-a-blender-add-on-for-beginner-artists-2h64</guid>
      <description>&lt;p&gt;Hello everyone, i create this article on Medium about how i created an add-on for beginner artist, check it out:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chriisduran.medium.com/i-created-a-blender-add-on-for-beginner-artists-dc9e5b991436" rel="noopener noreferrer"&gt;https://chriisduran.medium.com/i-created-a-blender-add-on-for-beginner-artists-dc9e5b991436&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>blender</category>
      <category>patreon</category>
      <category>nicaragua</category>
    </item>
    <item>
      <title>Chat Room Project - Christopher Duran</title>
      <dc:creator>Christopher Duran</dc:creator>
      <pubDate>Sat, 08 Jul 2023 20:46:09 +0000</pubDate>
      <link>https://forem.com/chriisduran/chat-room-project-christopher-duran-e5e</link>
      <guid>https://forem.com/chriisduran/chat-room-project-christopher-duran-e5e</guid>
      <description>&lt;p&gt;&lt;a href="https://vimeo.com/843504865" 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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb8pnl6i6cq8vijfjm5oz.png" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;Technologies&lt;/li&gt;
&lt;li&gt;Project Setup&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Building interactive and real-time web applications has revolutionized the way we communicate and collaborate online. One of the most popular technologies for achieving this interactivity is Socket.IO, a JavaScript library that enables bidirectional real-time communication between the server and the client. In this article, we will explore how to build a web chat project using Node.js, React, and Socket.IO. We'll discover the benefits of this technological combination and how they can be leveraged to create an engaging real-time chat experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Technologies:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Node.js is a server-side JavaScript runtime environment that allows us to build scalable and high-performance web applications. Its event-driven approach and ability to handle requests in parallel make it an excellent choice for real-time applications like chat.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;React is a JavaScript library for building interactive user interfaces. With its focus on building reusable components, React enables us to create dynamic and responsive UIs that efficiently update when data changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Socket.IO is a JavaScript library that makes real-time communication between the server and the client easy. It utilizes WebSocket, a technology that allows for a persistent, bidirectional connection between the server and the client, enabling instant data transmission.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Project Setup:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Before getting started with building the web chat, we need to set up our development environment. Make sure to have Node.js installed and create a new React project using Create React App. Then, install the necessary dependencies, including Socket.IO, for real-time communication.&lt;/p&gt;

&lt;p&gt;In summary, creating a web chat project using Node.js, React, and Socket.IO has been an exciting experience. The opportunity to get the source code and the project idea on my webpages is available for those interested in acquiring it offer you a good and easy option if you need a chat feature. We invite you to be part and explore new technologies together!&lt;br&gt;
&lt;a href="https://www.patreon.com/chriisduran" 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%2Fimg.shields.io%2Fbadge%2FPatreon-F96854%3Fstyle%3Dfor-the-badge%26logo%3Dpatreon%26logoColor%3Dwhite" alt="Patreon" width="105" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ko-fi.com/chriisduran" 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%2Fimg.shields.io%2Fbadge%2FKo--fi-F16061%3Fstyle%3Dfor-the-badge%26logo%3Dko-fi%26logoColor%3Dwhite" alt="Ko-Fi" width="82" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/chriisduran" 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%2Fimg.shields.io%2Fbadge%2FBuy%2520Me%2520a%2520Coffee-ffdd00%3Fstyle%3Dfor-the-badge%26logo%3Dbuy-me-a-coffee%26logoColor%3Dblack" alt="BuyMeACoffee" width="161" height="28"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>react</category>
      <category>javascript</category>
      <category>nicaragua</category>
    </item>
    <item>
      <title>Mongo Client-Side Field Level Encryption Project Sample - Christopher Duran</title>
      <dc:creator>Christopher Duran</dc:creator>
      <pubDate>Wed, 18 Jan 2023 14:17:40 +0000</pubDate>
      <link>https://forem.com/chriisduran/mongo-client-side-field-level-encryption-project-sample-christopher-duran-1jc1</link>
      <guid>https://forem.com/chriisduran/mongo-client-side-field-level-encryption-project-sample-christopher-duran-1jc1</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introducción:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Client-Side Field Level Encryption (CSFLE)&lt;/strong&gt; es una característica que te permite cifrar datos en tu aplicación antes de enviarlos a través de la red MONGO.&lt;/p&gt;

&lt;p&gt;Con &lt;strong&gt;CSFLE&lt;/strong&gt; habilitado ningún producto de MONGODB tiene acceso a sus datos sin cifrar. &lt;a href="https://www.mongodb.com/docs/manual/core/csfle/" rel="noopener noreferrer"&gt;Documentación&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proyecto PRE Requesítos:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=""&gt;Flask 2.1.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.python.org/" rel="noopener noreferrer"&gt;Python 3.10.9&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.postman.com/downloads/" rel="noopener noreferrer"&gt;Postman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.mongodb.com/try/download/compass" rel="noopener noreferrer"&gt;MONGO Compass&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.mongodb.com/try/download/shell" rel="noopener noreferrer"&gt;MONGO Shell&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ejecuta el proyecto:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Activa el servicio de la base de datos con el comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; mongod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si MONGO Shell está correctamente configurado verás un resultado como el siguiente:&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%2Fy4yw5dirk00sqc4t587r.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%2Fy4yw5dirk00sqc4t587r.png" alt="Mongo shell" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ubícate el la raíz del proyecto y ejecuta el comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; python3 app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si Flask está corriendo perfectamente verás un resultado como el siguiente:&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%2Fui7ikd2us7aoelfhv844.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%2Fui7ikd2us7aoelfhv844.png" alt="Flask console" width="800" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abre MONGO Compass, normalmente no verás ninguna base de datos creada:&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%2Fu9c4g7zuf0asdbqst9j4.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%2Fu9c4g7zuf0asdbqst9j4.png" alt="Mongo compass" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abre Postman, usaremos una solicitud POST para guardar un nuevo usuario:&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%2Fq9112mhexwr12yzqvvp4.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%2Fq9112mhexwr12yzqvvp4.png" alt="Postman" width="800" height="163"&gt;&lt;/a&gt;&lt;br&gt;
Realizada la solicitud anterior podremos visualizar en la base de datos que se ha guardado un nuevo usuario con los campos encriptados:&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%2Fxn2oz4wcwxut8wsb6c70.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%2Fxn2oz4wcwxut8wsb6c70.png" alt="Compass database" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si deseamos consultar el usuario por id podemos realizar la siguiente solicitud en postman: &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%2F4ih2hv3wsxoo1hlsbtmc.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%2F4ih2hv3wsxoo1hlsbtmc.png" alt="Postman" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Línea amarilla: enviamos como solicitud de cuerpo &lt;a href="https://www.json.org/json-en.html" rel="noopener noreferrer"&gt;JSON&lt;/a&gt; la llave con la cual se decidió encriptar los campos del usuario.&lt;/li&gt;
&lt;li&gt;Línea azul: Se solicita al usuario por id, este será el ObjectId que se ha guardado en la base de datos.&lt;/li&gt;
&lt;li&gt;Zona roja: Si no se utiliza el código de desencriptación FLE, la base de datos mostrará al usuario encriptado.&lt;/li&gt;
&lt;li&gt;Zona verde: Utilizando el proceso de desencriptado de FLE, podremos visualizar de manera legible los datos del usuario.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Descarga el proyecto &lt;a href="https://gitlab.com/cad1994/pythonfle" rel="noopener noreferrer"&gt;aquí&lt;/a&gt;.&lt;br&gt;
El código de este ejemplo se encuentra en la rama &lt;a href="https://gitlab.com/cad1994/pythonfle/-/commits/chris/devfledemo" rel="noopener noreferrer"&gt;chris/devfledemo&lt;/a&gt;.&lt;br&gt;
El commit se llama: &lt;a href="https://gitlab.com/cad1994/pythonfle/-/commit/51cc857ddfcd0667ab31344921050ad643017064" rel="noopener noreferrer"&gt;feat(app.py): fle demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En caso de tener problemas con Python, y Windows no reconoce python3 en la terminal, se recomienda descargar Python desde el Microsoft Store el cual contiene python3.&lt;/p&gt;

&lt;p&gt;Artículo disponible también en: &lt;a href="https://hashnode.com/@cad1994" rel="noopener noreferrer"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;

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