<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Eden Jose Blog</title>
        <link>https://github.com/joeden/es/writings</link>
        <description>Eden Jose Blog</description>
        <lastBuildDate>Mon, 28 Jul 2025 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>es</language>
        <item>
            <title><![CDATA[Con mi melliza, sin mi melliza]]></title>
            <link>https://github.com/joeden/es/writings/twinful-twinless</link>
            <guid>https://github.com/joeden/es/writings/twinful-twinless</guid>
            <pubDate>Mon, 28 Jul 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[«En la casa de mi Padre hay muchas habitaciones. Voy a prepararles un lugar».]]></description>
            <content:encoded><![CDATA[<blockquote>
<p>«En la casa de mi Padre hay muchas habitaciones. Voy a prepararles un lugar».
Jesús</p>
</blockquote>
<p>Julio de 2025.</p>
<p>Estaba en Tailandia con mi esposa. Habíamos estado ocupados casi todo el día y apenas habíamos mirado los teléfonos.</p>
<p>Hacia las once de la noche tuvimos un rato libre y por fin los revisamos.</p>
<p>Había decenas de llamadas perdidas de mi hermano en Canadá, de mi familia en Filipinas y de mi cuñado en Singapur. Distintas personas, distintos lugares, pero todos decían lo mismo.</p>
<p><strong>Puede que a Karen no le quede mucho tiempo.</strong></p>
<p>No recuerdo bien el resto de aquella noche. Hay fragmentos que todavía puedo recuperar, pero todo lo demás se mezcla y se vuelve borroso.</p>
<p>Recuerdo discutir con mi esposa por algo. Algún desacuerdo, o quizá muchos, no lo sé. Recuerdo que me dijo que estaba buscando vuelos de vuelta a Singapur, y que el primero que podíamos tomar salía sobre las cinco de la mañana del día siguiente.</p>
<p>Así que se lo dije a mi familia.</p>
<p>A las cinco de la mañana. Ese era el primer vuelo que podíamos conseguir.</p>
<p>Después intenté, al menos, hacer algo de trabajo.</p>
<p>Abrí el portátil y me quedé mirando lo que hubiera en la pantalla. Probablemente contesté algo o entré en una reunión. Creo que escribí algunos correos, quizá respondí a alguien.</p>
<p>La verdad es que no lo recuerdo.</p>
<p>Mi cuerpo estaba en Tailandia, tenía el portátil delante, pero mi cabeza volvía una y otra vez al mismo pensamiento, como si buscara la manera de decirme: <strong>yo no debería estar aquí</strong>.</p>
<p>Esta noche no. Ahora no.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="con-mi-melliza">Con mi melliza<a href="https://github.com/joeden/es/writings/twinful-twinless#con-mi-melliza" class="hash-link" aria-label="Enlace directo al Con mi melliza" title="Enlace directo al Con mi melliza" translate="no">​</a></h2>
<p>Tengo una hermana melliza.</p>
<p>Karen y yo nacimos juntos. Técnicamente, yo era mayor, quizá por unos cuarenta minutos, y a veces usaba eso como justificación suficiente para fingir que tenía alguna autoridad de hermano mayor sobre ella.</p>
<p>Pero, en realidad, no la tenía.</p>
<p>Al crecer, sin embargo, teníamos una conexión extraña. No sé si la llamaría telepatía, porque suena ridículo al decirlo en voz alta, pero había momentos en los que parecía que nuestras mentes sabían lo que pensaba el otro sin necesidad de decir nada.</p>
<p>En la universidad hubo una noche en la que salió a beber con sus amigas. Todas chicas.</p>
<p>Y sí, una de ellas era mi ex. Vamos a llamarla el <em>Misterio Gozoso</em>. Era una de las mejores amigas de mi hermana. Es complicado. No preguntes.</p>
<p>El caso es que intenté llamarlas porque ya era tarde y nuestra madre iba a volver pronto, pero no conseguí localizarlas.</p>
<p>No soy precisamente el mejor hermano del mundo. Estoy lejos de ser un ejemplo, yo también he tomado un montón de decisiones estúpidas y, repito, solo era cuarenta minutos mayor que Karen.</p>
<p>Pero quería protegerla.</p>
<p>Solo que no se me daba muy bien demostrarlo.</p>
<p>Así que salí a buscarlas.</p>
<p>Por suerte, en la universidad yo también bebía bastante, lo que me había dado algunos conocimientos útiles sobre adónde solían ir los universitarios borrachos antes de volver a casa.</p>
<p>Había sitios donde comíamos algo caliente y se nos pasaba un poco la borrachera para que nuestros padres no supieran de inmediato qué habíamos estado haciendo toda la noche. Normalmente eran <em>lugawans</em>, locales que servían lugaw, arroz caldo, gachas de arroz y cosas así.</p>
<p>Miré en uno. Nada.</p>
<p>Luego fui a otro. Y allí estaban.</p>
<p>Mi hermana, sus amigas y el <em>Misterio Gozoso</em>, con quien en realidad todavía no salía por entonces.</p>
<p>Todas vivas, todas borrachas.</p>
<p>Por supuesto, no entré como un hermano extraordinario que había recorrido calles y locales buscando a su hermana desaparecida.</p>
<p>Simplemente me acerqué, esperé a que terminaran de comer y luego Karen y yo volvimos al apartamento.</p>
<p>Apenas hablamos por el camino. Notaba que estaba enfadada, o quizá avergonzada, o quizá preocupada porque yo se lo contara a nuestra madre.</p>
<p>Cuando llegamos, cada uno se fue a su cama.</p>
<p>Nunca volvimos a hablar de aquella noche.</p>
<p>Hablábamos de muchas cosas, pero, de alguna manera, también había muchas de las que nunca necesitábamos hablar.</p>
<p>Cuando vivíamos en Antipolo, ¿hacia 2007, quizá?, yo tenía mi propia habitación. La suya estaba al lado, pero a veces usaba la mía cuando yo estaba en Manila.</p>
<p>Una tarde llegué a casa y nuestra tita, nuestra tía, empezó a regañarme de inmediato.</p>
<p>Había encontrado un cenicero en mi habitación. Colillas, ceniza y todo lo demás.</p>
<p>Lo que vino después debió de ser una o dos horas de sermón sobre fumar siendo joven, las malas influencias, las malas decisiones, destruir mi futuro y todas las terribles elecciones de vida que, al parecer, empezaban con aquel cenicero.</p>
<p>Estuve furioso todo el rato.</p>
<p>Yo no tenía cenicero. Ni siquiera fumaba, joder.</p>
<p>Después de aquel día, nunca volví a ver una colilla en mi habitación. Tampoco volvió a oler a humo.</p>
<p>No llegué a hablarlo con mi hermana.</p>
<p>Quizá no había una forma natural de sacar el tema, o quizá ninguno de los dos sabía cómo.</p>
<p>Así que lo dejé pasar. O quizá simplemente lo olvidé.</p>
<p>Entre nosotros había muchas cosas así: algunos temas no se discutían, simplemente nos entendíamos en silencio.</p>
<p>Eso también incluía al <em>Misterio Gozoso</em>, que era una de sus mejores amigas.</p>
<p>Había sido madre joven y ya tenía un hijo, y sinceramente no creo que a Karen llegara a gustarle del todo la idea de que estuviéramos juntos.</p>
<p>Nunca me dijo directamente que no saliera con su amiga. En realidad, nunca dijo nada.</p>
<p>Quizá no quería que yo saliera con su amiga. Quizá no quería que su amiga saliera conmigo. O quizá nos conocía lo suficiente a los dos como para darse cuenta de que juntarnos era una jodida estupidez.</p>
<p>Creo que fue en 2013 cuando el <em>Misterio Gozoso</em> y yo fuimos a casa.</p>
<p>No estábamos haciendo nada. Literalmente, estábamos sentados a la mesa del comedor cuando Karen abrió la puerta y nos vio.</p>
<p>Entonces volvió a cerrar la puerta de inmediato y se alejó tan deprisa que mi cerebro entró en pánico.</p>
<p>Dejé al <em>Misterio Gozoso</em> sentado allí y corrí detrás de mi hermana y, por extraño que parezca, ni siquiera sabía por qué me estaba entrando el pánico.</p>
<p>¿Estaba enfadada Karen? Tampoco tenía idea.</p>
<p>Quizá ni siquiera lo estaba. Quizá solo lo supuse.</p>
<p>Bueno, ese fue el incidente. El primero y el último.</p>
<p>Y, naturalmente, como al parecer así resolvíamos Karen y yo la mitad de nuestros problemas, nunca volvimos a hablar de ello.</p>
<p>Es curioso.</p>
<p>Puedes crecer al lado de alguien, compartir cumpleaños, padres, recuerdos de infancia, amigos, secretos y el mismo jodido útero.</p>
<p>Y aun así ser pésimo para comunicarte.</p>
<p>Quizá siempre dimos por hecho que habría más tiempo para hablar después.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="una-hora">Una hora<a href="https://github.com/joeden/es/writings/twinful-twinless#una-hora" class="hash-link" aria-label="Enlace directo al Una hora" title="Enlace directo al Una hora" translate="no">​</a></h2>
<p>Pasadas las nueve de la mañana, aeropuerto de Changi.</p>
<p>Nuestro avión acababa de aterrizar en Singapur.</p>
<p>Yo estaba dormido cuando las ruedas tocaron la pista. El chirrido del caucho contra el hormigón me despertó y, durante unos segundos, mi cabeza todavía no había terminado de ubicarse.</p>
<p>Abrí los ojos y miré a mi esposa, sentada a mi lado, junto a la ventanilla.</p>
<p>Miraba su teléfono.</p>
<p>Había algo raro en su cara. No físicamente, sino en la expresión. Pensé que seguía molesta por la discusión, o quizá todavía estaba asimilando algo. No supe interpretarlo.</p>
<p>Entonces me miró.</p>
<p><strong>«Karen ha muerto».</strong></p>
<p>Mi cerebro no lo registró. No de inmediato.</p>
<p>Ella seguía hablando de las llamadas de mi hermano, de mi madre, de mi tita y de la gente que intentaba contactarnos.</p>
<p>Pero yo no estaba oyendo realmente las palabras.</p>
<p>Era como si alguien hubiera bajado de golpe el volumen de todo el avión.</p>
<p>Saqué el teléfono y llamé a mi cuñado.</p>
<p>Contestó con dificultad para hablar. Luego, de alguna manera, logró decirlo.</p>
<p><strong>Karen había dejado de respirar.</strong></p>
<p>Y de pronto mi cabeza lo entendió.</p>
<p>Fue como recibir el golpe de algo enorme. Un camión, un muro, un pájaro, un avión. No lo sé.</p>
<p>Bajamos del avión, recogimos nuestro pequeño equipaje y pedimos un coche directo al Hospital General de Singapur.</p>
<p>Al llegar, entramos corriendo.</p>
<p>Fuera de la sala de Karen, mi madre y mi tita estaban sentadas en los asientos metálicos. Tenían los ojos hinchados y la cara agotada. Mi esposa y yo entramos.</p>
<p>La cama de Karen estaba al fondo, detrás de una cortina verde gruesa. Mi cuñado nos vio, se acercó y los tres cruzamos juntos la cortina.</p>
<p>Y allí estaba. Karen.</p>
<p>Lo primero que me vino a la cabeza fue increíblemente estúpido.</p>
<p><strong>Este es el primer cadáver que veo en mi vida.</strong></p>
<p>He visto cadáveres en películas, series y documentales. Los ves tantas veces que, de alguna manera, la imagen se vuelve familiar.</p>
<p>Una persona inmóvil. Los ojos cerrados. Sin movimiento.</p>
<p>Creo que también había visto alguno antes en la vida real, pero no lo recuerdo.</p>
<p>Pero esto era distinto, porque no era una persona cualquiera ni una desconocida.</p>
<p>Nuestra madre solía decirnos que habíamos compartido la misma «cama» dentro de su vientre.</p>
<p>Nueve meses juntos antes siquiera de ver el mundo. Nacidos el mismo día, en el mismo lugar, con cuarenta minutos de diferencia.</p>
<p>Técnicamente, habíamos entrado juntos en este mundo. Nunca me había detenido a pensar qué significaba eso.</p>
<p>Quizá en algún rincón estúpido de mi cabeza daba por hecho que también nos iríamos más o menos al mismo tiempo.</p>
<p>No exactamente juntos, pero lo bastante cerca.</p>
<p>Los dos discutiendo sobre quién tenía peor memoria. Algo así.</p>
<p>En cambio, allí estaba. Era mi mejor mitad, literalmente mi otra mitad. Desde antes de nacer.</p>
<p>Todos lloraban. Mi esposa. Mi madre. Mi tita. Mi cuñado.</p>
<p>Él nos contó que Karen había intentado mantenerse despierta a pesar de que le costaba respirar. Probablemente ya sabían hacia dónde iba todo. Probablemente sabían que estaban viendo acercarse la línea de meta.</p>
<p>Y llegamos tarde, por alrededor de una hora.</p>
<p>Cruzamos países y volamos de vuelta tan rápido como pudimos, y aun así nos faltaron sesenta minutos para verla con vida.</p>
<p>De puta madre, Jesús.</p>
<p>No sé con quién estaba enfadado.</p>
<p>¿Conmigo? ¿Con la aerolínea? ¿Con Tailandia? ¿Con el cáncer? ¿Con Dios? ¿Conmigo? ¿Con el tiempo? ¿Conmigo?</p>
<p>Probablemente con todos. Quizá con ninguno. No lo sé.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="el-espacio-vacío">El espacio vacío<a href="https://github.com/joeden/es/writings/twinful-twinless#el-espacio-vac%C3%ADo" class="hash-link" aria-label="Enlace directo al El espacio vacío" title="Enlace directo al El espacio vacío" translate="no">​</a></h2>
<p>Al final, las enfermeras se llevaron el cuerpo de Karen.</p>
<p>Mi cuñado fue con ellas, mientras los demás volvimos a nuestras casas.</p>
<p>Porque, al parecer, cuando alguien muere el mundo no puede detenerse, y esa es una de las partes más extrañas.</p>
<p>Siguen quedando cosas por hacer, llamadas, horarios que organizar, preparativos del funeral, personas que preguntan y personas que esperan respuestas.</p>
<p>La vida sigue haciendo todas esas cosas completamente normales mientras sientes que la tuya acaba de partirse por la mitad.</p>
<p>El velatorio se celebraría en el espacio comunitario abierto de la planta baja de su bloque, el <em>void deck</em>.</p>
<p>He pasado junto a innumerables velatorios en esos espacios por todo Singapur.</p>
<p>Ves las mesas, las sillas de plástico, las cortinas, a la gente sentada en silencio y un ataúd en algún lugar del interior. A veces hay música. A veces, oraciones.</p>
<p>Y casi siempre, cuando pasas junto a uno, sigues caminando. Porque no es tu funeral.</p>
<p>No es tu familia. Solo eres alguien que pasa. Alguien que mira desde fuera.</p>
<p>Esta vez tenía que entrar. Y no era por una persona cualquiera que conociera.</p>
<p>De puta madre, Jesús.</p>
<p>El primer día del velatorio todavía tenía trabajo. Mi familia intentó entenderlo.</p>
<p>Hasta entonces no había contado a mi equipo lo que estaba pasando. Ese día, por fin, les dije que no podría estar disponible hacia el final de la semana porque sería el entierro de mi hermana.</p>
<p>Creo que me apoyaron y fueron comprensivos. La verdad es que no lo recuerdo. Quizá no me importó recordarlo.</p>
<p>Mi esposa, en cambio, estaba molesta conmigo. Quizá enfadada. Creo que discutimos porque yo seguía trabajando mientras preparaban el cuerpo de mi hermana en el hospital para el funeral. Sinceramente, no recuerdo exactamente qué dijimos, ni qué dije yo.</p>
<p>Apenas recuerdo aquella semana entera.</p>
<p>Esos días se sienten como si alguien lo hubiera grabado todo, hubiera borrado partes al azar y luego hubiera cosido los fragmentos restantes.</p>
<p>Esa noche bajé al espacio del velatorio.</p>
<p>Todavía no había nadie, pero ya estaba todo preparado.</p>
<p>Las mesas y sillas estaban ordenadas. Delante había una cruz con Jesús mirando hacia abajo y, debajo, el lugar donde iría el ataúd de Karen. Su cuerpo llegaría al día siguiente y comenzaría el velatorio.</p>
<p>Pero aquella noche solo era un espacio vacío. Me senté a una de las mesas, frente a él.</p>
<p>Solo yo. Y ese espacio vacío.</p>
<p>No sé cuánto tiempo estuve sentado allí.</p>
<p>Quizá esperaba algo.</p>
<p>Quizá quería que alguien entrara y me dijera que estaba en el lugar equivocado. Quizá quería despertarme, pero ni siquiera estaba dormido, joder. Quizá odiaba con toda el alma aquel espacio vacío.</p>
<p>Al final dejé de mirar. Cerré los ojos, me cubrí la cara con ambas manos y me quedé así.</p>
<p>Hay momentos en los que el cuerpo parece entender algo antes que la mente.</p>
<p>Tu cerebro sigue intentando negociar.</p>
<p>Quizá esto. Quizá aquello. Quizá de alguna manera.</p>
<p>Pero tu cuerpo ya se ha rendido ante la verdad.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sin-mi-melliza">Sin mi melliza<a href="https://github.com/joeden/es/writings/twinful-twinless#sin-mi-melliza" class="hash-link" aria-label="Enlace directo al Sin mi melliza" title="Enlace directo al Sin mi melliza" translate="no">​</a></h2>
<p>Llegó el último día.</p>
<p>Estábamos en la iglesia, con el ataúd de Karen delante. Entró un sacerdote y empezó la misa.</p>
<p>Agradecí que estuviera allí la familia de mi cuñado. No creo que la mayoría fueran católicos. Quizá ninguno lo era.</p>
<p>No importaba.</p>
<p>Vinieron.</p>
<p>Se sentaron con nosotros, se levantaron cuando los demás se levantaron y se quedaron.</p>
<p>A veces eso basta.</p>
<p>Después de la misa seguimos el ataúd hacia fuera, mientras lo llevaban al vehículo que la trasladaría al crematorio.</p>
<p>Nuestra familia y la de mi cuñado subimos a un autobús que habían alquilado.</p>
<p>Unos minutos después llegamos.</p>
<p>Entramos en la sala de observación, donde un gran ventanal daba a la planta de abajo.</p>
<p>Entonces apareció Karen. O, más bien, su ataúd.</p>
<p>Avanzaba despacio mientras sonaba música de fondo.</p>
<p>Lo vi dirigirse hacia otra sala, donde estaba el horno.</p>
<p>La sala donde la madera, la tela, las flores y el cuerpo desaparecerían en el calor.</p>
<p>Ahí fue cuando algo terminó de encajar.</p>
<p>No en el hospital.</p>
<p>No cuando mi esposa me lo dijo en el avión.</p>
<p>No cuando la vi en la sala.</p>
<p>No cuando la vi dentro del ataúd.</p>
<p>Ni siquiera durante la misa.</p>
<p>Ahí.</p>
<p>Viendo cómo aquel ataúd se alejaba lentamente de nosotros.</p>
<p>Ya no había forma de negociar con esa imagen.</p>
<p>No había quizá.</p>
<p>No había después.</p>
<p>No habría más conversaciones sin terminar.</p>
<p>No volveríamos a entendernos en silencio.</p>
<p>No volveríamos a enfadarnos y decidir que ya lo hablaríamos otro día.</p>
<p>No habría otro día.</p>
<p>Durante casi toda mi vida, la palabra <strong>mellizos</strong> significaba que éramos dos.</p>
<p>No era algo en lo que pensara.</p>
<p>No piensas en tener dos manos hasta que te falta una.</p>
<p>Algunas cosas simplemente están ahí.</p>
<p>Permanentes.</p>
<p>Forman parte de la estructura de tu mundo. Ella era así.</p>
<p>Yo nunca había existido en un mundo sin mi melliza.</p>
<p>Parecía una estupidez pensar en eso en aquel momento, pero lo cierto es que nunca me había imaginado de verdad un mundo en el que solo quedara uno de nosotros.</p>
<p>Incluso antes de que yo tuviera recuerdos, ella ya estaba ahí.</p>
<p>Antes de que tuviéramos nombres.</p>
<p>Antes de que cualquiera de los dos hubiera visto a nuestra madre.</p>
<p>Antes de la luz.</p>
<p>Antes del sonido.</p>
<p>Antes del primer aliento.</p>
<p>Éramos dos.</p>
<p>Teníamos al otro.</p>
<p>Entonces el ataúd desapareció dentro de la sala.</p>
<p>Y, de pronto, solo queda uno.</p>
<p>Sin su melliza.</p>
<p>No sé si se supone que tiene que haber una gran lección al final de algo así.</p>
<p>Quizá una versión anterior de mí habría intentado encontrarla.</p>
<p>Forjar el carácter.</p>
<p>Hacerte más fuerte.</p>
<p>Cambiar tu perspectiva.</p>
<p>Alguna mierda poética de ese estilo.</p>
<p>Pero el cáncer no siempre te deja sabiduría.</p>
<p>A veces solo se lleva a alguien.</p>
<p>A veces deja una silla vacía, unas gafas que nadie usa, un cumpleaños que ahora pertenece a una sola persona viva y fotografías que de pronto valen más porque nunca habrá otra nueva.</p>
<p>A veces deja a un mellizo mirando la palabra <strong>mellizo</strong> y preguntándose si todavía tiene derecho a usarla.</p>
<p>¿Sigo siendo mellizo si ella ya no está? No lo sé.</p>
<p>Qué puto pensamiento tan estúpido y egoísta.</p>
<p>La gente dice que alguien sigue vivo en los recuerdos.</p>
<p>Quizá sea verdad.</p>
<p>Yo tengo muchos.</p>
<p>Discusiones que nunca empezamos.</p>
<p>Discusiones que nunca terminamos.</p>
<p>Cosas que entendíamos sin decir nada.</p>
<p>Cuarenta minutos.</p>
<p>Toda una vida.</p>
<p>Y una hora demasiado tarde.</p>
<p>Todavía no sé qué se supone que debo hacer con toda esa información.</p>
<p>Quizá nada.</p>
<p>Quizá a algunas personas no las «superas». Quizá simplemente sigues avanzando mientras llevas contigo el espacio que ocupaban.</p>
<p>Y, de vez en cuando, miras esa silla vacía del salón esperando que todavía estén ahí.</p>
<p>Durante casi cuatro décadas, sabía que en algún lugar de la Tierra había otra persona con el mismo cumpleaños, la misma infancia, los mismos padres y partes de la misma historia.</p>
<p>Entonces el cáncer decidió que solo debía quedar uno de nosotros.</p>
<p>Así que sí.</p>
<p><strong>Que te jodan, cáncer.</strong></p>]]></content:encoded>
            <category>Personal</category>
        </item>
        <item>
            <title><![CDATA[Levántate ocho veces]]></title>
            <link>https://github.com/joeden/es/writings/standup-eight</link>
            <guid>https://github.com/joeden/es/writings/standup-eight</guid>
            <pubDate>Mon, 25 Mar 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Este es un borrador que escribí hace tiempo, probablemente hacia diciembre de 2021.]]></description>
            <content:encoded><![CDATA[<blockquote>
<p>Este es un borrador que escribí hace tiempo, probablemente hacia diciembre de 2021.</p>
</blockquote>
<p>Cuando tengo un mal día, o pasa algo de mierda y nada quiere salir como lo había planeado, suelo recurrir a una de dos cosas.</p>
<p>O salgo a correr hasta perderme por completo en el momento, o me siento a escribir lo que me pasa por la cabeza.</p>
<p><img decoding="async" loading="lazy" alt="Ilustración del artículo" src="https://github.com/joeden/es/assets/images/image-14de4b8c1085e8d73bd50d9bb91f7b32.png" width="689" height="290" class="img_ev3q"></p>
<p>Por desgracia, se espera que una tormenta toque tierra en nuestra zona y no me apetecía quedarme atrapado por ahí cuando empezara el aguacero.</p>
<p>Antes sí pude saltar un rato a la cuerda en la zona de la piscina de mi edificio.</p>
<p>Y, mientras buscaba el equilibrio entre saltos, mi mente decidió pasar una presentación continua de todo lo ocurrido durante los últimos seis meses.</p>
<p>Como al empezar cada año, solemos ser optimistas y pensar que los próximos 365 días traerán algo mejor.</p>
<p>Al menos así me imaginaba 2021.</p>
<p>No esperaba que todo volviera de pronto a la normalidad, claro. Seguíamos en plena pandemia, y salir sin mascarilla todavía quedaba bastante lejos.</p>
<p>Los países empezaban a abrirse y a relajar algunas restricciones conforme avanzaba la vacunación, aunque seguía habiendo muchas limitaciones en todas partes.</p>
<p>Aquí también se vacunaba a la gente, pero a un ritmo mucho más lento y dando prioridad a quienes más lo necesitaban.</p>
<p>Por mi parte, ninguna queja.</p>
<p>Pudimos registrarnos para la vacunación a través del gobierno local, así que solo nos quedaba esperar nuestro turno.</p>
<p>En fin.</p>
<p>Volviendo al tema.</p>
<p>Terminé mi primer <strong>reto #100DaysOfCode</strong> el 14 de febrero.</p>
<p>Con la sensación de haber ganado, decidí empezar otra ronda de inmediato.</p>
<p><img decoding="async" loading="lazy" alt="Ilustración del nuevo comienzo" src="https://github.com/joeden/es/assets/images/image-1-2534fd3e959259508fc5ff7ea52f484a.png" width="622" height="386" class="img_ev3q"></p>
<p>Al día siguiente volvió a ser el <strong>día 1</strong>.</p>
<p>Después, el día 2.</p>
<p>El día 3.</p>
<p>Hubo algunos baches, pero seguí adelante. Entonces alguien me contactó por una oportunidad para un puesto nuevo en su empresa. No estaba pensando seriamente en cambiar de trabajo, pero me pareció que no perdía nada por escuchar.</p>
<p>Una persona de selección me llamó e hicimos una breve entrevista inicial.</p>
<p>No estaba demasiado preparado, así que probablemente dejé fuera algunos puntos importantes que debería haber mencionado.</p>
<p>Después no volvieron a llamar.</p>
<p>Y, sinceramente, no me preocupó, porque poco después me contactaron otras dos empresas.</p>
<p>En su momento no lo admití, pero aquellas llamadas sí alimentaron un poco mi ego.</p>
<p>Sabía que probablemente buscaban a alguien con mucha más experiencia, y yo todavía me veía en un punto intermedio en cuanto a capacidades.</p>
<p>He aprendido mucho trabajando en distintos sectores durante los últimos cinco años, pero también sé que aún estoy lejos de ser un experto.</p>
<p>Aun así, decidí intentarlo.</p>
<p>Pasé las entrevistas telefónicas, renové mi perfil, actualicé todo y empecé a enviar candidaturas.</p>
<p>Luego me enganché a las reuniones y entrevistas con distintas empresas después del trabajo.</p>
<p>Al final, dejé mi <strong>#100DaysChallenge</strong> y me concentré en esas reuniones.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="los-dos-casi">Los dos «casi»<a href="https://github.com/joeden/es/writings/standup-eight#los-dos-casi" class="hash-link" aria-label="Enlace directo al Los dos «casi»" title="Enlace directo al Los dos «casi»" translate="no">​</a></h2>
<p>Llegué bastante lejos en el proceso con dos empresas distintas.</p>
<p>Un puesto se centraba en automatización de infraestructura con AWS.</p>
<p>El otro era de soporte de Docker y Kubernetes.</p>
<p>Ambos parecían prometedores.</p>
<p>Ambos mostraban interés.</p>
<p>Valoré con cuidado mis posibilidades en cada uno y, después de varias conversaciones con mi esposa, decidí que estaba listo para dar el paso hacia algo nuevo.</p>
<p><img decoding="async" loading="lazy" alt="Ilustración sobre esperar una oportunidad" src="https://github.com/joeden/es/assets/images/image-2-1d8ebe822bcfedbe1a1802bf8a8e90f6.png" width="600" height="292" class="img_ev3q"></p>
<p>En ese momento solo quedaba una cosa por hacer. Esperar.</p>
<p>Así que esperé.</p>
<p>Y pasó una semana.</p>
<p>Por fin llegó una oferta para el puesto de soporte.</p>
<p>Por desgracia, era inferior a lo que esperaba, y no quería dejar las oportunidades que ya tenía en mi trabajo para ir a otro sitio con unas condiciones casi iguales.</p>
<p>Había tenido buenas conversaciones con tres responsables de equipo distintos, y me dieron la impresión de que de verdad querían que me incorporara.</p>
<p>Lamentablemente, la persona de selección terminó diciéndome que no continuarían con mi candidatura.</p>
<p>Eso dolió un poco.</p>
<p>Por supuesto, entiendo que una empresa tiene todo el derecho a reconsiderarlo si deja de ver sentido en la contratación.</p>
<p>Le comenté mi preocupación a la persona con la que llevaba más de un mes coordinándome, pero ya intuía que habíamos llegado al final.</p>
<p>Así que le agradecí toda su ayuda y seguí adelante.</p>
<p>Además, todavía me quedaba otra oportunidad.</p>
<p>O eso creía.</p>
<p>La segunda se alargó casi dos meses y exigió muchos mensajes de seguimiento.</p>
<p>Cada vez que preguntaba, me decían que la dirección seguía revisándolo todo.</p>
<p>Así que esperé. Y seguí esperando.</p>
<p>Para entonces, ya había dejado de atender a otros posibles empleadores porque me había centrado casi por completo en esta oportunidad.</p>
<p>Sabía que no debía hacer planes alrededor de una decisión que todavía podía cambiar.</p>
<p>Pero tenía buenas sensaciones sobre cómo había ido la entrevista con el panel técnico.</p>
<p>Tres semanas se convirtieron en cinco.</p>
<p>Cinco en siete.</p>
<p>En la octava semana contacté a mi amigo, que trabajaba allí y me había recomendado para el puesto.</p>
<p>Le pregunté si había sabido algo de la persona de selección.</p>
<p>Recibió exactamente la misma respuesta que yo.</p>
<p>A la semana siguiente me escribió.</p>
<p>Habían decidido dejar mi perfil en espera por el momento.</p>
<p>Eso sí fue devastador.</p>
<p>Con las dos oportunidades perdidas, volvía a la casilla de salida.</p>
<p>Ya había pasado por muchos rechazos.</p>
<p>Y cuando digo muchos, son muchos.</p>
<p>Probablemente he dedicado cientos, quizá miles, de horas a candidaturas y entrevistas desde que terminé la universidad.</p>
<p>¿Pero estos dos?</p>
<p>Joder.</p>
<p>Se sintieron distintos.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="levántate-cinco-veces">Levántate cinco veces<a href="https://github.com/joeden/es/writings/standup-eight#lev%C3%A1ntate-cinco-veces" class="hash-link" aria-label="Enlace directo al Levántate cinco veces" title="Enlace directo al Levántate cinco veces" translate="no">​</a></h2>
<p>Intenté volver a mi rutina habitual.</p>
<p>Admito que no fue fácil sacarme de la cabeza esas dos posibilidades que no llegaron a ser.</p>
<p>Entonces enfermé.</p>
<p>Dos veces.</p>
<p>Perdía muchos líquidos y me quedé tan débil que apenas podía funcionar durante casi una semana en cada ocasión.</p>
<p>No quise darle demasiadas vueltas porque acabé recuperándome con medicación, pero en esos dos periodos pasé la mayor parte del tiempo en la cama.</p>
<p>Sin correr.</p>
<p>Sin entrenar.</p>
<p>Sin nada.</p>
<p>Mi cuerpo estaba, básicamente, fuera de servicio.</p>
<p>Con el tiempo me recuperé físicamente.</p>
<p>¿Pero la ansiedad que seguía bullendo debajo de todo?</p>
<p>Esa no desapareció tan fácilmente.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="levántate-seis-veces">Levántate seis veces<a href="https://github.com/joeden/es/writings/standup-eight#lev%C3%A1ntate-seis-veces" class="hash-link" aria-label="Enlace directo al Levántate seis veces" title="Enlace directo al Levántate seis veces" translate="no">​</a></h2>
<p>Al final llegó otra llamada.</p>
<p>Y esta vez me llevé el oro.</p>
<p>Todavía le di muchas vueltas antes de decirles a los equipos de mi trabajo que me marchaba para tomar otro rumbo.</p>
<p>Todos fueron increíblemente amables.</p>
<p>Mis compañeros y responsables fueron cálidos, generosos y me apoyaron.</p>
<p>La verdad es que, de haber podido, probablemente me habría llevado a algunos compañeros conmigo.</p>
<p>Cambiar es difícil.</p>
<p>Cambiar es incómodo.</p>
<p>Pero, a veces, cambiar es necesario para crecer.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="levántate-siete-veces">Levántate siete veces<a href="https://github.com/joeden/es/writings/standup-eight#lev%C3%A1ntate-siete-veces" class="hash-link" aria-label="Enlace directo al Levántate siete veces" title="Enlace directo al Levántate siete veces" translate="no">​</a></h2>
<p>Unos días antes de mi última semana de trabajo, volví a enfermar.</p>
<p>Esta vez fueron los ojos.</p>
<p>No entraré demasiado en los detalles, pero afectó seriamente a mi productividad.</p>
<p>Por esas fechas intenté reiniciar otra vez mi <strong>reto #100DaysOfCode</strong>.</p>
<p>Y, una vez más, tuve que abandonarlo porque todo lo que estaba pasando me tenía demasiado desorientado.</p>
<p>Entonces, como si la vida no nos hubiera dado ya bastante, a mi esposa le diagnosticaron nódulos en dos partes distintas del cuerpo.</p>
<p>Naturalmente, estábamos preocupados.</p>
<p>Esperábamos que el médico nos dijera que bastaba con vigilarlos de momento o que recetara alguna medicación.</p>
<p>En lugar de eso, nos dijeron que había que extirparlos.</p>
<p>Lo que siguió fue una tarde entera corriendo de un sitio a otro para hacer pruebas de laboratorio y entregar todos los documentos necesarios.</p>
<p>Al día siguiente estábamos en una habitación de hospital.</p>
<p>Por suerte, nuestro seguro médico cubría los gastos.</p>
<p>En ese momento, lo único por lo que teníamos que preocuparnos era por cómo saldría la operación.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="levántate-ocho-veces">Levántate ocho veces<a href="https://github.com/joeden/es/writings/standup-eight#lev%C3%A1ntate-ocho-veces" class="hash-link" aria-label="Enlace directo al Levántate ocho veces" title="Enlace directo al Levántate ocho veces" translate="no">​</a></h2>
<p>Han pasado casi cuatro días desde que salimos del hospital y volvimos a casa.</p>
<p>Mi esposa está mucho más fuerte, aunque los puntos todavía están cicatrizando.</p>
<p>Mis ojos también se están recuperando.</p>
<p>Si el tiempo acompaña, quizá mañana por la mañana vuelva a intentar correr.</p>
<p>Y, en medio de todo lo ocurrido, también conseguí aprobar el examen de certificación <strong>AWS SysOps Associate</strong>.</p>
<p>Ahora estoy en el día 3 de mi nuevo trabajo.</p>
<p>Hace seis meses, probablemente no habría creído a nadie que me dijera que así sería mi primera semana en una empresa nueva.</p>
<p>Empezar un trabajo mientras estoy completamente ocupado con lo que pasa en casa.</p>
<p>Siempre me he dicho que, al entrar en un entorno nuevo, quiero dedicarle toda mi atención, sin dividirla.</p>
<p>Bueno.</p>
<p>Hasta ahí llegó aquel plan.</p>
<p>Por mucho que fastidiara recibir un golpe tras otro durante los meses anteriores, no puedo decir que fueran los peores días de nuestra vida.</p>
<p>Hemos pasado por cosas peores.</p>
<p>Aunque, desde luego, recibimos una buena paliza.</p>
<p>Pero lo superamos, ¿no?</p>
<p>Vaya si aquellos baches me obligaron a frenar más veces de las que quería.</p>
<p>A veces no tienes opción.</p>
<p>Bajas el ritmo.</p>
<p>Te reorganizas.</p>
<p>Recargas energías.</p>
<p>Recuperas el aliento.</p>
<p>Usa el verbo que quieras.</p>
<p>Y, por extraño que parezca, a veces el universo sí parece echar una mano cuando todo empieza a pesar demasiado.</p>
<p>No espero que, a partir de ahora, todo vaya sobre ruedas.</p>
<p>Probablemente no será así.</p>
<p>Lo que sí sé es que intentaré resolver lo que tenga solución.</p>
<p>Aceptar las pérdidas cuando haga falta.</p>
<p>Recibir los golpes.</p>
<p>Y después levantarme.</p>
<p>A la octava.</p>
<p>A la novena.</p>
<p>O a la centésima.</p>
<p>Las veces que haga falta.</p>
<hr>
<p>Si has leído hasta aquí, quiero darte las gracias de corazón.</p>
<p>Sé que este suele ser un espacio para temas técnicos,
pero quería compartir una parte de mí que no se limita
al trabajo, los estudios, las certificaciones o la programación.</p>
<p>A veces también está todo lo que ocurre entre una cosa y otra.</p>]]></content:encoded>
            <category>Personal</category>
        </item>
        <item>
            <title><![CDATA[Un cambio de mentalidad]]></title>
            <link>https://github.com/joeden/es/writings/a-shift-in-mindset</link>
            <guid>https://github.com/joeden/es/writings/a-shift-in-mindset</guid>
            <pubDate>Tue, 19 Mar 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[Borrador de noviembre de 2021.]]></description>
            <content:encoded><![CDATA[<blockquote>
<p>Borrador de noviembre de 2021.</p>
<p>Y ese, creo, es el verdadero cambio de mentalidad:
pasar de ser alguien que aprende a alguien que resuelve problemas.</p>
</blockquote>
<p><img decoding="async" loading="lazy" alt="Ilustración del artículo" src="https://github.com/joeden/es/assets/images/image-492298ef88d287f85c700007d161efc1.png" width="1000" height="420" class="img_ev3q"></p>
<p>Me di cuenta de que, una vez que terminas un curso, aprendes lo básico y empiezas a trabajar en proyectos reales, rara vez vuelves a ver una sección entera del curso solo porque tenga relación con el problema que intentas resolver.</p>
<p>En su lugar, sueles hacer una de dos cosas.</p>
<p>O bien:</p>
<p>a. Revisas tus apuntes o documentación para comprobar si ya te has encontrado con ese problema, siempre que confíes lo suficiente en tus notas, o</p>
<p>b. Tomas el camino mucho más fácil y rápido: buscar en Google, en Stack Overflow o un caso parecido en YouTube.</p>
<p>Por eso creo que los cursos estructurados son muy útiles durante la <strong>etapa de descubrimiento</strong>.</p>
<p>Te presentan la tecnología, explican la terminología, muestran cómo se conectan las cosas y te dan una idea de con qué estás tratando.</p>
<p>Pero, cuando intentas utilizar esa tecnología para resolver tus propios problemas, las cosas cambian.</p>
<p>En ese momento suele entrar en juego el instinto.</p>
<p>Buscas el error en Google y esperas que alguien ya haya hecho exactamente la misma pregunta en Stack Overflow.</p>
<p>O quizá alguien subió hace tres años un vídeo de doce minutos a YouTube que, de alguna manera, resuelve justo tu problema.</p>
<p>También he notado que los cursos pueden quedarse obsoletos bastante rápido, sobre todo cuando las tecnologías avanzan a un ritmo muy, muy acelerado.</p>
<p>Se me ocurren ejemplos de la computación en la nube de AWS (puedes saltarte la lista si no te interesan los detalles):</p>
<ol>
<li class="">Un día, los límites de EC2 se expresan como un número fijo de instancias por región.</li>
<li class="">Después, se basan en la cantidad de vCPU que puedes ejecutar.</li>
<li class="">Un día, ZooKeeper es una pieza importante de la arquitectura que estudias.</li>
<li class="">Después, las versiones más nuevas de la tecnología empiezan a prescindir de él por completo.</li>
</ol>
<p>A veces el cambio es importante.</p>
<p>A veces solo es un botón que ha cambiado de sitio en la interfaz.</p>
<p>Pero, cuando sumas todos esos pequeños cambios a todo lo demás que ya intentas aprender, empiezan a pesar bastante.</p>
<p>Un día quizá tengas varias semanas para experimentar con esa fascinante tecnología que acabas de descubrir.</p>
<p>Y al siguiente alguien te dice que tienes dos semanas para entenderla y entregar una solución mínimamente utilizable.</p>
<p>Así que sí.</p>
<p>Las cosas cambian bastante rápido.</p>
<p>Supongo que lo que quiero decir es que tardé casi cuatro años, y sinceramente todavía sigo trabajando en ello, en alejarme de esa forma de aprender estructurada, al estilo universitario, y adaptarme más a cómo se adquiere el conocimiento en la industria.</p>
<p>Cuando digo <strong>aprendizaje al estilo universitario</strong>, me refiero a aquel en el que tienes un esquema claro que seguir.</p>
<p>Empiezas con los primeros pasos.</p>
<p>Quizá abres tu primera terminal.</p>
<p>Luego aprendes los comandos.</p>
<p>Después los conceptos se van complicando.</p>
<p>Y acabas llegando a las partes más difíciles.</p>
<p>Normalmente sabes qué intentas aprender, cuál es el problema y qué debes lograr antes de pasar a la siguiente lección.</p>
<p>La industria no siempre funciona así.</p>
<p>A veces solo te dan una lista de requisitos.</p>
<p>Y ya está.</p>
<p>Nadie te entrega una lista ordenada de todas las tecnologías que debes aprender de antemano.</p>
<p>Te toca averiguar qué herramientas necesitas.</p>
<p>A veces ni siquiera te dan un problema técnico claramente definido.</p>
<p>Primero tienes que descubrir qué preguntas hay que hacer.</p>
<p>Y luego empiezas a buscar las respuestas.</p>
<p>Supongo que esto entra dentro de lo que se llama <strong>problemas mal definidos</strong>, donde no siempre existe una solución perfecta o única.</p>
<p>Durante mi trabajo anterior y ahora en el actual, he aprendido mucho sobre cómo se construyen realmente las soluciones.</p>
<p>Puede que tengas ayuda de un proveedor.</p>
<p>Puede que trabajen contigo servicios profesionales externos.</p>
<p>Puede que haya documentación, arquitectos, ingenieros y otros equipos implicados.</p>
<p>Pero, al final, te das cuenta de que resolver problemas no siempre es tan sencillo como parece desde fuera.</p>
<p>De repente, unas tareas pasan a ser más importantes que otras.</p>
<p>Puede surgir algo del lado del negocio a mitad del sprint.</p>
<p>Cambia un requisito.</p>
<p>Se mueve una fecha límite.</p>
<p>Aparece una dependencia.</p>
<p>Y ahora tienes que replantearte cuál de las diez preguntas que tienes delante necesita respuesta primero.</p>
<p>Así que aprender en la industria puede ser bastante desordenado.</p>
<p>Buscas lo que necesitas en ese momento.</p>
<p>Lo pruebas enseguida en tu entorno de pruebas.</p>
<p>Si funciona, genial.</p>
<p>Quizá empiezas a incorporarlo poco a poco al código o a la configuración.</p>
<p>Después vuelves a probarlo.</p>
<p>Revisas los registros.</p>
<p>Ejecutas las pruebas unitarias.</p>
<p>Haces pruebas de aceptación operativa, o cualquier otro proceso de validación que tengas.</p>
<p>Si todo parece correcto y no empiezan a saltar alarmas en los registros, quizá termine llegando a producción.</p>
<p>Ah, y aquí viene la parte divertida:</p>
<p>Tienes que terminar todo esto en cuatro sprints o menos.</p>
<p>Sin presión.</p>
<p>Ahora bien, estas situaciones <em>pueden</em> introducir lo que llamamos <strong>deuda técnica</strong>.</p>
<p>Suele ocurrir cuando eliges hoy una solución más rápida o más fácil, sabiendo que probablemente tendrás que revisarla o mejorarla después.</p>
<p>¿Es mala la deuda técnica?</p>
<p>Sí.</p>
<p>No.</p>
<p>No lo sé.</p>
<p>Supongo que la verdadera respuesta es: <strong>depende</strong>.</p>
<p>A veces, sencillamente, no puedes hacer que algo sea perfecto.</p>
<p>Tu solución puede depender de una plataforma gestionada por otro equipo.</p>
<p>Una nueva versión puede cambiar el comportamiento del código.</p>
<p>Otro sistema puede actualizarse.</p>
<p>Los requisitos pueden volver a cambiar.</p>
<p>Siempre habrá factores fuera de tu control.</p>
<p>Y, a veces, poner en marcha una solución que funcione te permite aprender algo que nunca habrías descubierto dedicando otro mes a intentar que todo fuera perfecto.</p>
<p>Cuanto antes falle algo en un entorno controlado, antes podrás entender por qué falló y mejorarlo.</p>
<p>Así que, de una forma extraña, buscamos constantemente maneras de romper cosas de forma segura para averiguar cómo mejorarlas.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="espera-por-dónde-iba">Espera. ¿Por dónde iba?<a href="https://github.com/joeden/es/writings/a-shift-in-mindset#espera-por-d%C3%B3nde-iba" class="hash-link" aria-label="Enlace directo al Espera. ¿Por dónde iba?" title="Enlace directo al Espera. ¿Por dónde iba?" translate="no">​</a></h2>
<p>Ah, sí.</p>
<p>Un cambio en la forma de pensar.</p>
<p>Supongo que he dedicado todo este tiempo a explicar en qué se diferencia el aprendizaje estructurado de aprender cuando ya estás intentando resolver un problema real.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="entonces-debería-dejar-los-cursos-y-centrarme-solo-en-proyectos">Entonces, ¿debería dejar los cursos y centrarme solo en proyectos?<a href="https://github.com/joeden/es/writings/a-shift-in-mindset#entonces-deber%C3%ADa-dejar-los-cursos-y-centrarme-solo-en-proyectos" class="hash-link" aria-label="Enlace directo al Entonces, ¿debería dejar los cursos y centrarme solo en proyectos?" title="Enlace directo al Entonces, ¿debería dejar los cursos y centrarme solo en proyectos?" translate="no">​</a></h2>
<p>No.</p>
<p>Si algo es completamente nuevo para ti, sigues necesitando alguna base.</p>
<p>Y los cursos son muy buenos para eso.</p>
<p>Te dan herramientas básicas que <em>quizá</em> necesites más adelante.</p>
<p>Te muestran lo que es posible.</p>
<p>Te presentan la terminología.</p>
<p>Te dan suficiente conocimiento como para saber, al menos, qué buscar cuando todo se rompa.</p>
<p>Luego, en algún punto del camino, empiezas a usar esas herramientas para responder tus propias preguntas.</p>
<p>A veces seguirás utilizándolas.</p>
<p>Otras descubrirás que la herramienta que aprendiste no es la mejor para el problema que tienes delante.</p>
<p>Así que la dejas y aprendes otra.</p>
<p>Y no pasa nada.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sigo-confundido">Sigo confundido<a href="https://github.com/joeden/es/writings/a-shift-in-mindset#sigo-confundido" class="hash-link" aria-label="Enlace directo al Sigo confundido" title="Enlace directo al Sigo confundido" translate="no">​</a></h2>
<p>Bueno, no eres el único.</p>
<p>Yo tampoco he resuelto todo esto.</p>
<p>Sigo teniendo en el portátil una cantidad absurda de cursos sin terminar.</p>
<p>Y, como el tiempo es limitado, he ido desarrollando mi propia estrategia para aprender cosas y aplicarlas de verdad.</p>
<p>Si mi objetivo es hacer un examen de certificación, normalmente sigo el curso, hago las prácticas, tomo apuntes y después me preparo con exámenes de prueba.</p>
<p>¿Y cuando apruebo?</p>
<p>Borro el curso.</p>
<p>Sí.</p>
<p>Sin dudarlo.</p>
<p>Llegado ese punto, sé que probablemente no volveré a sentarme a verlo entero.</p>
<p>Si más adelante necesito esa tecnología para un proyecto y me encuentro con un problema, lo más probable es que busque directamente ese problema.</p>
<p>Y, sinceramente, lo prefiero así.</p>
<p>En vez de repasar horas de vídeo, puedo buscar exactamente lo que necesito.</p>
<p>Es un poco como recoger manzanas.</p>
<p>Coges las que necesitas y dejas el resto del árbol en paz.</p>
<p>Lo importante es que, durante la etapa de descubrimiento y repaso, utilicé el curso para construir una base.</p>
<p>Aprendí lo suficiente para conocer la terminología.</p>
<p>Aprendí lo suficiente para comprender los conceptos básicos.</p>
<p>Y, con suerte, aprendí lo suficiente para reconocer lo que no sé.</p>
<p>Después llega la etapa de aplicación.</p>
<p>Ahí empiezo a depender más de mis propias herramientas.</p>
<p>Mis apuntes.</p>
<p>La documentación.</p>
<p>Los experimentos.</p>
<p>Y, por supuesto, mi <strong>Google-fu</strong>.</p>
<p>Ahora mismo estoy preparándome para hacer el RHCSA el año que viene.</p>
<p>Así que, para entonces, espero haber eliminado la mayoría de los cursos de RHEL que tengo en el disco duro.</p>
<p>Al borrarlos, también me obligo a pensar por mi cuenta en vez de volver constantemente a copiar los pasos exactos del instructor.</p>
<p>Si quiero recordar cómo hice una práctica, consulto mis apuntes.</p>
<p>Si no está ahí, probablemente esté en algún lugar de la documentación oficial.</p>
<p>¿Y si tampoco está?</p>
<p>Bueno.</p>
<p>Google seguramente conoce a alguien que lo sabe.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="vale-creo-que-lo-he-entendido">Vale, creo que lo he entendido<a href="https://github.com/joeden/es/writings/a-shift-in-mindset#vale-creo-que-lo-he-entendido" class="hash-link" aria-label="Enlace directo al Vale, creo que lo he entendido" title="Enlace directo al Vale, creo que lo he entendido" translate="no">​</a></h2>
<p>Si es así, probablemente ya me lleves un paso de ventaja.</p>
<p>Repito: no tengo todas las respuestas.</p>
<p>La mitad del tiempo ni siquiera sé todavía cuáles son las preguntas correctas.</p>
<p>Pero espero ir entendiendo más a medida que continúe.</p>
<p>Haré más prácticas.</p>
<p>Romperé más código.</p>
<p>Seguiré más registros en tiempo real.</p>
<p>Probaré soluciones que no funcionen.</p>
<p>Y acabaré encontrando otras que sí.</p>
<p>Después documentaré lo ocurrido para, quizá, no tener que sufrir dos veces el mismo problema.</p>
<p>Y, en algún punto de ese proceso, algo cambia.</p>
<p>Dejas de preguntar únicamente: <strong>«¿Qué debería aprender ahora?»</strong>.</p>
<p>Y empiezas a preguntar: <strong>«¿Qué necesito para resolver esto?»</strong>.</p>
<p>Ese, creo, es el verdadero cambio de mentalidad.</p>
<p>Pasar de ser alguien que <strong>aprende</strong> a alguien que <strong>resuelve problemas</strong>.</p>
<p>Y quizá, después de resolver suficientes problemas, acabes entrando en otra forma de aprendizaje:</p>
<p>Transmitir lo que has aprendido a otra persona.</p>]]></content:encoded>
            <category>Apuntes de desarrollo</category>
            <category>100 días de código</category>
        </item>
        <item>
            <title><![CDATA[Libro: Lo difícil de las cosas difíciles]]></title>
            <link>https://github.com/joeden/es/writings/libro-hard-thing-about-hard-things</link>
            <guid>https://github.com/joeden/es/writings/libro-hard-thing-about-hard-things</guid>
            <pubDate>Sun, 05 Dec 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Imagen del libro]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Imagen del libro" src="https://github.com/joeden/es/assets/images/image-05f1c79d3474cf16f3917873cd40434e.png" width="1200" height="630" class="img_ev3q"></p>
