<?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: Zamudio</title>
    <description>The latest articles on Forem by Zamudio (@zamudio).</description>
    <link>https://forem.com/zamudio</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%2F1023926%2F654efc05-8fb5-49f8-859b-c88ca6fbcf0e.jpeg</url>
      <title>Forem: Zamudio</title>
      <link>https://forem.com/zamudio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/zamudio"/>
    <language>en</language>
    <item>
      <title>¿Cual es el mejor lenguaje de Programación? What is the best programming language?</title>
      <dc:creator>Zamudio</dc:creator>
      <pubDate>Fri, 10 Feb 2023 17:16:31 +0000</pubDate>
      <link>https://forem.com/zamudio/cual-es-el-mejor-lenguaje-de-programacion-3lih</link>
      <guid>https://forem.com/zamudio/cual-es-el-mejor-lenguaje-de-programacion-3lih</guid>
      <description>&lt;h1&gt;
  
  
  - Spanish Section -
&lt;/h1&gt;

&lt;p&gt;Cuando recién empezamos a explorar el mundo de la programación, nos damos cuenta que existen muchísimos lenguajes, y probablemente si eres nuevo, tendras un dilema muy grande : ¿Cuál es el mejor lenguajes de programación?, ¿Con cual debo comenzar?.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;No existe un mejor lenguaje de programación&lt;/em&gt;&lt;/strong&gt;,
&lt;/h2&gt;

&lt;p&gt;Si bien es cierto que hay lenguajes de programación mas queridos por la comunidad, no existe un lenguaje de programación que sea el mejor, pero podría decir que hay lenguajes de programación que tienen enfoques especializados en ciertas ramas del desarrollo y dentro de esa rama son los mas &lt;strong&gt;&lt;em&gt;eficientes&lt;/em&gt;&lt;/strong&gt;, así que dependiendo del enfoque que tu quisieras aprender, ya sea Backend, Frontend, Data Science, etc... Estos lenguajes variarían.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;Elige cualquier lenguaje&lt;/em&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Es verdad que en los inicios nos preocupamos mucho por cual lenguaje de programación empezar y si bien no es una decision fácil y causa un gran dilema, esto realmente no tendría porque preocuparte, &lt;strong&gt;&lt;em&gt;Elige cualquier lenguaje&lt;/em&gt;&lt;/strong&gt;, ya sea Python, C#, Java, etc... ya que esta decision a demás de que te ayudara a tener bases de la programación, no determinara el futuro de tu desarrollo, Empezar, siempre es la parte mas complicada, pero a medida que vas explorando iremos descubriendo nuevas herramientas de trabajo con las que nos sintamos mas cómodos y también nos daremos cuenta, que todos los lenguajes tienen una syntaxis muy similar.&lt;/p&gt;




&lt;h1&gt;
  
  
  - English Section -
&lt;/h1&gt;

&lt;p&gt;When we first start exploring the world of programming, we realize that there are so many languages, and probably if you are new, you will have a big dilemma: What is the best programming language, which one should I start with?&lt;/p&gt;

&lt;h2&gt;
  
  
  There is no best programming language***,
&lt;/h2&gt;

&lt;p&gt;While it is true that there are programming languages more loved by the community, there is no programming language that is the best, but I could say that there are programming languages that have specialized approaches in certain branches of development and within that branch are the most &lt;strong&gt;&lt;em&gt;efficient&lt;/em&gt;&lt;/strong&gt;, so depending on the approach that you would like to learn, whether Backend, Frontend, Data Science, etc ... These languages would vary.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;Choose any language&lt;/em&gt;&lt;/strong&gt;.
&lt;/h2&gt;

&lt;p&gt;It is true that in the beginning we worry a lot about which programming language to start with and while it is not an easy decision and causes a big dilemma, this really should not worry you, &lt;strong&gt;&lt;em&gt;Choose any language&lt;/em&gt;&lt;/strong&gt;, either Python, C#, Java, etc .... This decision will not determine the future of your development, but it is always the most complicated part, but as you explore, you will discover new working tools with which you feel more comfortable and you will also realize that all languages have a very similar syntax.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>procurement</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Developers Surival Guide, Manual de Supervivencia para Desarrolladores</title>
      <dc:creator>Zamudio</dc:creator>
      <pubDate>Fri, 10 Feb 2023 17:10:42 +0000</pubDate>
      <link>https://forem.com/zamudio/get-started-3290</link>
      <guid>https://forem.com/zamudio/get-started-3290</guid>
      <description>&lt;h1&gt;
  
  
  - Spansih Section -
&lt;/h1&gt;