<p>Tercera vez que termino este audiolibro.</p>
<p>La primera fue justo después de terminar la universidad. La segunda, más o menos un año después. Y la tercera fue la semana pasada.</p>
<p>Lo que me llamó la atención esta vez, y que me parece increíble, es cuánto ha cambiado mi perspectiva sobre el libro con los años.</p>
<p>El libro seguía siendo el mismo.</p>
<p>Yo no.</p>
<p>La primera vez que lo escuché, muchas de las historias me parecían intensas, impresionantes y quizá un poco lejanas a mi situación. Años después, algunas de esas mismas partes empezaron a tener más sentido porque había vivido más trabajo, más incertidumbre, más malas decisiones, más presión y más momentos en los que no había una respuesta evidente.</p>
<p>Creo que esa es una de las mejores cosas de volver a un libro así. A veces no es que lo «superes». Simplemente, por fin llegas a comprender algunas de sus partes.</p>
<p>¿La mejor lección?</p>
<p>Haz preguntas realmente buenas.</p>
<p>¿Y cómo se aprende a hacer preguntas realmente buenas?</p>
<p>Haciendo primero un montón de preguntas malas.</p>
<p>Equivocándote.</p>
<p>Pasando cosas por alto.</p>
<p>Preguntando algo obvio.</p>
<p>Dándote cuenta después de que deberías haber preguntado algo completamente distinto.</p>
<p>Con el tiempo, aprendes a reconocer qué preguntas importan de verdad.</p>
<p>Y sí, a veces una jodida buena dosis de valor puede abrir caminos y mover montañas.</p>]]></content:encoded>
            <category>Libros</category>
        </item>
        <item>
            <title><![CDATA[Libro: Range]]></title>
            <link>https://github.com/joeden/es/writings/libro-range</link>
            <guid>https://github.com/joeden/es/writings/libro-range</guid>
            <pubDate>Fri, 19 Nov 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[«Las grandes cosas no se hacen por impulso, sino mediante una serie de pequeñas cosas reunidas».]]></description>
            <content:encoded><![CDATA[<p><em>«Las grandes cosas no se hacen por impulso, sino mediante una serie de pequeñas cosas reunidas».</em></p>
<ul>
<li class="">Vincent van Gogh</li>
</ul>
<p>¿Ser generalista o especialista?</p>
<p>Antes pensaba que tarde o temprano había que elegir.</p>
<p>Pero después de leer <em>Range</em>, de David Epstein, creo que la respuesta más interesante es que quizá no tengas que apresurarte a hacerlo.</p>
<p>Explora distintos campos.</p>
<p>Siente curiosidad por cosas que estén fuera de tu terreno habitual.</p>
<p>Prueba algo, déjalo, vuelve a ello años después y, a veces, te sorprenderá lo útiles que resultan esas experiencias aparentemente inconexas.</p>
<p>Y cuando encuentres algo que de verdad despierte tu interés, profundiza.</p>
<p>Aprende las tecnologías que lo componen.</p>
<p>Entiende cómo funcionan las cosas por debajo.</p>
<p>Domínalo lo suficiente como para poder construir, romper, arreglar y explicar cosas.</p>
<p>Pero tampoco tienes que pasarte la vida entera con el pie en el acelerador.</p>
<p>A veces puedes bajar el ritmo.</p>
<p>Dejarte llevar un rato.</p>
<p>Mirar a tu alrededor.</p>
<p>Probar otra cosa.</p>
<p>Y luego volver con una perspectiva distinta.</p>
<p>Quizá ser generalista y ser especialista no sean realmente opuestos. Puedes explorar muchos campos y, al mismo tiempo, profundizar en lo que te importa.</p>
<p>Y, a medida que el mundo a tu alrededor cambie, parte de lo que sabes se volverá útil, parte quedará obsoleta y algunas cosas tendrás que replanteártelas por completo.</p>
<p>Aprende.</p>
<p>Desaprende.</p>
<p>Y vuelve a aprender.</p>
<p><img decoding="async" loading="lazy" alt="Imagen del libro" src="https://github.com/joeden/es/assets/images/image-b9ee7736f092771f3d61c69137199c18.png" width="402" height="734" class="img_ev3q"></p>]]></content:encoded>
            <category>Libros</category>
        </item>
        <item>
            <title><![CDATA[Dibujo: ¡Omelette du fromage!]]></title>
            <link>https://github.com/joeden/es/writings/art-dexter</link>
            <guid>https://github.com/joeden/es/writings/art-dexter</guid>
            <pubDate>Tue, 16 Nov 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[¡Hoy no hay artículo, solo un dibujo que hice de Dexter!]]></description>
            <content:encoded><![CDATA[<p>¡Hoy no hay artículo, solo un dibujo que hice de Dexter!</p>
<p><img decoding="async" loading="lazy" alt="Dibujo de Dexter" src="https://github.com/joeden/es/assets/images/image-ba613f71b76335979e91539dc9453015.png" width="960" height="600" class="img_ev3q"></p>]]></content:encoded>
            <category>Arte</category>
            <category>Dibujos</category>
        </item>
        <item>
            <title><![CDATA[Dibujo: El mercenario bocazas]]></title>
            <link>https://github.com/joeden/es/writings/art-deadpool</link>
            <guid>https://github.com/joeden/es/writings/art-deadpool</guid>
            <pubDate>Mon, 15 Nov 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[¡El mercenario bocazas, Deadpool!]]></description>
            <content:encoded><![CDATA[<p>¡El mercenario bocazas, Deadpool!</p>
<p><img decoding="async" loading="lazy" alt="Dibujo de Deadpool" src="https://github.com/joeden/es/assets/images/image-8c854d059af24c5b63a6a45e3fc3de55.png" width="2048" height="1280" class="img_ev3q"></p>]]></content:encoded>
            <category>Arte</category>
            <category>Dibujos</category>
        </item>
        <item>
            <title><![CDATA[El día del examen]]></title>
            <link>https://github.com/joeden/es/writings/the-examination-day</link>
            <guid>https://github.com/joeden/es/writings/the-examination-day</guid>
            <pubDate>Fri, 04 Jun 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Comparto mis apuntes y reflexiones sobre el examen AWS SysOps Administrator Associate.]]></description>
            <content:encoded><![CDATA[<blockquote>
<p>Comparto mis apuntes y reflexiones sobre el <strong>examen AWS SysOps Administrator Associate</strong>.</p>
</blockquote>
<p><img decoding="async" loading="lazy" alt="Ilustración del artículo" src="https://github.com/joeden/es/assets/images/image-b86cfcde924a66065a1f013f6abd5022.png" width="596" height="251" class="img_ev3q"></p>
<p>Antes que nada, quiero decir que resulta <em><strong>sumamente útil</strong></em> presentarse primero al <strong>examen AWS Solutions Architect Associate</strong> antes de abordar los otros dos exámenes de nivel Associate: SysOps Associate y Developer Associate.</p>
<p>Hacer primero el examen de Solutions Architect te ayuda a entender cómo funcionan los distintos servicios de AWS, cómo se conectan y cómo se utilizan para construir soluciones.</p>
<p>Como con cualquier habilidad, creo que es importante empezar por lo básico.</p>
<p>Aprende la teoría.</p>
<p>Experimenta.</p>
<p>Rompe cosas.</p>
<p>Y después intenta arreglarlas.</p>
<p>Una vez que entiendes bien cómo se diseñan las soluciones, puedes empezar a aprender a operarlas y mantenerlas.</p>
<p>Y ahí entra <strong>AWS SysOps Administrator Associate</strong>.</p>
<p><img decoding="async" loading="lazy" alt="Ilustración sobre AWS" src="https://github.com/joeden/es/assets/images/image-1-29c1c3025bb0f4b2876c9b265c0116da.png" width="800" height="308" class="img_ev3q"></p>
<p>Para darte algo de contexto, empecé mi carrera en redes informáticas, trabajando con routers, switches y herramientas de gestión de redes.</p>
<p>También pasé un breve periodo en soporte de aplicaciones en una empresa de tecnología financiera, y en mi anterior trabajo tuve la oportunidad de trabajar con servidores Linux.</p>
<p>En conjunto, diría que soy más bien alguien de infraestructura con un poco de programación.</p>
<p>Aunque todavía sigo en construcción.</p>
<p>Me quedan muchas tecnologías por aprender, así que intento participar en tantos proyectos de Linux y Python como puedo.</p>
<p>La automatización sigue siendo un concepto relativamente nuevo para mí, pero poco a poco me siento más cómodo creando mis propios scripts y procesos.</p>
<p><img decoding="async" loading="lazy" alt="Ilustración sobre el aprendizaje" src="https://github.com/joeden/es/assets/images/image-2-9c3cf87f10fee8a117c5e6e99f1dd898.png" width="588" height="240" class="img_ev3q"></p>
<p>Mi recorrido por AWS empezó con el <strong>examen AWS Cloud Practitioner</strong> en agosto pasado.</p>
<p>Luego, 29 días después, me presenté al <strong>examen AWS Solutions Architect Associate</strong>.</p>
<p>Después puse la mira en SysOps.</p>
<p>Por desgracia, en ese momento había otras cosas del trabajo que requerían mi atención, así que tuve que aparcar los estudios de SysOps un tiempo.</p>
<p>Retomé el repaso entre enero y febrero y decidí empezar a publicar mis apuntes en GitHub.</p>
<p>Por esas fechas también surgieron algunas dificultades personales en casa que me frenaron un poco.</p>
<p>Aun así, intenté recomponerme, seguir adelante con la misión y fijarme el objetivo de hacer el examen en marzo.</p>
<p>Poco sabía entonces que acabaría posponiéndolo otros dos meses.</p>
<p>En mi primer intento tuve problemas con la conexión a internet y el supervisor canceló el examen mientras esperaba a que se cargara la ventana de la prueba.</p>
<p>Ya había hecho varios exámenes de certificación en línea con <strong>Pearson VUE</strong>, pero era la primera vez que cerraban uno sin avisarme antes.</p>
<p>Informé del problema y, unos cuatro días después, me devolvieron tanto el importe del examen como el cupón que había utilizado.</p>
<p>Como iba algo justo de presupuesto, esperé a recibir el reembolso antes de programar el segundo intento.</p>
<p>Y llegó el 24 de mayo.</p>
<p>Preparé el escritorio de casa, despejé la mente y me senté a hacer el examen.</p>
<p>La verdad es que recé con ganas para que esta vez todo funcionara, porque ya había dedicado muchísimo tiempo a prepararlo.</p>
<p>Tras unos 48 minutos, envié la respuesta a la pregunta 65.</p>
<p>Unos clics más tarde, apareció el resultado delante de mí.</p>
<p><strong>RESULTADO: APROBADO</strong></p>
<p>Y, vaya, qué bien sabe esa victoria.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="apuntes-que-quizá-te-ayuden">Apuntes que quizá te ayuden<a href="https://github.com/joeden/es/writings/the-examination-day#apuntes-que-quiz%C3%A1-te-ayuden" class="hash-link" aria-label="Enlace directo al Apuntes que quizá te ayuden" title="Enlace directo al Apuntes que quizá te ayuden" translate="no">​</a></h2>
<p>Por supuesto, es bastante probable que hayas encontrado este artículo buscando apuntes y consejos para preparar el <strong>examen AWS SysOps Administrator Associate</strong>.</p>
<p>Así que sí, también los incluyo aquí.</p>
<p>Puedes encontrar mis apuntes de GitHub <a href="https://github.com/joseeden/notes-aws-sysops" target="_blank" rel="noopener noreferrer" class="">aquí</a>.</p>
<p>No olvides revisar también los <a href="https://github.com/joseeden/notes-aws-sysops/tree/master/Notes" target="_blank" rel="noopener noreferrer" class="">resúmenes</a>.</p>
<p>Estos fueron los materiales en los que me centré:</p>
<ul>
<li class="">
<p><a href="https://www.udemy.com/course/ultimate-aws-certified-sysops-administrator-associate/" target="_blank" rel="noopener noreferrer" class="">Ultimate AWS Certified SysOps Administrator Associate 2021</a>
de Stephane Maarek</p>
</li>
<li class="">
<p><a href="https://www.udemy.com/course/aws-certified-sysops-administrator-associate-training/" target="_blank" rel="noopener noreferrer" class="">(NEW) AWS Certified SysOps Administrator Associate 2021</a>
de Neal Davis</p>
</li>
<li class="">
<p><a href="https://portal.tutorialsdojo.com/product/aws-certified-sysops-administrator-associate-practice-exams/" target="_blank" rel="noopener noreferrer" class="">AWS Certified SysOps Administrator Associate Practice Exams 2021</a>
de Tutorials Dojo</p>
</li>
<li class="">
<p><a href="https://docs.aws.amazon.com/" target="_blank" rel="noopener noreferrer" class="">Documentación oficial de AWS</a></p>
</li>
<li class="">
<p><a href="https://aws.amazon.com/certification/certified-sysops-admin-associate/" target="_blank" rel="noopener noreferrer" class="">Guía del examen AWS SysOps Administrator Associate</a></p>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="por-dónde-empezar">Por dónde empezar<a href="https://github.com/joeden/es/writings/the-examination-day#por-d%C3%B3nde-empezar" class="hash-link" aria-label="Enlace directo al Por dónde empezar" title="Enlace directo al Por dónde empezar" translate="no">​</a></h2>
<p>Yo recomendaría empezar por el curso de Stephane Maarek o por el de Neal Davis.</p>
<p>Sinceramente, completar uno de los dos ya debería aportarte mucho.</p>
<p>Yo hice ambos porque tienen enfoques algo distintos y me gustaba la idea de que uno cubriera los detalles que pudiera haber pasado por alto en el otro.</p>
<p>Pero no te limites a ver vídeos.</p>
<p>Asegúrate de pasar tiempo de verdad dentro de la consola de AWS.</p>
<p>Creo que es <strong>imprescindible</strong> familiarizarse con las pestañas, opciones, menús y ajustes, porque verlos y utilizarlos ayuda a afianzar los conceptos que aprendes en los cursos.</p>
<p>Y, además de seguir las prácticas, intenta romper algunas de las cosas que construyas.</p>
<p>En serio.</p>
<p>Rómpelas.</p>
<p>Y luego averigua cómo arreglarlas.</p>
<p>Así no te limitas a memorizar los pasos de un tutorial. También entrenas tu capacidad para diagnosticar problemas, consultar documentación y aprovechar tus habilidades de búsqueda.</p>
<p>Una vez que hayas terminado el curso y te muevas con soltura por la consola de AWS, puedes pasar a los exámenes de práctica.</p>
<p>Puedes probar los de Maarek y Davis, también disponibles en <a href="https://www.udemy.com/" target="_blank" rel="noopener noreferrer" class="">Udemy</a>, y combinarlos con las pruebas de <a href="https://tutorialsdojo.com/" target="_blank" rel="noopener noreferrer" class="">Tutorials Dojo</a>.</p>
<p>Algo que me gustó mucho de los exámenes de Tutorials Dojo es que cada pregunta viene con una explicación de las respuestas correctas e incorrectas.</p>
<p>No memorices solo qué opción es la correcta.</p>
<p>Lee las explicaciones.</p>
<p>Entiende por qué una respuesta funciona y las otras no.</p>
<p>Hay preguntas en las que más de una respuesta parece razonable a primera vista, así que es muy importante comprender las diferencias.</p>
<p>Por último, complementa los cursos y los exámenes de práctica con la documentación oficial de AWS.</p>
<p>Por supuesto, no podrás leer todas las páginas de documentación de cada servicio.</p>
<p>Probablemente perderías la cabeza intentándolo.</p>
<p>Pero leer la documentación oficial de los servicios y conceptos que te cuestan sí puede ayudarte a cubrir las lagunas.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="reflexiones-finales">REFLEXIONES FINALES<a href="https://github.com/joeden/es/writings/the-examination-day#reflexiones-finales" class="hash-link" aria-label="Enlace directo al REFLEXIONES FINALES" title="Enlace directo al REFLEXIONES FINALES" translate="no">​</a></h2>
<p>Pensé en poner esta sección al principio porque creo que es algo que deberías tener claro antes incluso de empezar a estudiar.</p>
<p>Hazte todas estas preguntas.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="por-qué-quieres-hacer-el-examen">¿Por qué quieres hacer el examen?<a href="https://github.com/joeden/es/writings/the-examination-day#por-qu%C3%A9-quieres-hacer-el-examen" class="hash-link" aria-label="Enlace directo al ¿Por qué quieres hacer el examen?" title="Enlace directo al ¿Por qué quieres hacer el examen?" translate="no">​</a></h3>
<p>Quizá sea para avanzar en tu carrera.</p>
<p>Quizá quieras aprender una habilidad nueva.</p>
<p>Quizá estés intentando entrar en un puesto relacionado con la nube.</p>
<p>Quizá simplemente sientas mucha curiosidad por AWS.</p>
<p>Sea cual sea tu razón, creo que es importante conocerla, porque determinará cómo afrontas todo el proceso de aprendizaje.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="no-hagas-el-examen-solo-por-conseguir-la-certificación-o-la-insignia">No hagas el examen solo por conseguir la certificación o la insignia<a href="https://github.com/joeden/es/writings/the-examination-day#no-hagas-el-examen-solo-por-conseguir-la-certificaci%C3%B3n-o-la-insignia" class="hash-link" aria-label="Enlace directo al No hagas el examen solo por conseguir la certificación o la insignia" title="Enlace directo al No hagas el examen solo por conseguir la certificación o la insignia" translate="no">​</a></h3>
<p>Está bien tener una certificación, pero, en cualquier puesto relacionado con la nube, tarde o temprano tendrás que respaldarla con habilidades y experiencia reales.</p>
<p>Y la única forma de hacerlo es construir algo.</p>
<p>No tiene que ser enorme.</p>
<p>No tiene que ser una arquitectura disparatada, lista para producción y con veinte servicios de AWS.</p>
<p>Simplemente construye.</p>
<p>Rompe cosas.</p>
<p>Arréglalas.</p>
<p>Vuelve a probar algo.</p>
<p>Manos a la obra.</p>
<p>Yo sigo en esa misma búsqueda, intentando conocer tantas tecnologías de la nube como sea posible.</p>
<p>Y sería estupendo que más personas se subieran al mismo tren.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="aprende-por-el-placer-de-aprender">Aprende por el placer de aprender<a href="https://github.com/joeden/es/writings/the-examination-day#aprende-por-el-placer-de-aprender" class="hash-link" aria-label="Enlace directo al Aprende por el placer de aprender" title="Enlace directo al Aprende por el placer de aprender" translate="no">​</a></h3>
<p>Aprende porque algo te despierta muchísima curiosidad.</p>
<p>Aprende porque hay algo que todavía no entiendes y quieres descubrirlo.</p>
<p>Si consigues mantener esa mentalidad, creo que llegarás lejos en lo que decidas emprender.</p>
<p><a href="https://github.com/joseeden/notes-aws-sysops" target="_blank" rel="noopener noreferrer" class="">¡Y ahora, a disfrutar aprendiendo!</a></p>]]></content:encoded>
            <category>Apuntes de desarrollo</category>
        </item>
        <item>
            <title><![CDATA[Adiós, Disney]]></title>
            <link>https://github.com/joeden/es/writings/bye-disney</link>
            <guid>https://github.com/joeden/es/writings/bye-disney</guid>
            <pubDate>Fri, 21 May 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Ilustración del artículo]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Ilustración del artículo" src="https://github.com/joeden/es/assets/images/image-a898d0d7bccb5aca956ac8e8a8390fed.png" width="1422" height="640" class="img_ev3q"></p>