&lt;p&gt;Bienvenidos a el Manual de Supervivencia para Desarrolladores,&lt;br&gt;
dentro de esta serie, estaré dando consejos para no morir en el intento Desarrollando 😱, mostraremos buenas practicas, ejemplos, documentación, etc... Así que espero que sea de su agrado y les guste esta sección, y claro esto es una parodia a partir del Manual de Supervivencia Escolar de Ned.&lt;/p&gt;




&lt;h1&gt;
  
  
  - English Section -
&lt;/h1&gt;

&lt;p&gt;Welcome to the Developers Survival Guide,&lt;br&gt;
in this series, I will be giving tips to not die trying to develop 😱, we will show good practices, examples, documentation, etc .... So I hope you like this section, and of course this is a parody from Ned's School Survival Manual.&lt;/p&gt;

&lt;p&gt;Resultados no Garantizados.&lt;br&gt;
Results not guaranteed.&lt;br&gt;
© Copyright Zamudio 2023&lt;/p&gt;

</description>
      <category>cli</category>
      <category>documentation</category>
      <category>howto</category>
    </item>
    <item>
      <title>State Management in Flutter</title>
      <dc:creator>Zamudio</dc:creator>
      <pubDate>Fri, 10 Feb 2023 15:45:36 +0000</pubDate>
      <link>https://forem.com/zamudio/state-management-in-flutter-3co2</link>
      <guid>https://forem.com/zamudio/state-management-in-flutter-3co2</guid>
      <description>&lt;h2&gt;
  
  
  Flutter Status Management
&lt;/h2&gt;

&lt;p&gt;As we explore Flutter, there comes a time when we need to share the state of the application between screens. There are many ways to do this, and we will cover several of them.&lt;/p&gt;

&lt;p&gt;When you start working with Flutter and you come from an imperative framework (such as Android SDK or iOS UIKit), we should start thinking that the development of our applications will have a new perspective.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;! Because Flutter is declarative. !&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And in a moment we'll talk about what is declarative and imperative.&lt;/p&gt;

&lt;p&gt;In Flutter, it's okay to rebuild parts of the UI from scratch instead of modifying them. Flutter is fast enough to do this, even on a frame-by-frame basis if necessary.&lt;/p&gt;

&lt;h4&gt;
  
  
  This section is optional !
&lt;/h4&gt;

&lt;h2&gt;
  
  
  Declarative and Imperative Programming Languages
&lt;/h2&gt;




&lt;h3&gt;
  
  
  Source: &lt;a href="https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/programacion-imperativa/"&gt;https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/programacion-imperativa/&lt;/a&gt;
&lt;/h3&gt;




&lt;p&gt;Imperative programming languages differ from declarative languages in one basic aspect: imperative programming focuses on the "how", and declarative programming focuses on the "what".&lt;/p&gt;

&lt;p&gt;What do I mean by this? Imperative programming languages are so to speak step-by-step instructions written for the computer and explicitly describe which steps must be carried out in what sequence to finally reach the desired solution, while declarative programming directly describes the desired end result. ***So, let's imagine that imperative languages are the ones that provide us with the recipe for a meal and declarative languages are the ones that provide us with the pictures of the prepared dishes. This starts to make a little more sense, because from here you can start to predict how these two paradigms work.&lt;/p&gt;

&lt;p&gt;Well, as an additional fact just for you to keep in mind, imperative programming is composed of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structured, procedural and modular programming.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;while the declarative programming is composed of: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logical and functional programming.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We also provided an example of imperative programming with PHP, but I will not go into detail, this was simply to understand the difference between these two because it could give us a better idea of how Flutter is composed so to speak.&lt;/p&gt;

&lt;h2&gt;
  
  
  Difference between ephemeral state and app state
&lt;/h2&gt;




&lt;h3&gt;
  
  
  Source: &lt;a href="https://esflutter.dev/docs/development/data-and-backend/state-mgmt/ephemeral-vs-app"&gt;https://esflutter.dev/docs/development/data-and-backend/state-mgmt/ephemeral-vs-app&lt;/a&gt;
&lt;/h3&gt;




&lt;p&gt;The state of an application is everything that exists in memory when the application is running. This refers to all the variables that Flutter maintains about the user interface, the state of animation, textures, fonts, etc. The states can be divided into two types: The ephemeral state and Application State (or Shared State). &lt;/p&gt;

&lt;h3&gt;
  
  
  Ephemeral State
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The ephemeral state (sometimes called UI state or local state) is the state that can clearly contain in a single widget.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Example:
&lt;/h2&gt;

&lt;p&gt;Below, you can see how the currently selected element in a bottom navigation bar is held in the _index field of the _BottomNavigationBarWidget class. In this example, _index is an ephemeral state.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  class BottomNavigationBarWidget extends StatefulWidget {
  @override
  _BottomNavigationBarWidgetState createState() =&amp;gt; _BottomNavigationBarWidgetState();
  }

  class _BottomNavigationBarWidgetState extends State&amp;lt;BottomNavigationBarWidget&amp;gt; {
    int _index = 0;

    @override
    Widget build(BuildContext context) {
      return BottomNavigationBar(
        currentIndex: _index,
        onTap: (newIndex) {
          setState(() {
            _index = newIndex;
          });
        },
        // ... items ...
      );
    }
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Other parts of the widget tree rarely need to access this type of state. There is no need to serialize it, and it does not change in complex ways.&lt;/p&gt;

&lt;p&gt;In other words, &lt;strong&gt;&lt;em&gt;no need&lt;/em&gt;&lt;/strong&gt; to use state management techniques ("ScopedModel", "Redux", etc.) on this type of state. All you need is a "StatefulWidget".&lt;/p&gt;

&lt;p&gt;Here, using setState() and a field inside the StatefulWidget class is completely natural. No other part of your application needs to access _index. The variable only changes inside the MyHomePage widget. And, if the user closes and restarts the application, you don't care if _index is reset to zero.&lt;/p&gt;




&lt;h2&gt;
  
  
  App State (Shared State)
&lt;/h2&gt;

&lt;p&gt;State that you want to share across many parts of your app (sometimes also called shared state).&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples of app states:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;User preferences.&lt;/li&gt;
&lt;li&gt;Login information.&lt;/li&gt;
&lt;li&gt;Notifications in a social networking application.&lt;/li&gt;
&lt;li&gt;The shopping cart in an e-commerce application.&lt;/li&gt;
&lt;li&gt;Status of read/unread items in an e-commerce application.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
    </item>
    <item>
      <title>Gestion de Estados en Flutter</title>
      <dc:creator>Zamudio</dc:creator>
      <pubDate>Fri, 10 Feb 2023 00:42:32 +0000</pubDate>
      <link>https://forem.com/zamudio/gestion-de-estados-en-flutter-444</link>
      <guid>https://forem.com/zamudio/gestion-de-estados-en-flutter-444</guid>
      <description>&lt;p&gt;&lt;a href="https://esflutter.dev/docs/development/data-and-backend/state-mgmt/intro" rel="noopener noreferrer"&gt;Fuente: ESFLUTTER.DEV&lt;/a&gt;&lt;br&gt;
A medida que vamos explorando en Flutter, llega un momento en que necesitamos compartir el estado de la aplicación entre pantallas. Hay muchas maneras de hacer esto, y abarcaremos varias de ellas.&lt;/p&gt;

&lt;p&gt;Cuando empieza a trabajar con Flutter y vienes desde un framework imperativo (como Android SDK o iOS UIKit), debemos empezar a pensar que el desarrollo de nuestras aplicaciones tendra una nueva perspectiva.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Porque?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;! Porque Flutter es declarativo. !&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Y en un momento hablaremos sobre lo que es declarativo e imperativo.&lt;/p&gt;

&lt;p&gt;En Flutter, está bien reconstruir partes de la UI desde cero en lugar de modificarlas. Flutter es lo suficientemente rápido para hacerlo, incluso en cada cuadro si es necesario.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lenguajes de Programación Declarativos e Imperativos.
&lt;/h2&gt;




&lt;p&gt;&lt;a href="https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/programacion-imperativa/" rel="noopener noreferrer"&gt;Fuente: IONOS.ES&lt;/a&gt;&lt;br&gt;
Los lenguajes de programación imperativa se distinguen de los lenguajes declarativos en un aspecto básico: la programación imperativa se centra en el “cómo”, y la declarativa, en el “qué”.&lt;/p&gt;

&lt;p&gt;¿A que me refiero con esto? Los lenguajes de programación imperativa son por asi decirlo instrucciones paso a paso redactadas para el ordenador y describen de forma explícita qué pasos deben llevarse a cabo y en qué secuencia para alcanzar finalmente la solución deseada y en la programación declarativa se describe directamente el resultado final deseado. &lt;strong&gt;&lt;em&gt;IONOS.es&lt;/em&gt;&lt;/strong&gt; nos da un ejemplo para que lo comprendamos mejor asi que, imaginemos que los lenguajes impertavios son los que nos proporcionan la receta de una comida y los declarativos son los que nos proporcionan las fotos de los platillos preparados. Esto empieza a cobrar un poquito mas de sentido, porque a partir de aqui puedes empezar a predecir como funcionan estos dos paradigmas.&lt;/p&gt;

&lt;p&gt;Bien, como dato adicional solo para que lo tengan en cuenta la programacion imperativa esta compuesta por:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Programacion Estructurada, procedimental y modular.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;mientras que la programacion declarativa esta compuesta por: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Programacion logica y funcional.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tambien nos proporcioan un ejemplo de programacion imperativa con PHP, pero ya no entrare mucho en detalle, esto simplemente era para que comprendieran la diferencia de estos dos porque nos podria dar una mejor idea de como Flutter esta compuesto por asi decirlo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Diferencia entre estado efímero y estado de app
&lt;/h2&gt;




&lt;p&gt;&lt;a href="https://esflutter.dev/docs/development/data-and-backend/state-mgmt/ephemeral-vs-app" rel="noopener noreferrer"&gt;Fuente: ESFLUTTER.DEV&lt;/a&gt;&lt;br&gt;
El estado de una aplicación es todo lo que existe en la memoria cuando la aplicación está en ejecución. Esto hace referencia a todas las variables que Flutter mantiene sobre la interfaz de usuario, el estado de la animación, las texturas, las fuentes, etc. Los estados se pueden dividir en dos tipos: El estado efimero y Estado de aplicacion (o Estado Compartido). &lt;/p&gt;

&lt;h3&gt;
  
  
  Estado Efimero
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;El estado efímero (a veces llamado estado UI o estado local) es el estado que puede contener claramente en un único widget.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ejemplo:
&lt;/h2&gt;

&lt;p&gt;Abajo, puedes ver cómo el elemento actualmente seleccionado en una barra de navegación inferior se mantiene en el campo _índice de la clase _BottomNavigationBarWidget. En este ejemplo, _índice es un estado efímero.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  class BottomNavigationBarWidget extends StatefulWidget {
  @override
  _BottomNavigationBarWidgetState createState() =&amp;gt; _BottomNavigationBarWidgetState();
  }

  class _BottomNavigationBarWidgetState extends State&amp;lt;BottomNavigationBarWidget&amp;gt; {
    int _index = 0;

    @override
    Widget build(BuildContext context) {
      return BottomNavigationBar(
        currentIndex: _index,
        onTap: (newIndex) {
          setState(() {
            _index = newIndex;
          });
        },
        // ... items ...
      );
    }
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Otras partes del árbol de widgets rara vez necesitan acceder a este tipo de estado. No hay necesidad de serializarlo, y no cambia de manera compleja.&lt;/p&gt;

&lt;p&gt;En otras palabras, &lt;strong&gt;&lt;em&gt;no es necesario&lt;/em&gt;&lt;/strong&gt; utilizar técnicas de gestión de estado (“ScopedModel”, “Redux”, etc.) en este tipo de estados. Todo lo que necesitas es un “StatefulWidget”.&lt;/p&gt;

&lt;p&gt;Aquí, usar setState() y un campo dentro de la clase StatefulWidget es completamente natural. Ninguna otra parte de tu aplicación necesita acceder a _index. La variable sólo cambia dentro del widget MyHomePage. Y, si el usuario cierra y reinicia la aplicación, no te importa que el _índice se restablezca a cero.&lt;/p&gt;




&lt;h2&gt;
  
  
  Estado de la app (Estado Compartido)
&lt;/h2&gt;

&lt;p&gt;Estado que quieres compartir en muchas partes de tu aplicación. (a veces también llamado estado compartido).&lt;/p&gt;

&lt;h3&gt;
  
  
  Ejemplos de estados de aplicacion:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Preferencias del usuario.&lt;/li&gt;
&lt;li&gt; Información de inicio de sesión.&lt;/li&gt;
&lt;li&gt; Notificaciones en una aplicación de redes sociales.&lt;/li&gt;
&lt;li&gt; El carrito de compras en una aplicación de comercio electrónico.&lt;/li&gt;
&lt;li&gt; Estado de los artículos leídos/no leídos en una aplicación de noticias.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para administrar el estado de las aplicaciones, deberá investigar sus opciones. Su elección depende de la complejidad y naturaleza de tu aplicación, de la experiencia previa de tu equipo y de muchos otros aspectos.&lt;/p&gt;

&lt;h4&gt;
  
  
  Algunos Gestores de Estados:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt; Provider. &lt;/li&gt;
&lt;li&gt; Getx.&lt;/li&gt;
&lt;li&gt; Bloc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;em&gt;No hay una regla clara&lt;/em&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;No existe una regla clara y universal para distinguir si una variable en particular es efímera o es estado de aplicación. A veces, tendrás que refactorizar uno en otro. Por ejemplo, comenzará con un estado claramente efímero, pero a medida que tu aplicación crezca en características, tendrá que ser movida al estado de aplicación.&lt;/p&gt;

&lt;p&gt;Cuando se le preguntó sobre el setState de React vs la store de Redux, el autor de Redux, Dan Abramov, respondió:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;“La regla general es: Hacer lo que sea menos torpe.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://esflutter.dev/docs/development/data-and-backend/state-mgmt/simple" rel="noopener noreferrer"&gt;Gestión Sencilla Del Estado con Consumers Y Providers.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>goodjob</category>
      <category>motivation</category>
    </item>
  </channel>
</rss>