<p>Y llegó el día.</p>
<p>Iniciando sesión por última vez.</p>
<p>Es extraño cómo algo que has hecho casi a diario acaba convirtiéndose en algo que harás por última vez.</p>
<p>Un último inicio de sesión.</p>
<p>Una última mirada a las herramientas, mensajes, tickets, sistemas y todas esas otras cosas que poco a poco se volvieron parte de la rutina.</p>
<p>Una última mirada a Disneyland.</p>
<p>Me llevo mucho de mi tiempo aquí.</p>
<p>Aprendí muchísimo del equipo de Filipinas, especialmente al ver cómo se construyen, mantienen y arreglan las aplicaciones, y cómo a veces se rompen antes de volver a arreglarse.</p>
<p>Aprendí tanto o más del equipo de Estados Unidos. Las redes ya eran un terreno conocido para mí, pero siempre hay una diferencia entre lo que sabes por los libros y las certificaciones y lo que ves cuando todas las piezas funcionan juntas en el mundo real.</p>
<p>Y, por supuesto, también aprendí muchísimo de la <strong>Casa del Ratón</strong>.</p>
<p>Distintos equipos. Distintas personas. Distintos problemas.</p>
<p>Algunos días fueron tranquilos.</p>
<p>Otros, desde luego, no.</p>
<p>Hubo cosas que entendí de inmediato y otras que me llevaron a pasar horas buscando en Google, leyendo documentación, mirando registros y preguntándome qué demonios se me escapaba.</p>
<p>Pero supongo que es parte del proceso.</p>
<p>No te das cuenta de cuánto has aprendido por el camino hasta que estás a punto de irte y, de repente, empiezas a mirar atrás.</p>
<p>Los sistemas en los que he trabajado, los problemas que he encontrado, las personas de las que he aprendido e incluso los errores que he cometido se han convertido en pequeñas experiencias que me llevaré adonde vaya.</p>
<p>Y ahora toca cerrar este capítulo.</p>
<p>Tomando prestada una frase de <em>Closing Time</em>:</p>
<p><strong>«Todo nuevo comienzo nace del final de otro comienzo».</strong></p>
<p>Así que sí.</p>
<p>A por un nuevo comienzo increíble.</p>]]></content:encoded>
            <category>Personal</category>
        </item>
        <item>
            <title><![CDATA[Los 100: Días después]]></title>
            <link>https://github.com/joeden/es/writings/the-100-days-later</link>
            <guid>https://github.com/joeden/es/writings/the-100-days-later</guid>
            <pubDate>Mon, 15 Feb 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Hola. Si estás leyendo esto, probablemente seas una de esas cien personas que ahora mismo buscan algo de motivación y que, de alguna manera, se toparon con la inspiradora imagen de este artículo.]]></description>
            <content:encoded><![CDATA[<p>Hola. Si estás leyendo esto, probablemente seas una de esas cien personas que ahora mismo buscan algo de motivación y que, de alguna manera, se toparon con la inspiradora imagen de este artículo.</p>
<p>Luego leíste el título y te preguntaste de qué va este blog tan genial.</p>
<p><img decoding="async" loading="lazy" alt="Ilustración del artículo" src="https://github.com/joeden/es/assets/images/image-d532bc85ddda059df96776c8368be160.png" width="500" height="211" class="img_ev3q"></p>
<p>Bueno, antes que nada, quiero aclarar que esto no trata sobre la emocionante serie de ciencia ficción <a href="https://en.wikipedia.org/wiki/The_100_%28TV_series%29" target="_blank" rel="noopener noreferrer" class="">The 100</a>.</p>
<p>Aunque te recomendaría verla. Seguro que te atrapan su ambiente posapocalíptico, la forma en que la humanidad intenta reconstruir la sociedad y cómo la serie pone a prueba tus ideas sobre el liderazgo y las decisiones cuando apenas quedan buenas opciones.</p>
<p>La verdad es que no empecé a disfrutarla de verdad hasta el cuarto episodio, más o menos.</p>
<p>Y, de alguna manera, acabé aplaudiendo al llegar al final de la quinta temporada.</p>
<p>Dato curioso: el primer episodio de la quinta temporada se llama «Eden».</p>
<p><img decoding="async" loading="lazy" alt="Imagen de la serie" src="https://github.com/joeden/es/assets/images/image-1-ad56aaaaf39d247a876811ab7677a61f.png" width="2304" height="1232" class="img_ev3q"></p>
<p>En fin, ¿por dónde iba?</p>
<p>Ah, sí. De qué trata realmente este artículo tan genial.</p>
<p>Vale, un poco de contexto.</p>
<p>Empecé el <strong>reto #100DaysOfCode</strong> el 6 de noviembre de 2020, y hoy puedo decir con orgullo que lo he conseguido.</p>
<p>He completado los 100 días.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="entonces-de-qué-demonios-va-esto">Entonces, ¿de qué demonios va esto?<a href="https://github.com/joeden/es/writings/the-100-days-later#entonces-de-qu%C3%A9-demonios-va-esto" class="hash-link" aria-label="Enlace directo al Entonces, ¿de qué demonios va esto?" title="Enlace directo al Entonces, ¿de qué demonios va esto?" translate="no">​</a></h2>
<p>He estado leyendo blogs de desarrolladores y he visto mencionar mucho el <strong>reto #100DaysOfCode</strong>.</p>
<p>La idea es bastante sencilla.</p>
<p>Programas de forma constante durante 100 días consecutivos y publicas tus avances en Twitter, o en la red social que uses, con la etiqueta <strong>#100DaysOfCode</strong>.</p>
<p>No hay reglas estrictas sobre qué lenguaje debes usar ni qué tipo de proyectos debes construir.</p>
<p>Solo tienes que seguir haciendo algo cada día durante 100 días.</p>
<p>Como soy un tipo aventurero, reuní todos los cursos que quería estudiar, hice una lista de lo que quería lograr y empecé el día 1 el 6 de noviembre del año pasado.</p>
<p>Incluso escribí un artículo entonces, que puedes leer <a class="" href="https://github.com/joeden/es/writings/day-1-where-to-start">aquí</a>.</p>
<p><img decoding="async" loading="lazy" alt="Ilustración del reto" src="https://github.com/joeden/es/assets/images/image-2-98d1a59b45c5d55462c1223d8b8a8376.png" width="849" height="357" class="img_ev3q"></p>
<p>Durante las primeras semanas estaba lleno de entusiasmo.</p>
<p>Seguí con ganas los vídeos y las prácticas de <a href="https://www.coursera.org/projects/git-for-developers-using-github" target="_blank" rel="noopener noreferrer" class="">Git for Developers using Github</a> en Coursera, pasé a la introducción de Todd McLeod a <a href="https://www.udemy.com/course/visual-studio-code-tutorial/" target="_blank" rel="noopener noreferrer" class="">Visual Studio Code</a> y después empecé el popular curso de Python de Al Sweigart, <a href="https://automatetheboringstuff.com/" target="_blank" rel="noopener noreferrer" class="">Automate the Boring Stuff with Python</a>.</p>
<p>Pude acceder gratis a todos estos cursos gracias a varios cupones de Udemy y a un programa de estudios de Coursera patrocinado por el gobierno.</p>
<p>Así que sí, eso ayudó mucho.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="la-cuesta-arriba">La cuesta arriba<a href="https://github.com/joeden/es/writings/the-100-days-later#la-cuesta-arriba" class="hash-link" aria-label="Enlace directo al La cuesta arriba" title="Enlace directo al La cuesta arriba" translate="no">​</a></h2>
<p>Por supuesto, sientes esa pequeña oleada de satisfacción cada vez que terminas un cuestionario, una práctica o una etapa del curso.</p>
<p>Por fin aciertas la respuesta.</p>
<p>Terminas el ejercicio.</p>
<p>Ves esa pequeña marca verde.</p>
<p>La vida es buena.</p>
<p>Luego está la otra cara.</p>
<p>Llegas a una práctica que no consigues superar porque es condenadamente difícil.</p>
<p>Pasas horas intentando resolverla, decides dejarla hasta después de dormir, te despiertas a la mañana siguiente, abres exactamente la misma práctica...</p>
<p>Y sigues atascado.</p>
<p>Solo que en otro día.</p>
<p><img decoding="async" loading="lazy" alt="Ilustración sobre quedarse atascado" src="https://github.com/joeden/es/assets/images/image-4-26b66073a1c913536ae5623d2317cf21.png" width="1504" height="944" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="también-ves-la-madriguera-pero-nunca-llegas-al-fondo">También ves la madriguera, pero nunca llegas al fondo<a href="https://github.com/joeden/es/writings/the-100-days-later#tambi%C3%A9n-ves-la-madriguera-pero-nunca-llegas-al-fondo" class="hash-link" aria-label="Enlace directo al También ves la madriguera, pero nunca llegas al fondo" title="Enlace directo al También ves la madriguera, pero nunca llegas al fondo" translate="no">​</a></h2>
<p>Otra cosa que me resultó agotadora fue lidiar con problemas inesperados.</p>
<p>Cada vez que algo no funcionaba, buscaba el error en Google, abría los primeros tres o cinco enlaces y empezaba a probar las soluciones sugeridas.</p>
<p>A veces funcionaba alguna.</p>
<p>La mayoría de las veces, una solución solo me daba un mensaje de error completamente distinto.</p>
<p>Así que, naturalmente, también buscaba ese nuevo error.</p>
<p>Luego leía otros cuantos enlaces.</p>
<p>Veía un vídeo en YouTube.</p>
<p>Probaba otro comando.</p>
<p>Recibía otro error.</p>
<p>Volvía a buscar.</p>
<p>Y, antes de darte cuenta, has caído hasta el fondo de una madriguera.</p>
<p>Solo querías resolver un problemita, pero, de alguna manera, has descubierto otros cinco por el camino.</p>
<p><img decoding="async" loading="lazy" alt="Ilustración sobre las búsquedas interminables" src="https://github.com/joeden/es/assets/images/image-3-9c32ecc0debff0497ff20bbf46e47fce.png" width="1000" height="857" class="img_ev3q"></p>
<p>Pero ¿sabes qué?</p>
<p>De tanto <strong>excavar en madrigueras</strong> salió algo bueno.</p>
<p>Empecé a darme cuenta de cuándo los problemas nuevos me estaban alejando poco a poco del que realmente quería resolver.</p>
<p>Y, cuando eso ocurría, aprendí a parar, ordenar mis ideas y preguntarme si de verdad necesitaba seguir excavando.</p>
<p>Un ejemplo fue cuando un instructor de KodeKloud estaba instalando Docker en su máquina Ubuntu mientras yo usaba una instancia EC2 con RHEL 8.</p>
<p>Me apareció un error al utilizar uno de los scripts de instalación rápida del sitio de Docker.</p>
<p>La verdad es que ya no recuerdo el error exacto.</p>
<p>Pero tenía la sensación de que podía estar relacionado con RHEL 8.</p>
<p>Nunca llegué a confirmarlo porque, en vez de seguir buscando el error en Google, decidí comprobar si AWS tenía una AMI de RHEL 7 disponible.</p>
<p>Por desgracia, no la tenía.</p>
<p>Así que probé con CentOS.</p>
<p>¿Y sabes qué?</p>
<p>Todo funcionó.</p>
<p>Así que supongo que, con el tiempo, desarrollas una especie de extraño sentido sobrehumano para detectar cuándo un problema está a punto de llevarte por una madriguera interminable de mensajes de error.</p>
<p>Entonces decides si merece la pena seguir por ahí o si existe otra forma de llegar a donde necesitas sin perder otras tres horas.</p>
<p>Por cierto, en algún momento también aprendí el término <strong>deuda técnica</strong>.</p>
<p>Aunque no diría que se aplica a todas las situaciones de este tipo.</p>
<p>Lo que sí aprendí es que no deberías dejar que se acumule indefinidamente, porque tarde o temprano volverá para darte una buena mordida en el trasero.</p>
<p>Quizá algún día haga una pequeña búsqueda para averiguar por qué aquel script de Docker no funcionaba en RHEL 8.</p>
<p>Ya sabes.</p>
<p>Para cerrar el tema.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="la-realidad-se-hace-sentir">La realidad se hace sentir<a href="https://github.com/joeden/es/writings/the-100-days-later#la-realidad-se-hace-sentir" class="hash-link" aria-label="Enlace directo al La realidad se hace sentir" title="Enlace directo al La realidad se hace sentir" translate="no">​</a></h2>
<p>Pasaron unas semanas y llegó mi primer bajón.</p>
<p>Seguía haciendo prácticas, pero ya no terminaba tantas como antes.</p>
<p>Había mucho trabajo en ese momento, y el esfuerzo mental adicional de estudiar y hacer prácticas por mi cuenta empezaba a pasar factura.</p>
<p>Así que reduje la actividad durante unos días.</p>
<p>Por mucho que quisiera parar y descansar del todo, ese pequeño cabr*n dentro de mi cabeza no me dejaba abandonar el reto.</p>
<p>Tampoco pude seguir el plan original del día 1.</p>
<p>Por ejemplo, al final no hice otro curso de desarrollo web porque decidí centrarme más en la automatización.</p>
<p>El segundo y tercer mes fueron una especie de montaña rusa.</p>
<p>En total, tuve unos tres periodos en los que bajé mucho el ritmo.</p>
<p>Y debo admitir que hubo bastantes dudas durante aquellos 100 días.</p>
<p>Hubo momentos en que me pregunté de verdad si todo ese esfuerzo serviría para algo.</p>
<p>Quizá estaba perdiendo el tiempo.</p>
<p>Quizá nada de esto me ayudaría.</p>
<p>Quizá las cosas no saldrían como esperaba.</p>
<p>Y, por extraño que parezca, no intenté expulsar esos pensamientos por completo.</p>
<p>Les di espacio.</p>
<p>Dejé que se quedaran en mi cabeza.</p>
<p>Pero, de alguna manera, había una versión testaruda de mí que se negaba a tirar la toalla.</p>
<p>¿Y sabes qué?</p>
<p>Consiguió vencer esos miedos cada vez.</p>
<p><img decoding="async" loading="lazy" alt="Ilustración sobre perseverar" src="https://github.com/joeden/es/assets/images/image-5-57bbf319a2fd0c2225d3f138c6ac5f07.png" width="612" height="408" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="para-cerrar-este-capítulo">Para cerrar este capítulo<a href="https://github.com/joeden/es/writings/the-100-days-later#para-cerrar-este-cap%C3%ADtulo" class="hash-link" aria-label="Enlace directo al Para cerrar este capítulo" title="Enlace directo al Para cerrar este capítulo" translate="no">​</a></h2>
<p>Ahora que por fin han terminado los 100 días, he repasado todos mis tuits desde el principio y me he permitido descansar un poco.</p>
<p>Sé que no he producido una enorme cantidad de proyectos.</p>
<p>Pero, al mirar atrás, sí aprendí mucho sobre Linux, Python, Git, automatización e incluso sobre mi manera de abordar los problemas en general.</p>
<p>Y, por extraño que parezca, después de todo, los 100 días se me hicieron cortos.</p>
<p>Por eso he decidido emprender otra aventura.</p>
<p><strong>Segunda ronda del reto #100Days.</strong></p>
<p>Solo que esta vez me lanzo a dos retos a la vez:</p>
<ul>
<li class=""><strong>#100DaysOfCode</strong></li>
<li class=""><strong>#100DaysOfFit</strong></li>
</ul>
<p>El <strong>#100DaysOfCode</strong> continuará, básicamente, donde acabó la primera ronda, pero esta vez me limitaré a temas más relacionados con mi trabajo actual:</p>
<ul>
<li class="">Apache Kafka</li>
<li class="">Docker y Kubernetes</li>
<li class="">Python para automatización</li>
<li class="">AWS SysOps, aunque esto es más bien un objetivo personal</li>
</ul>
<p>Luego está <strong>#100DaysOfFit</strong>, que en realidad son dos retos más pequeños que decidí unir:</p>
<ul>
<li class=""><strong>100 días de ayuno:</strong> mantener un ayuno de 16 horas de forma constante</li>
<li class=""><strong>100 días corriendo:</strong> correr al menos 30 minutos, al aire libre o en una cinta</li>
</ul>
<p>De nuevo, no espero que todo vaya como la seda durante los próximos 100 días.</p>
<p>Será difícil.</p>
<p>Probablemente me sentiré abrumado de vez en cuando, sobre todo cuando la vida decida intervenir.</p>
<p>Seguramente volveré a atascarme con otro problema.</p>
<p>Seguramente pasaré tardes enteras enterrado en documentación.</p>
<p>Y sin duda habrá días en los que me dé demasiada pereza leer y decida ver vídeos de YouTube.</p>
<p>Probablemente surgirán muchas preguntas al empezar otra vez.</p>
<p>Pero espero que al final también me esperen menos <strong>«¿y si...?»</strong>.</p>
<p><em>«Puedes hacerlo. Deberías hacerlo. Y si eres lo bastante valiente para empezar, lo harás».</em></p>
<ul>
<li class="">Stephen King</li>
</ul>]]></content:encoded>
            <category>Apuntes de desarrollo</category>
        </item>
        <item>
            <title><![CDATA[El trabajo interminable de mejorar]]></title>
            <link>https://github.com/joeden/es/writings/never-ending-improvement</link>
            <guid>https://github.com/joeden/es/writings/never-ending-improvement</guid>
            <pubDate>Thu, 21 Jan 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Ilustración del artículo]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Ilustración del artículo" src="https://github.com/joeden/es/assets/images/image-367e612afff3241cebaffbcd0f6b1451.png" width="2048" height="1536" class="img_ev3q"></p>
<p>Me he dado cuenta de que el deseo de aprender a veces puede chocar de frente con el deseo de estabilidad.</p>
<p>Queremos sistemas fiables. Predecibles. Tranquilos.</p>
<p>Queremos que las cosas funcionen tan bien que nadie tenga que pensar en ellas.</p>
<p>Pero entonces llega alguien con una función nueva, un requisito nuevo, una forma mejor de hacer algo o, quizá, simplemente una pregunta:</p>
<p><strong>¿Podemos mejorar esto?</strong></p>
<p>Y la respuesta casi siempre es sí.</p>
<p>¿Llegaremos alguna vez a un punto en el que no quede absolutamente nada por mejorar?</p>
<p>Probablemente no.</p>
<p>Mientras haya personas usando un servicio, encontrarán nuevas maneras de utilizarlo, nuevos problemas con los que tropezar y nuevas cosas que esperar de él.</p>
<p>Lo curioso es que mejorar algo a menudo implica alterar lo que ya funciona.</p>
<p>Cambias el código.</p>
<p>Sustituyes un componente.</p>
<p>Mueves algo a otro lugar.</p>
<p>Pones a prueba una suposición y descubres que era incorrecta.</p>
<p>A veces rompes cosas.</p>
<p>Y, por extraño que parezca, de ahí viene buena parte de la emoción.</p>
<p>Hay algo satisfactorio en encontrar ese punto débil de un sistema, averiguar por qué falló, reunir los datos y construir poco a poco una solución a su alrededor.</p>
<p>Lo arreglas.</p>
<p>Lo haces más resistente.</p>
<p>Lo proteges.</p>
<p>Y, con el tiempo, encuentras lo siguiente que necesita atención.</p>
<p>Todavía me quedan muchas cosas por romper y arreglar.</p>
<p>Muchas por construir y reconstruir.</p>
<p>Muchas más por mover, sustituir, mejorar y, probablemente, volver a romper.</p>
<p>Y, sinceramente, disfruto viendo ese proceso.</p>
<p>Ver cómo algo empieza como una prueba de concepto rudimentaria y crece poco a poco hasta convertirse en algo real, estable y útil en producción.</p>
<p>Quizá ese sea el extraño equilibrio de la ingeniería.</p>
<p>Pasas la mitad del tiempo intentando que las cosas sean estables.</p>
<p>Y la otra mitad cambiándolas antes de que se acomoden demasiado.</p>]]></content:encoded>
            <category>Personal</category>
        </item>
        <item>
            <title><![CDATA[Terminar un proceso defunct]]></title>
            <link>https://github.com/joeden/es/writings/killing-a-defunct-process</link>
            <guid>https://github.com/joeden/es/writings/killing-a-defunct-process</guid>
            <pubDate>Wed, 18 Nov 2020 00:00:00 GMT</pubDate>
            <description><![CDATA[Ilustración del artículo]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Ilustración del artículo" src="https://github.com/joeden/es/assets/images/image-713fb730368afc783edb288d7f543b0b.png" width="700" height="294" class="img_ev3q"></p>
<p>Me encontré con esto al intentar instalar <code>htop</code> en una de mis instancias EC2 de pruebas con RHEL. Estaba siguiendo los pasos de esta <a href="https://www.cyberciti.biz/faq/how-to-install-htop-on-rhel-8-using-yum/" target="_blank" rel="noopener noreferrer" class="">guía</a>.</p>
<p>Esto también me llevó a aprender un poco más sobre los procesos <strong>defunct</strong>, o <strong>zombis</strong>, en Linux. Puedes leer más sobre ellos <a href="https://stackoverflow.com/questions/47977402/zombie-vs-defunct-processes" target="_blank" rel="noopener noreferrer" class="">aquí</a>.</p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="qué-ocurrió">Qué ocurrió<a href="https://github.com/joeden/es/writings/killing-a-defunct-process#qu%C3%A9-ocurri%C3%B3" class="hash-link" aria-label="Enlace directo al Qué ocurrió" title="Enlace directo al Qué ocurrió" translate="no">​</a></h2>
<p>Tenía dos terminales abiertas, ambas conectadas a la misma instancia EC2.</p>
<p>En la primera estaba ejecutando:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">yum update -y</span><br></div></code></pre></div></div>
<p>Mientras seguía la actualización, intenté instalar otro paquete desde la segunda terminal.</p>
<p>Apareció este mensaje:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">Running transaction check</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Waiting for process with pid 5941 to finish.</span><br></div></code></pre></div></div>
<p>Así que comprobé qué proceso estaba usando el PID <code>5941</code>:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">$ ps -ef | grep 5941</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">root        5941    5939 18 06:00 pts/0    00:01:42 yum update -y</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">root       36173   36153  0 06:09 pts/2    00:00:00 grep --color=auto 5941</span><br></div></code></pre></div></div>
<p>Efectivamente, el PID <code>5941</code> correspondía al proceso <code>yum update</code> que se ejecutaba en la primera terminal.</p>
<p>Como la actualización estaba tardando, decidí cancelarla para instalar primero los paquetes que necesitaba y volver a ejecutarla después.</p>
<p>Pero, al intentar instalar de nuevo el paquete, seguía apareciendo el mismo mensaje sobre el PID <code>5941</code>.</p>
<p>Al revisar otra vez el proceso, vi algo distinto:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">$ ps -ef | grep 5941</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">root        5941    5939 18 06:00 pts/0    00:01:42 [yum] &lt;defunct&gt;</span><br></div></code></pre></div></div>
<p>El proceso <code>yum</code> aparecía ahora como <code>&lt;defunct&gt;</code>.</p>
<p>Naturalmente, lo primero que pensé fue:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">kill -9 5941</span><br></div></code></pre></div></div>
<p>Problema resuelto, ¿no?</p>
<p>Pues no exactamente.</p>
<p>El proceso seguía apareciendo como <code>&lt;defunct&gt;</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="qué-significa-defunct">¿Qué significa <code>&lt;defunct&gt;</code>?<a href="https://github.com/joeden/es/writings/killing-a-defunct-process#qu%C3%A9-significa-defunct" class="hash-link" aria-label="Enlace directo al qué-significa-defunct" title="Enlace directo al qué-significa-defunct" translate="no">​</a></h2>
<p>Un proceso marcado como <code>&lt;defunct&gt;</code> ya ha terminado de ejecutarse.</p>
<p>En otras palabras, técnicamente ya no queda nada que terminar.</p>
<p>Cuando un proceso hijo finaliza, su proceso padre debe recoger su estado de salida. Hasta que lo hace, Linux conserva una pequeña entrada del hijo en la tabla de procesos.</p>
<p>Esa entrada restante es lo que llamamos un <strong>proceso zombi</strong>.</p>
<p>Y, al ejecutar <code>ps</code>, los procesos zombis suelen mostrarse así:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">&lt;defunct&gt;</span><br></div></code></pre></div></div>
<p>Por eso ejecutar:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">kill -9 PID</span><br></div></code></pre></div></div>
<p>no lo elimina.</p>
<p>El proceso ya está muerto. <code>SIGKILL</code> no tiene nada que terminar.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="qué-hacer">Qué hacer<a href="https://github.com/joeden/es/writings/killing-a-defunct-process#qu%C3%A9-hacer" class="hash-link" aria-label="Enlace directo al Qué hacer" title="Enlace directo al Qué hacer" translate="no">​</a></h2>
<p>Primero, localiza el proceso padre del proceso defunct.</p>
<p>Puedes usar:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">$ ps -ef | grep defunct</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">UID          PID    PPID  C STIME TTY          TIME CMD</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">root        5941    5939  6 06:00 pts/0    00:01:42 [yum] &lt;defunct&gt;</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">eden       36210    6097  0 06:24 pts/2    00:00:00 grep --color=auto defunct</span><br></div></code></pre></div></div>
<p>Las columnas importantes son estas:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">PID     PPID</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">5941    5939</span><br></div></code></pre></div></div>
<p><code>5941</code> es el proceso zombi.</p>
<p><code>5939</code> es su proceso padre.</p>
<p>Antes de terminar nada, conviene comprobar qué es exactamente ese proceso padre:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">ps -fp 5939</span><br></div></code></pre></div></div>
<p>Si se puede finalizar de forma segura, puedes intentar detenerlo normalmente:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">sudo kill 5939</span><br></div></code></pre></div></div>
<p>Después, vuelve a comprobarlo:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">ps -ef | grep defunct</span><br></div></code></pre></div></div>
<p>Si el padre se resiste a terminar y estás seguro de que es seguro finalizarlo, puedes recurrir a <code>SIGKILL</code> como último recurso:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">sudo kill -9 5939</span><br></div></code></pre></div></div>
<p>Una vez que finalice el proceso padre, normalmente otro proceso, como <code>init</code> o <code>systemd</code>, debería adoptar y recoger el zombi.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="algo-que-conviene-recordar">Algo que conviene recordar<a href="https://github.com/joeden/es/writings/killing-a-defunct-process#algo-que-conviene-recordar" class="hash-link" aria-label="Enlace directo al Algo que conviene recordar" title="Enlace directo al Algo que conviene recordar" translate="no">​</a></h2>
<p>No ejecutes <code>kill -9</code> de inmediato contra todos los procesos que veas.</p>
<p>Sobre todo al tratar con procesos padre, comprueba siempre primero de qué proceso se trata:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">ps -fp &lt;PPID&gt;</span><br></div></code></pre></div></div>
<p>Un proceso defunct no está consumiendo CPU ni ejecutándose activamente. Es, en esencia, una entrada que espera a que su padre reconozca que ya ha terminado.</p>
<p>Así que, si alguna vez ves:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">[process] &lt;defunct&gt;</span><br></div></code></pre></div></div>
<p>recuerda:</p>
<p><strong>El proceso ya está muerto. Lo que realmente debes investigar es su padre.</strong></p>
<hr>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="referencias">Referencias<a href="https://github.com/joeden/es/writings/killing-a-defunct-process#referencias" class="hash-link" aria-label="Enlace directo al Referencias" title="Enlace directo al Referencias" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://www.cyberciti.biz/faq/how-to-install-htop-on-rhel-8-using-yum/" target="_blank" rel="noopener noreferrer" class="">Cómo instalar htop en RHEL 8 usando yum</a></li>
<li class=""><a href="https://askubuntu.com/questions/201303/what-is-a-defunct-process-and-why-doesnt-it-get-killed" target="_blank" rel="noopener noreferrer" class="">¿Qué es un proceso defunct y por qué no se puede terminar?</a></li>
<li class=""><a href="https://stackoverflow.com/questions/47977402/zombie-vs-defunct-processes" target="_blank" rel="noopener noreferrer" class="">¿Procesos zombi frente a procesos defunct?</a></li>
</ul>]]></content:encoded>
            <category>Apuntes de desarrollo</category>
        </item>
        <item>
            <title><![CDATA[Día 1: ¿Por dónde empezar?]]></title>
            <link>https://github.com/joeden/es/writings/day-1-where-to-start</link>
            <guid>https://github.com/joeden/es/writings/day-1-where-to-start</guid>
            <pubDate>Fri, 06 Nov 2020 00:00:00 GMT</pubDate>
            <description><![CDATA[Ilustración del artículo]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Ilustración del artículo" src="https://github.com/joeden/es/assets/images/image-98d1a59b45c5d55462c1223d8b8a8376.png" width="849" height="357" class="img_ev3q"></p>
<p><strong>DÍA 1: ¿Por dónde empezar?</strong></p>
<p>El reto #100DaysOfCode es uno de esos objetivos que he pospuesto varias veces, ya fuera por falta de tiempo o por alguna carga de trabajo que tenía pendiente.</p>
<p>De hecho, hubo algunas veces en las que empecé el reto y lo dejé después de una semana porque, bueno, sencillamente todavía no sabía lo suficiente.</p>
<p>Lo que quiero decir es que mi forma de aprender nunca fue muy estructurada. En vez de estudiar los fundamentos de una habilidad, solía saltar directamente a lo que necesitaba para resolver el problema que tenía delante.</p>
<p>Y sí, es una manera eficiente de hacer que algo funcione rápido. Pero no es demasiado sostenible. Tarde o temprano, la falta de bases te alcanza.</p>
<p>Puede que consigas resolver un problema, pero, cuando algo vuelve a fallar, de pronto te das cuenta de que no entiendes del todo por qué funcionó aquella solución.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="no-puedes-saltarte-el-proceso">No puedes saltarte el proceso<a href="https://github.com/joeden/es/writings/day-1-where-to-start#no-puedes-saltarte-el-proceso" class="hash-link" aria-label="Enlace directo al No puedes saltarte el proceso" title="Enlace directo al No puedes saltarte el proceso" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" alt="Ilustración sobre el proceso de aprendizaje" src="https://github.com/joeden/es/assets/images/image-1-785430a5e1cecc7377bd06e2492f99ab.png" width="619" height="768" class="img_ev3q"></p>
<p>Otra cosa que siempre se ha interpuesto es mi propia manera de pensar.</p>
<p>Era más joven, tenía poca experiencia, pero mucho entusiasmo y empeño para lanzarme a los retos sin revisar antes qué hacía falta.</p>
<p>De verdad: de niño era divertido enfrentarse a cualquier cosa que te lanzara el mundo, porque así se enfrentan los niños a las cosas. Sin tonterías. Sin complicarse. Solo por diversión.</p>
<p>Pero, de adulto, o al menos de veintitantos, no siempre puedes agarrar un problema e intentar resolverlo sin examinarlo con cuidado primero. Para empezar, nuestras acciones tienen consecuencias.</p>
<p>Por pequeño que creamos que es un efecto, el verdadero problema comienza cuando esos efectos se encadenan y bajan como una bola de nieve por una montaña empinada.</p>
<p>Un día crees que no necesitas aprender estructuras de datos y algoritmos porque ya has conseguido montar un script con fragmentos de varias fuentes de internet.</p>
<p>Y al día siguiente te encuentras de frente con un problema que nadie ha preguntado todavía en Stack Overflow.</p>
<p><img decoding="async" loading="lazy" alt="Ilustración sobre resolver problemas" src="https://github.com/joeden/es/assets/images/image-2-9bb461f39fa11c85e988fad8acfbda7c.png" width="720" height="482" class="img_ev3q"></p>
<p>No puedes saltarte el proceso.</p>
<p>Puede parecer que aprender algo bien lleva más tiempo, pero oye, no se mueven montañas a la fuerza. Lo que haces es dividir el Everest en sus piezas más pequeñas y moverlo piedra a piedra.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="cambiar-de-lugar">Cambiar de lugar<a href="https://github.com/joeden/es/writings/day-1-where-to-start#cambiar-de-lugar" class="hash-link" aria-label="Enlace directo al Cambiar de lugar" title="Enlace directo al Cambiar de lugar" translate="no">​</a></h2>
<p>He pasado a puestos para los que estaba solo parcialmente cualificado o, sinceramente, para los que no estaba cualificado en absoluto.</p>
<p>Supongo que el entusiasmo y la perseverancia me ayudaron a conseguir esos trabajos, pero he aprendido que los fundamentos siempre vuelven. Estás investigando un problema y, de pronto, otra vez estás buscando lo básico en internet.</p>
<p>Bueno, quizá exagero un poco cuando digo que nunca me preocupé por aprender los fundamentos de nada.</p>
<p>Sí empecé desde lo más básico de redes cuando volví a estudiarlo todo para mi CCNA el año pasado. Fue muy satisfactorio comprender bien las subredes, cómo funcionan las redes y cómo el enrutamiento permite que los datos lleguen a su destino.</p>
<p>Pero también sé que las redes son solo una de las bases que debería tener un profesional de TI.</p>
<p>Y, a medida que descubro más sobre el mundo de DevOps, he aceptado que saber de redes no basta si de verdad quiero tener éxito como ingeniero de DevOps o de la nube.</p>
<p>Por eso empecé a aprender Linux el pasado febrero.</p>
<p>Resultó bastante útil cuando pasé a mi trabajo actual, donde me encargo de algunos de nuestros sistemas de gestión de redes. Todas esas herramientas NMS están alojadas en servidores Linux Red Hat 7 con los que he tenido la suerte de experimentar.</p>
<p>Bueno, sobre todo en los servidores de laboratorio.</p>
<p>Practicar en servidores de producción es, obviamente, un NO rotundo.</p>
<p><img decoding="async" loading="lazy" alt="Ilustración sobre los servidores de producción" src="https://github.com/joeden/es/assets/images/image-3-6c24a96602dd1660b2a29d48f291c12e.png" width="480" height="320" class="img_ev3q"></p>
<p>Vale, creo que ya basta de historia y de memes.</p>
<p>Ya he dedicado más o menos una hora a investigar en qué me centraré durante este reto y, por supuesto, a buscar los estupendos memes que pondré aquí.</p>
<p>Por ahora, he reducido mi lista a esto:</p>
<ol>
<li class="">
<p><strong>Estandarizar mis convenciones de nombres</strong>: Sí, sé que parece algo bastante trivial, pero creo que ayudará a largo plazo, sobre todo si algún día vuelvo a revisar mis archivos antiguos.</p>
</li>
<li class="">
<p><strong>Linux</strong>: Todavía me considero relativamente nuevo en Linux, pero ahora estoy mucho más cómodo trabajando en servidores Linux y en mis máquinas virtuales. Solo han pasado unos meses desde que me metí de lleno, así que todavía queda mucho por aprender.</p>
<p>Otro buen lugar para practicar Linux es KodeKloud. Entra en <a href="http://www.kodekloud-engineer.com/" target="_blank" rel="noopener noreferrer" class="">www.kodekloud-engineer.com</a>, crea una cuenta e intenta completar tu primera tarea de administración de sistemas.</p>
</li>
<li class="">
<p><strong>Git</strong>: Ya tengo una cuenta de Git y he aprendido a trabajar con mis repositorios locales, pero todavía no sé trabajar bien con GitHub.</p>
<p>Así que sí, el día 1 será para Git y GitHub.</p>
<p>Para ello usaré un proyecto guiado de Coursera llamado <em>Git for Developers Using GitHub</em>, que puedes encontrar aquí:</p>
<p><a href="https://www.coursera.org/learn/git-for-developers-using-github/" target="_blank" rel="noopener noreferrer" class="">https://www.coursera.org/learn/git-for-developers-using-github/</a></p>
</li>
<li class="">
<p><strong>Python</strong>: Entre tantos lenguajes, he decidido centrarme en Python durante, supongo, los primeros 50 días.</p>
<p>Eso incluirá resolver problemas en HackerRank y trabajar de verdad en proyectos.</p>
<p>Python es un lenguaje bastante cercano para mí porque llevamos un tiempo con una relación intermitente. Hay temporadas en las que me concentro mucho en hacer cosas con Python y luego paro de repente porque tengo otra carga de trabajo o porque estoy preparando otro examen de certificación.</p>
<p>Esta vez quiero ser más constante.</p>
<p>Usaré el certificado profesional Google IT Automation with Python de Coursera:</p>
<p><a href="https://www.coursera.org/professional-certificates/google-it-automation" target="_blank" rel="noopener noreferrer" class="">https://www.coursera.org/professional-certificates/google-it-automation</a></p>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="certificado-profesional-google-it-automation-with-python">Certificado profesional Google IT Automation with Python<a href="https://github.com/joeden/es/writings/day-1-where-to-start#certificado-profesional-google-it-automation-with-python" class="hash-link" aria-label="Enlace directo al Certificado profesional Google IT Automation with Python" title="Enlace directo al Certificado profesional Google IT Automation with Python" translate="no">​</a></h2>
<p>Para volver a aprender Python como es debido, empiezo con el <em>Google IT Automation with Python Professional Certificate</em> de Coursera, que se compone de seis cursos.</p>
<p>La plataforma indica que puede completarse en ocho meses dedicándole unas cuatro horas de estudio a la semana.</p>
<p>Como pienso trabajar en esto a diario, incluidos los fines de semana, y normalmente veo los vídeos al doble de velocidad, mi objetivo es terminar el certificado completo en unos dos meses.</p>
<p>Eso sí, a lo que realmente quiero dedicar más tiempo es a los ejercicios prácticos.</p>
<p>De momento, sigue siendo un plan aproximado.</p>
<p>Si has leído la sección de Python de arriba, esto es solo lo que tengo previsto para la primera mitad de los 100 días.</p>
<p>Para la segunda mitad, quiero trabajar en desarrollo web.</p>
<p>Puede que digas que 50 días son muy pocos para terminar ese curso.</p>
<p>Y sí, probablemente tengas razón.</p>
<p>Simplemente terminaré lo que pueda entre el día 50 y el 100. Lo que quede, lo continuaré en mi próximo #100DaysOfCode.</p>
<p>En definitiva, creo que este reto #100DaysOfCode es, para mí, más bien un reto de constancia.</p>
<p>Quiero comprometerme de verdad con algo y seguir hasta alcanzar cierto nivel de dominio.</p>
<p>Por supuesto, convertirse en experto lleva mucho más de 100 días. Pero creo que estos 100 días pueden, al menos, ponerme en el camino adecuado.</p>
<p>Además, todavía no tengo muy claro dónde publicaré todo esto, porque he abierto mis cuentas de Twitter e Instagram hace poco.</p>
<p>Supongo que usaré ambas.</p>
<p>El problema de Twitter es el límite de caracteres, así que quizá tenga que dividir las publicaciones: poner la primera mitad en el tuit principal y continuar en las respuestas.</p>
<p>O podría publicar todo también en dev.to o Hashnode.</p>
<p>Lo único que me preocupa es si todas las imágenes que pongo aquí se verán bien en esas plataformas.</p>
<p>En cuanto a Instagram...</p>
<p>Sí, eso todavía no lo tengo resuelto.</p>
<p>Y una última cosa: mis próximas publicaciones o tuits probablemente serán mucho más cortos. Serán, sobre todo, actualizaciones sobre cómo fue el reto ese día.</p>
<p>Luego, quizá al final de cada mes, haga un resumen más largo como punto de control y lo publique en dev.to, Hashnode o freeCodeCamp.</p>
<p>Bien.</p>
<p>Entonces, día 1. ¿Por dónde empezar?</p>
<p>Sí.</p>
<p><strong>Git.</strong></p>]]></content:encoded>
            <category>100 días de código</category>
        </item>
        <item>
            <title><![CDATA[Programar es fácil, ¿a que sí?]]></title>
            <link>https://github.com/joeden/es/writings/programming-is-easy</link>
            <guid>https://github.com/joeden/es/writings/programming-is-easy</guid>
            <pubDate>Sat, 06 Jun 2020 00:00:00 GMT</pubDate>
            <description><![CDATA[Mi forma de entender la programación.]]></description>
            <content:encoded><![CDATA[<blockquote>
<p>Mi forma de entender la programación.
También he incluido algunos conceptos fundamentales que creo que todos deberían conocer cuando empiezan a adentrarse en el código.</p>
</blockquote>
<p>Para empezar, quiero decirte que has hecho bien en abrir este artículo.</p>
<p><img decoding="async" loading="lazy" alt="Ilustración del artículo" src="https://github.com/joeden/es/assets/images/image-930551cb6fb0b083905896a76168bfd3.png" width="1000" height="420" class="img_ev3q"></p>
<p>Puede que lleves jugando con el código desde pequeño, o que simplemente hayas seguido una cadena de enlaces interesantes en Google y, de alguna manera, hayas acabado con ganas de aprender más sobre programación.</p>
<p>En cualquier caso, seguramente hay una idea, o más bien una pregunta, rondándote la cabeza:</p>
<p><em><strong>¿De verdad es fácil programar?</strong></em></p>
<p>Bueno, intentemos responder esa pregunta de una vez por todas.</p>
<p><strong>Programar es relativamente fácil.</strong></p>
<p>Repítelo conmigo.</p>
<p>Sí, en gran medida, programar consiste en juntar palabras clave e instrucciones en líneas que el ordenador pueda entender, y luego pasar a la siguiente línea.</p>
<p>Algo así como formar una oración.</p>
<p>Pero ¿de verdad es solo eso?</p>
<p>Piensa en cómo formas una oración en inglés. Hay ciertas reglas que debes seguir. Tienes que pensar qué tiempo verbal usar, desde qué punto de vista escribes, dónde van las palabras y con qué signo de puntuación terminar.</p>
<p>La programación funciona de manera parecida.</p>
<p>Tienes unas reglas, un vocabulario y una estructura que debes seguir.</p>
<p>Por supuesto, hay otros conceptos fundamentales que conviene entender antes de empezar a crear tus propios programas.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="cómo-se-dice">¿Cómo se dice?<a href="https://github.com/joeden/es/writings/programming-is-easy#c%C3%B3mo-se-dice" class="hash-link" aria-label="Enlace directo al ¿Cómo se dice?" title="Enlace directo al ¿Cómo se dice?" translate="no">​</a></h2>
<p>Cuando empiezas a aprender un idioma nuevo, por ejemplo japonés, puede que esta sea tu reacción al encontrarte por primera vez con los kanji:</p>
<p><img decoding="async" loading="lazy" alt="Ilustración sobre aprender un idioma" src="https://github.com/joeden/es/assets/images/image-2-eea0c983698ed3abd0457a4631fa9bcd.png" width="700" height="418" class="img_ev3q"></p>
<p><strong>Parece complicado, así que debe de ser complicado.</strong></p>
<p>Pero no es tan difícil cuando das los primeros pasos y empiezas a aprender lo básico.</p>
<p>Todo puede resultar confuso y frustrante la primera vez. Pero, cuando empiezas a descomponerlo en piezas y a entender cómo funcionan juntas, las cosas poco a poco cobran sentido.</p>
<p>Y, con el tiempo, se convierte en pan comido.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="lo-que-vino-antes">Lo que vino antes<a href="https://github.com/joeden/es/writings/programming-is-easy#lo-que-vino-antes" class="hash-link" aria-label="Enlace directo al Lo que vino antes" title="Enlace directo al Lo que vino antes" translate="no">​</a></h3>
<p>Sea cual sea el lenguaje de programación que intentes aprender, notarás que muchos comparten ideas similares.</p>
<p>Los lenguajes suelen crearse para resolver determinados problemas, introducir nuevas formas de hacer las cosas o superar limitaciones de lenguajes anteriores.</p>
<p>Por eso, los lenguajes más nuevos suelen tomar conceptos, técnicas e incluso sintaxis de los antiguos.</p>
<p>Por supuesto, no todos funcionan exactamente igual, pero, una vez que aprendes los fundamentos de un lenguaje, probablemente reconocerás muchos conceptos familiares al pasar a otro.</p>
<p>Así que podría decirse que los lenguajes de programación hablan de formas distintas, pero muchos piensan de manera parecida.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="en-el-fondo">En el fondo<a href="https://github.com/joeden/es/writings/programming-is-easy#en-el-fondo" class="hash-link" aria-label="Enlace directo al En el fondo" title="Enlace directo al En el fondo" translate="no">​</a></h2>
<p>Como he mencionado, muchos lenguajes comparten los mismos conceptos básicos. La principal diferencia suele ser cómo se escriben o se implementan.</p>
<p>Estas son algunas de las cosas que encontrarás casi en todas partes.</p>
<ul>
<li class="">
<p><strong>Sintaxis</strong></p>
<p>Recuerda que cada lenguaje tiene sus propias reglas.</p>
<p>Pueden estar influidas por lenguajes anteriores, pero cada uno tiene su propia manera de escribir instrucciones.</p>
<p><img decoding="async" loading="lazy" alt="Ejemplo de sintaxis" src="https://github.com/joeden/es/assets/images/image-3-ab7b360d5bfb5295ef06d0316388bd2f.png" width="1123" height="293" class="img_ev3q"></p>
<p>Cuando leíste el título de este artículo en inglés, quizá notaste que había algo un poco raro en cómo estaba escrito.</p>
<p>Si fue así, enhorabuena. Ya entiendes la idea básica de la sintaxis.</p>
<p>La sintaxis es, en esencia, el conjunto de reglas que te dice cómo debe escribirse algo.</p>
<p>Entonces, <em><strong>programar sí que es fácil, ¿verdad?</strong></em> 😄</p>
</li>
<li class="">
<p><strong>Variables</strong></p>
<p>La idea principal de las variables es asociar un valor con un nombre.</p>
<p>Piensa en una variable como un recipiente con etiqueta en el que puedes guardar información para usarla después.</p>
<p>Puedes cambiar esos valores, pasarlos de un lugar a otro, compararlos, hacer cálculos con ellos, mostrarlos y utilizarlos a lo largo de tu programa.</p>
<p>Por ejemplo, en vez de escribir una y otra vez la edad de una persona como <code>25</code>, podrías asignar ese valor a una variable llamada <code>age</code>.</p>
<p>A partir de ahí, el programa puede referirse a <code>age</code> cada vez que necesite ese valor.</p>
<p><img decoding="async" loading="lazy" alt="Ejemplo de variables" src="https://github.com/joeden/es/assets/images/image-4-7f3e358f018651a10f27981d299b4472.png" width="711" height="450" class="img_ev3q"></p>
</li>
<li class="">
<p><strong>Mostrar resultados</strong></p>
<p>Mostrar un resultado consiste, básicamente, en decirle al programa que presente algo como salida.</p>
<p>Puede ser el resultado de un cálculo, el valor de una variable, un mensaje o prácticamente cualquier cosa que quieras que vea el usuario o el programador.</p>
<p>Quizá escuches a los programadores decir algo como:</p>
<p>«<em>El código devolvió este valor</em>».</p>
<p>Lo que suelen querer decir es que, después de procesar las instrucciones, el programa produjo algún resultado.</p>
<p>Pero los programas no siempre muestran esos resultados automáticamente.</p>
<p>A veces el cálculo ocurre en segundo plano y, si quieres ver el resultado, debes indicarle al programa expresamente que lo imprima o lo muestre.</p>
<p>Probablemente ya viste un adelanto de esto en el ejemplo de variables de arriba.</p>
<p><img decoding="async" loading="lazy" alt="Ejemplo de salida del programa" src="https://github.com/joeden/es/assets/images/image-5-ab7b360d5bfb5295ef06d0316388bd2f.png" width="1123" height="293" class="img_ev3q"></p>
</li>
<li class="">
<p><strong>Comentarios</strong></p>
<p>Los comentarios son notas que los programadores dejan dentro del código.</p>
<p>Sirven para explicar qué hace una sección, por qué se escribió de una manera determinada, qué representa una variable o cualquier otra cosa útil para quien lea el código después.</p>
<p>Y sí, esa persona podrías ser tú dentro de seis meses, preguntándote:</p>
<p>«<em>¿Por qué demonios escribí esto?</em>».</p>
<p>El programa no procesa los comentarios como instrucciones.</p>
<p>Cada lenguaje tiene su propia forma de marcar los comentarios.</p>
<p>En Python, por ejemplo, puedes poner un <strong>#</strong> al principio de una línea para indicar que es un comentario y que no debe ejecutarse.</p>
<p><img decoding="async" loading="lazy" alt="Ejemplo de comentarios" src="https://github.com/joeden/es/assets/images/image-6-ab7b360d5bfb5295ef06d0316388bd2f.png" width="1123" height="293" class="img_ev3q"></p>
</li>
<li class="">
<p><strong>Cadenas de texto</strong></p>
<p>Antes hablamos de los comentarios y de cómo Python reconoce una línea que empieza con <strong>#</strong> como algo que no debe ejecutarse.</p>
<p>Pero ¿y si quieres que tu programa trabaje con palabras u oraciones?</p>
<p>Ahí entran las cadenas de texto.</p>
<p>Una cadena es, básicamente, texto almacenado como datos.</p>
<p><img decoding="async" loading="lazy" alt="Ejemplo de cadenas de texto" src="https://github.com/joeden/es/assets/images/image-7-c29cf917e802cc25b6665537169f1d3c.png" width="848" height="218" class="img_ev3q"></p>
<p>Cuando asignas texto a una variable, normalmente lo rodeas de comillas para que el lenguaje sepa que está tratando con texto y no con otra instrucción.</p>
<p>También puedes combinar cadenas con otros valores mediante el formateo.</p>
<p>Por ejemplo, si tienes una variable con el nombre de alguien, puedes insertar su valor en una oración en vez de escribir el nombre manualmente cada vez.</p>
</li>
<li class="">
<p><strong>Arreglos</strong></p>
<p>Un arreglo es, básicamente, una colección de valores agrupados.</p>
<p>En vez de crear una variable diferente para cada dato, puedes guardar varios valores relacionados en una sola colección.</p>
<p>Según el lenguaje, estas colecciones pueden contener números, cadenas, objetos o incluso otras colecciones.</p>
<p>Python, por ejemplo, suele utilizar algo llamado <strong>lista</strong> para este propósito.</p>
<p><img decoding="async" loading="lazy" alt="Ejemplo de listas" src="https://github.com/joeden/es/assets/images/image-8-d90527f21f161cb60663dc50ea586724.png" width="831" height="301" class="img_ev3q"></p>
<p>También es importante entender que los valores dentro de estas colecciones ocupan posiciones.</p>
<p>Así que, si solo quieres un valor concreto, no necesitas recuperar todo. Puedes referirte a su posición, normalmente mediante lo que llamamos un <strong>índice</strong>.</p>
<p>Por ejemplo, si tienes una lista de cinco nombres y solo necesitas el primero, puedes acceder directamente a ese elemento.</p>
<p>Y aquí va algo que al principio puede resultar extraño:</p>
<p>En muchos lenguajes de programación, la cuenta empieza en <strong>0</strong>, no en <strong>1</strong>.</p>
<p>Bienvenido a la programación.</p>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="espera-hay-más">Espera, hay más<a href="https://github.com/joeden/es/writings/programming-is-easy#espera-hay-m%C3%A1s" class="hash-link" aria-label="Enlace directo al Espera, hay más" title="Enlace directo al Espera, hay más" translate="no">​</a></h2>
<p>A estas alturas, espero que entiendas mejor por qué digo que programar es relativamente fácil.</p>
<p>Mucha gente se centra de inmediato en esta pregunta:</p>
<p><em><strong>¿Qué lenguaje de programación debería aprender primero?</strong></em></p>
<p>Y está perfectamente bien.</p>
<p>Pero creo que es más importante entender los conceptos que los lenguajes tienen en común.</p>
<p>Una vez que entiendes ideas como variables, sintaxis, cadenas, colecciones, condiciones, bucles y funciones, pasar de un lenguaje a otro resulta mucho menos intimidante.</p>
<p>La sintaxis puede cambiar.</p>
<p>Las palabras clave pueden cambiar.</p>
<p>Pero las ideas generales suelen seguir ahí.</p>
<p>Si quieres conocer algunas cosas que puedes explorar antes de adentrarte de lleno en la programación, puedes consultar el curso de Evan Kimbrell en Udemy, <a href="https://www.udemy.com/course/pre-programming-everything-you-need-to-know-before-you-code/" target="_blank" rel="noopener noreferrer" class="">Pre-Programming: Everything you need to know before you code</a>.</p>
<p>Desde luego, puedes lanzarte directamente al lenguaje que te interese.</p>
<p>Pero si no tienes un perfil técnico y has empezado a interesarte por la programación hace poco, creo que aprender primero estas ideas básicas puede hacer que todo resulte mucho menos abrumador.</p>
<p>Porque programar en sí no es la parte que da miedo.</p>
<p>Lo difícil suele ser averiguar qué quieres que haga el ordenador y descomponer ese problema en instrucciones que pueda entender.</p>
<p>Cuando te acostumbras a hacerlo, el código empieza a tener mucho más sentido.</p>
<p>Como siempre, ¡que disfrutes aprendiendo!</p>]]></content:encoded>
            <category>100 días de código</category>
        </item>
        <item>
            <title><![CDATA[Libro: Hábitos atómicos]]></title>
            <link>https://github.com/joeden/es/writings/libro-atomic-habits</link>
            <guid>https://github.com/joeden/es/writings/libro-atomic-habits</guid>
            <pubDate>Sat, 28 Dec 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[Libro 45 de 100]]></description>
            <content:encoded><![CDATA[<p>Libro 45 de 100</p>
<p>«Las metas no distinguen a las personas porque, como puedes ver, quienes ganan y quienes pierden suelen tener las mismas metas. La verdadera pregunta es: ¿quién seguirá adelante y estará a la altura?».</p>
<p><img decoding="async" loading="lazy" alt="Imagen del libro" src="https://github.com/joeden/es/assets/images/image-da808cfc7ea4aecbf6fed4daade8aaa2.png" width="480" height="639" class="img_ev3q"></p>
<p>En realidad, terminé este libro en octubre, pero con todo lo que pasó durante los últimos dos meses de 2019, solo logré alcanzar la mitad de mi objetivo de leer 100 libros en el año.</p>
<p>Aun así, se siente bien estar de vuelta.</p>
<p>Es hora de sembrar nuevos hábitos para 2020.</p>
<p>«Cuando no puedas ganar siendo mejor, gana siendo diferente».</p>]]></content:encoded>
            <category>Libros</category>
        </item>
        <item>
            <title><![CDATA[Pensar como un desarrollador]]></title>
            <link>https://github.com/joeden/es/writings/thinking-like-a-developer</link>
            <guid>https://github.com/joeden/es/writings/thinking-like-a-developer</guid>
            <pubDate>Sat, 13 Jul 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[Ilustración del artículo]]></description>
            <content:encoded><![CDATA[<p><img decoding="async" loading="lazy" alt="Ilustración del artículo" src="https://github.com/joeden/es/assets/images/image-aefa1efde042a22865633867c17c10c4.png" width="1500" height="1000" class="img_ev3q"></p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="haz-las-preguntas-adecuadas">Haz las preguntas adecuadas<a href="https://github.com/joeden/es/writings/thinking-like-a-developer#haz-las-preguntas-adecuadas" class="hash-link" aria-label="Enlace directo al Haz las preguntas adecuadas" title="Enlace directo al Haz las preguntas adecuadas" translate="no">​</a></h2>
<p>Cuando te planteen un problema, asegúrate de hacer las preguntas correctas. Puede que al principio no se te ocurran todas porque todavía no dispones de todos los datos, pero, a medida que ganes experiencia, desarrollarás una idea de cómo deberían arrancar los proyectos y acabarás teniendo un conjunto de preguntas habituales para cuando te presenten requisitos de negocio.</p>
<p>Ejemplo:</p>
<p>El responsable del proyecto le dice al equipo:</p>
<blockquote>
<p>Necesitamos una función que invierta cualquier cosa que le pasemos.</p>
</blockquote>
<p><strong>Las preguntas habituales:</strong></p>
<ul>
<li class="">
<p><em>¿Qué significa «cualquier cosa»?</em></p>
<p>¿Qué hay que invertir? En el contexto de las estructuras de datos, solo:</p>
<ul>
<li class="">Cadenas de texto</li>
<li class="">Números</li>
<li class="">Arreglos</li>
</ul>
<p>Los diccionarios no tienen un orden bien definido ni índices, por lo que no se pueden invertir. Los siguientes elementos no pueden invertirse:</p>
<ul>
<li class="">Diccionarios u objetos</li>
<li class="">Booleanos</li>
</ul>
</li>
<li class="">
<p><em>¿Qué hacemos si se pasa otra cosa?</em></p>
<p>¿Cómo debemos manejar entradas que no sean cadenas, números ni arreglos?</p>
</li>
<li class="">
<p><em>¿Qué debería devolver la función?</em></p>
<p>¿Debería devolver siempre una cadena?
¿Debería devolver el mismo tipo que recibió?</p>
</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="divide-y-vencerás">Divide y vencerás<a href="https://github.com/joeden/es/writings/thinking-like-a-developer#divide-y-vencer%C3%A1s" class="hash-link" aria-label="Enlace directo al Divide y vencerás" title="Enlace directo al Divide y vencerás" translate="no">​</a></h2>
<p>Divide un problema grande en partes manejables o problemas más pequeños para que sea mucho más fácil resolverlo. Al descomponerlo, también podemos comprenderlo mejor.</p>
<p>Con el ejemplo anterior, estos serían los pasos para dividir el problema en otros más pequeños:</p>
<ul>
<li class="">Comprobar si el argumento es una cadena, un número o un arreglo</li>
<li class="">Implementar la inversión de un número</li>
<li class="">Implementar la inversión de una cadena</li>
<li class="">Implementar la inversión de un arreglo</li>
<li class="">Devolver el valor invertido</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="investiga-todo-lo-que-necesites">Investiga todo lo que necesites<a href="https://github.com/joeden/es/writings/thinking-like-a-developer#investiga-todo-lo-que-necesites" class="hash-link" aria-label="Enlace directo al Investiga todo lo que necesites" title="Enlace directo al Investiga todo lo que necesites" translate="no">​</a></h2>
<p>Al principio, deberíamos intentar resolver los problemas pequeños por nuestra cuenta y con nuestras propias capacidades. Sin embargo, si sigues encontrando obstáculos, conviene recurrir a fuentes externas, como Google o Stack Overflow.</p>
<p>En la práctica, lo normal es ir directamente a Google y comprobar si ya existe una solución al problema.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="escribe-pseudocódigo">Escribe pseudocódigo<a href="https://github.com/joeden/es/writings/thinking-like-a-developer#escribe-pseudoc%C3%B3digo" class="hash-link" aria-label="Enlace directo al Escribe pseudocódigo" title="Enlace directo al Escribe pseudocódigo" translate="no">​</a></h2>
<p>Para los problemas más grandes, resulta útil escribir alguna forma de pseudocódigo antes del código real. El pseudocódigo es una descripción informal del código. Por ejemplo:</p>
<div class="language-plaintext codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-plaintext codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#393A34"><span class="token plain">function reverse(value) </span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  if type(value) == string</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    reverse_value = reverse string </span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    return reverse_value</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  else if type(value) == number</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    reverse_value = reverse string </span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    return reverse_value</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  else if type(value) == array</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    reverse_value = reverse string </span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    return reverse_value</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  else</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    return "Invalidy input type"</span><br></div></code></pre></div></div>
<p>A partir de aquí, puedes usar el lenguaje que prefieras, como Python, y seguir este flujo para crear la función.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="el-proceso-de-depuración">El proceso de depuración<a href="https://github.com/joeden/es/writings/thinking-like-a-developer#el-proceso-de-depuraci%C3%B3n" class="hash-link" aria-label="Enlace directo al El proceso de depuración" title="Enlace directo al El proceso de depuración" translate="no">​</a></h2>
<ol>
<li class="">
<p><strong>Detectar el error</strong></p>
<p>Darse cuenta de que hay un error. Puede descubrirse:</p>
<ul>
<li class="">Durante el desarrollo</li>
<li class="">Al probar el software</li>
<li class="">En distintos contextos: navegadores, usuarios, etc.</li>
<li class="">A través de informes de usuarios en producción, el peor caso porque llegó a publicarse sin ser detectado</li>
</ul>
</li>
<li class="">
<p><strong>Localizar el error</strong></p>
<p>Aislar la parte del código donde se encuentra el error.</p>
<ul>
<li class="">Aislarlo mediante la consola de desarrollo</li>
<li class="">Para errores complejos, usar un depurador</li>
</ul>
</li>
<li class="">
<p><strong>Corregir el error</strong></p>
<p>Corregirlo y asegurarse de que no exista en ninguna otra parte del código.</p>
<ul>
<li class="">Sustituir la solución existente por una que funcione</li>
<li class="">Buscar el error en código similar</li>
<li class="">Escribir pruebas con herramientas de testing</li>
</ul>
</li>
</ol>]]></content:encoded>
            <category>Apuntes de desarrollo</category>
        </item>
        <item>
            <title><![CDATA[Libro: Pensamiento de caja negra]]></title>
            <link>https://github.com/joeden/es/writings/libro-black-box-of-thinking</link>
            <guid>https://github.com/joeden/es/writings/libro-black-box-of-thinking</guid>
            <pubDate>Sun, 31 Mar 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[Libro 19 de 100.]]></description>
            <content:encoded><![CDATA[<p>Libro 19 de 100.</p>
<p><img decoding="async" loading="lazy" alt="Imagen del libro" src="https://github.com/joeden/es/assets/images/image-6defbaacf28d82592fa785e802494d05.png" width="720" height="1280" class="img_ev3q"></p>
<p><strong>Ideas principales:</strong></p>
<ol>
<li class="">
<p>Es muy fácil quedarse sentado e inventar grandes teorías sobre cómo cambiar el mundo, pero, la mayoría de las veces, nuestras intuiciones son erróneas.</p>
</li>
<li class="">
<p>A menudo nos preocupa tanto equivocarnos que ni siquiera salimos al terreno de juego para intentarlo.</p>
</li>
<li class="">
<p>Al final, hay que recordar que el éxito es solo la punta del iceberg. Bajo la superficie, fuera de nuestra vista y muchas veces de nuestra conciencia, hay una montaña de fracasos necesarios que lo precedieron.</p>
</li>
</ol>
<p>Sé que los casos que presenta este libro contienen muchas más ideas, pero estas tres fueron las que de verdad se me quedaron.</p>
<p>También fueron las únicas que logré anotar mientras escuchaba, más o menos a mitad del libro. Jajaja.</p>
<p>Como dice el libro, el mundo es demasiado complejo para entenderlo desde un sillón.</p>
<p>Sal ahí fuera.</p>
<p>Pon a prueba tus ideas.</p>
<p>Equivócate. Aprende. Fracasa otra vez. Vuelve a intentarlo.</p>
<p>Y quizá, después de haber probado todo lo humanamente posible, llegue un momento en que puedas decir por fin:</p>
<p><strong>«Esta vez sé que es lo correcto».</strong></p>
<p>Así que sí.</p>
<p>Aprende de tus propios errores, pero también de los errores de los demás.</p>
<p>Como dice Levenson:</p>
<p><strong>«Aprende de los errores de los demás. No puedes vivir lo suficiente como para cometerlos todos tú mismo».</strong></p>]]></content:encoded>
            <category>Libros</category>
        </item>
        <item>
            <title><![CDATA[Libro: El año del pensamiento mágico]]></title>
            <link>https://github.com/joeden/es/writings/libro-year-of-magical-thinking</link>
            <guid>https://github.com/joeden/es/writings/libro-year-of-magical-thinking</guid>
            <pubDate>Thu, 28 Feb 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[Libro 15 de 100]]></description>
            <content:encoded><![CDATA[<p>Libro 15 de 100</p>
<p>«El duelo resulta ser un lugar que ninguno de nosotros conoce hasta que llega a él».</p>
<p><img decoding="async" loading="lazy" alt="Imagen del libro" src="https://github.com/joeden/es/assets/images/image-3daa70ab5e2397373fb9c67e05464c75.png" width="554" height="554" class="img_ev3q"></p>
<p>Joder. Qué lectura tan triste.</p>
<p>Habla de perder a alguien y de lo que esa pérdida les hace a quienes se quedan. Y, aun leyendo todo ese dolor, seguía esperando encontrar algún rayo de esperanza en la última página.</p>
<p>La verdad es que no lo había.</p>
<p>Pero entre sus tapas sigue habiendo muchísimo valor.</p>
<p>Quizá no del que hace que todo mejore por arte de magia, sino del que te permite continuar aunque las cosas nunca vuelvan a ser como antes.</p>
<p>Llora.</p>
<p>Acepta.</p>
<p>Sigue adelante.</p>]]></content:encoded>
            <category>Libros</category>
        </item>
        <item>
            <title><![CDATA[Libro: Después del terremoto]]></title>
            <link>https://github.com/joeden/es/writings/libro-after-the-quake</link>
            <guid>https://github.com/joeden/es/writings/libro-after-the-quake</guid>
            <pubDate>Sat, 23 Feb 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[Después del terremoto, de Haruki Murakami]]></description>
            <content:encoded><![CDATA[<p><em>Después del terremoto</em>, de Haruki Murakami</p>
<p>Libro 13 de 100</p>
<p>«Quiero escribir sobre personas que sueñan y esperan a que termine la noche; que anhelan la luz para poder aferrarse a quienes aman».</p>
<p><img decoding="async" loading="lazy" alt="Imagen del libro" src="https://github.com/joeden/es/assets/images/image-619340e7895380751dbafd08bffef664.png" width="720" height="1280" class="img_ev3q"></p>
<p>Y con esto prácticamente termina mi recorrido por las obras de Murakami.</p>
<p>Todavía hay algunos libros suyos que no he descargado ni escuchado, pero después de tantos, siento que me he hecho una idea bastante clara del hombre que hay detrás de las historias.</p>
<p>Algunas observaciones:</p>
<ol>
<li class="">Le gusta fumar.</li>
<li class="">Le gustan las gatitas. Los gatos, quiero decir. Gatos. Sus protagonistas casi siempre tienen uno, pierden uno, buscan uno o conocen a alguien que tiene uno.</li>
<li class="">Está claro que ha vivido lo suficiente como para tener una cantidad absurda de material extraño al que recurrir.</li>
</ol>
<p>Su estilo, desde luego, no es el convencional al que estamos acostumbrados la mayoría.</p>
<p>No siempre hay una trama cautivadora que te empuje de un capítulo al siguiente. No todos los «por qué» tienen respuesta. Los cabos sueltos no siempre quedan bien atados y, a veces, aparecen tramas enteras, se cruzan con todo lo demás y luego desaparecen sin darte el cierre que esperabas.</p>
<p>Y sí, eso puede ser frustrante.</p>
<p>Pero creo que también es parte de lo que hace interesantes sus historias.</p>
<p>Murakami deja mucho espacio para que el lector decida qué significan las cosas, cómo ve a los personajes y si alguna de esas pequeñas experiencias extrañas importaba realmente.</p>
<p>Y, si lo piensas, la vida real también funciona un poco así.</p>
<p>No todo lo que nos ocurre tiene un significado trascendental.</p>
<p>Buena parte es solo ruido.</p>
<p>Encuentros al azar. Conversaciones extrañas. Personas que desaparecen de nuestras vidas. Cosas que nos preocuparon durante semanas y que al final no significaron absolutamente nada.</p>
<p>Probablemente, la mayor parte de lo que vivimos acaba convertida en pequeñas trivialidades dentro de una historia más grande.</p>
<p>Así que quizá la decisión sea si pasamos la vida obsesionados con cada cosa que no tuvo sentido, o si aceptamos que no todo necesita una explicación y seguimos adelante.</p>
<p>No siempre puedes decidir hacia dónde fluye la corriente.</p>
<p>Pero sí puedes decidir qué llevar en tu barco.</p>]]></content:encoded>
            <category>Libros</category>
        </item>
        <item>
            <title><![CDATA[Libro: Kafka en la orilla]]></title>
            <link>https://github.com/joeden/es/writings/libro-kafka-on-the-shore</link>
            <guid>https://github.com/joeden/es/writings/libro-kafka-on-the-shore</guid>
            <pubDate>Fri, 22 Feb 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[Kafka en la orilla, de Haruki Murakami]]></description>
            <content:encoded><![CDATA[<p><em>Kafka en la orilla</em>, de Haruki Murakami</p>
<p>Libro 12 de 100</p>
<p>«Si tú me recuerdas, no me importa que todos los demás me olviden».</p>
<p><img decoding="async" loading="lazy" alt="Imagen del libro" src="https://github.com/joeden/es/assets/images/image-02e1f87c6742f1a5028b96c64f6f032d.png" width="720" height="1280" class="img_ev3q"></p>
<p>Joder. Qué final tan abierto.</p>
<p>Hubo tantos momentos en este libro en los que seguía esperando que todo encajara por fin, como si tuviera que existir una explicación clara que uniera todos aquellos sucesos extraños.</p>
<p>Y entonces Murakami básicamente dijo: pues no.</p>
<p>Hay sueños, recuerdos, gatos que hablan, coincidencias extrañas, metáforas que quizá sean metáforas o quizá no, y personas que entran y salen de la vida de los demás.</p>
<p>Luego el libro termina y te quedas ahí sentado pensando:</p>
<p><strong>Espera. ¿Eso es todo?</strong></p>
<p>Pero, por extraño que parezca, probablemente por eso se te queda dentro.</p>
<p>No porque todo quedara explicado, sino porque no fue así.</p>
<p>Hay cosas en las que sigo pensando incluso después de terminarlo, pero la que de verdad se me quedó grabada fue:</p>
<p><strong>¿Qué fue de Hoshino después de que el gato le respondiera?</strong></p>
<p>¿Cambió algo de verdad?</p>
<p>¿Fue solo otro encuentro extraño?</p>
<p>¿O era simplemente la forma de Murakami de recordarnos que no todo necesita quedar perfectamente resuelto para que la historia continúe?</p>
<p>Sinceramente, no lo sé.</p>
<p>Y quizá de eso se trata.</p>
<p>Algunas historias terminan.</p>
<p>Otras simplemente se detienen.</p>]]></content:encoded>
            <category>Libros</category>
        </item>
    </channel>
</rss>