Hola a todos.
Hoy tenemos con nosotros a Ekaitz Zárraga, conocido del Fediverso, se encuentra detrás de ElenQ y es autor de varios libros, entre los que se incluye un libro sobre Python en español, y con varias ideas más en mente para futuras compras literarias que te puedas plantear. También hace directos en twitch sobre cosas muy variopintas.
KC: Hola, Ekaitz. Enhorabuena por tu libro y muchas gracias por ofrecerte a responder unas cuantas preguntas.
EZ: Hola, encantado de compartir un ratito contigo.
KC: ¿Nos puedes contar algo sobre tí?, ¿proyectos que tienes entre manos?
EZ: Os puedo contar que soy la persona detrás de ElenQ Technology donde trabajo como ingeniero de investigación y desarrollo en ámbitos relacionados con la informática y la electrónica.
Nací en 1991 y estudié Ingeniería de Telecomunicaciones en Bilbao, la ciudad donde vivo actualmente.
Mi proyecto principal es tratar de alimentarme gracias a mi trabajo como autónomo en ElenQ, y bastante difícil me resulta. Doy cursos, escribo cosas, investigo y programo para quien me lo pida, siempre que lo haga con fines benignos.
Además de eso, colaboro con mi amigo Alvaro Fierro en su empresa Cultumetría y en conjunto publicamos artículos donde mezclamos los datos con la vida en PostData.biz.
Iba a tratar de explicar por separado la parte profesional y la personal, pero me he dado cuenta que no existe ninguna distinción entre ellas al final del día.
Cuando contribuyo a un proyecto de software libre, como Guix, donde participo todo lo que puedo, mandando parches y añadiendo paquetes, estudio sobre algo o hago un proyecto menos serio, me lo tomo con la misma o más profesionalidad que cuando trabajo para otros y lo hago indistintamente, como si se tratase de lo mismo, sin ninguna separación horaria ni conceptual.
Hace tiempo que ya vivo para esto. Aunque no tengo muy claro que viva por ello.
KC: ¿Cuánto tiempo llevas usando Python?
EZ: Empecé a programar en Python alrededor del año 2014, por un proyecto que desarrollé en donde trabajaba. Después empecé a investigar un poco más ese verano y poco más tarde estaba trabajando en una empresa donde se usaba Python para muchas cosas. Así que se quedó.
KC: He visto que le das a muchos palos. ¿Por qué Python?, ¿cuándo prefieres otros lenguajes?
EZ: En general, hoy en día prefiero otros lenguajes casi siempre.
Pero parece que no es tan sencillo preferir otra cosa.
Cuando hago scripts intento usar Scheme (Chibi o Guile), pero no tienen tantas librerías y es relativamente tedioso tener que programarlo todo así que Python suele ser un lenguaje de pegamento que cubre esos problemas.
Por otro lado, como por circunstancias conozco Python mejor que casi cualquier otro lenguaje, acabo usándolo por acabar antes y por no perder la motivación, cosa que me pasa muy a menudo.
Realmente casi no tengo proyectos propios últimamente, en el sentido de empezar software desde cero. Casi todo lo que me toca hacer parte de proyectos de terceros así que tengo poca capacidad de decisión.
En el entorno de los datos, que es algo que trabajáis mucho aquí, comencé con Python por comodidad, pero salté a Clojure y no he encontrado aún nada a ese nivel. Es un lenguaje que me encanta, pero la JVM me agota a veces y el hecho de que sea un lenguaje no-tan-común, hacen que cuando trabajo para otros, como con Scheme, tenga que evitarlo.
Al final, Python es cómodo, directo al grano y bastante configurable, así que… ¿Para qué voy a luchar contra la marea, por mucho que prefiera otras cosas?
KC: Dices que, hoy en día prefieres otros lenguajes casi siempre. Yo no me dedico a programar. Para mí, la programación es un medio y Python es, como dices, sencillo y directo y es ideal para aprender y para resolver cosas sin mucha fricción. Por ello es por lo que lo uso, para resolver cosas de forma rápida y elegante. No soy un teórico de los lenguajes de programación ni cosas de esas y, por tanto, hay muchas cosas que se me escapan. De ahí la siguiente pregunta, ¿qué te ofrecen otros lenguajes que Python no te ofrece y cuándo los prefieres porque consideras que son mejores para ese problema concreto?
EZ: Precisamente, de eso se trata. Realmente, cualquier lenguaje de scripting moderno te aporta lo mismo que Python, aunque seguramente menos librerías. Sin embargo, hay algunos casos que te aportan otras cosas.
Aunque mucha gente pueda escandalizarse con lo que voy a decir, Scheme y Python son lenguajes muy parecidos, en lo que se refiere al funcionamiento interno. Sin embargo, hay un par de detalles que difieren: las continuaciones de primera clase y la recursión de cola. Sin entrar en el primero, que es relativamente peculiar, el segundo es un punto fundamental para habilitar la programación funcional con cierta seriedad que es, además, el paradigma que más y mejor ofrece el lenguaje.
Hoy en día me siento mucho más cómodo en la programación funcional y, aunque Python también me permita cierto juego en ese sentido, no está pensado para trabajar así en la misma medida y el proceso se vuelve un poco hostil cuando no se hace como a Python le gusta.
El caso de Clojure es parecido pero un poco más radical. Clojure es un lenguaje un tanto diferente a Python: los datos aportados por el lenguaje son inmutables y, aunque se puede acceder al mundo más imperativo, tampoco está especialmente pensado para vivir en él. También es cierto que Clojure es un lenguaje muchísimo más hostil que Python si no lo usas como se supone que debes.
Python al final es una especie de soft-OOP donde se te sugiere que mezcles ambos paradigmas para huir de la complejidad del OOP clásico. No me parece una mala decisión de diseño, pero tampoco me quedaría el lenguaje sólo por esto.
Al final lo bonito y valioso de Python son las personas que le dedican tiempo y hacen tantísimas herramientas alrededor de su ecosistema, que en otros entornos no está tan trabajado. Todo esto viéndolo de una forma general. Por supuesto la sintaxis también forma parte fundamental del trabajo diario, pero la dejaría en un segundo plano, siempre que sea aceptable, como lo es la de Python.
Por otro lado, el nivel en el que se trabaja también es importante: a veces es mejor desarrollar en C para asegurarte de que el programa resultante tenga un tamaño mínimo y otras veces eso no es una limitación y puedes elegir. La facilidad para distribuir el trabajo finalizado, o incluso la legibilidad del código, como comentaba antes, son detalles a tener en cuenta.
También hay otro del que la gente no suele percatarse y que a mí me interesa especialmente: la complejidad de la herramienta. Clojure por ejemplo es un lenguaje que aparté un poco de mi vida, a pesar de parecerme excelente, porque su entorno, con la JVM y todo eso, es complejo y difícil de auditar. Sin embargo, Chibi-Scheme, una implementación de Scheme que me gusta mucho y he tenido la suerte de apoyar con algo de mi código, es una implementación sencilla y fácil de estudiar, cosa que para mí es importante.
Por suerte, la implementación de referencia de Python es compleja pero se deja estudiar. He tenido la ocasión de indagar en su código y es sorprendentemente legible, así que le animo a la gente a que la revise si tiene interés.
Podría estar horas hablando de esto, la verdad, pero al final es sólo palabrería. A veces es difícil tener cosas en cuenta y tienes que tirar sólo por lo que a ti te sale de dentro. A mí Python hay días que me apetece y otros que no me entra, como el desayuno. Intento ser natural en esto y hacerlo según me sale.
Manejarse en una gran variedad de lenguajes te permite poder elegir y ser mejor en el trabajo. Yo creo que realmente lo importante es conocerlos y apreciar bien lo que todos tienen de positivo que, a pesar de las críticas que siempre pueden leerse por ahí, todos tienen algo.
KC: ¿Cuánto de tu trabajo diario es hacer cosas relacionadas con Python?
EZ: La verdad: muy poco.
Pero es una buena pregunta.
Lo que más hago relacionado con Python es enseñar. He dado cursos introductorios al ecosistema de análisis de datos de Python, que soléis tratar mucho aquí (numpy/scipy, pandas, blaze, etc.), para las empresas que no saben si dar el salto. También he enseñado Python en entornos más acostumbrados a trabajar con C++ donde querían tener un lenguaje de scripting que les fuera bien con su día a día y facilitase las cosas. He usado Python como vehículo para enseñar temas web, web scraping y otras cosas.
Al final, no es que yo trabaje mucho en cosas relacionadas con Python, sino que es un buen lenguaje para transmitir otras.
También lo uso mucho para scripts guarretes, como para tratar los datos que tenemos en PostData y para cosas rápidas, pero no diría que forma parte de mi trabajo de forma fundamental.
KC: ¿A qué te dedicas?
EZ: Es una excelente pregunta para la que me gustaría tener una excelente
respuesta.
Como decía antes, soy un autónomo con un proyecto de investigación y desarrollo, que a veces también me permite hacer cosas paralelas, como enseñar y publicar unos libros.
En principio, me dedico al I+D: los clientes pueden pedirme que analice, estudie o desarrolle cualquier cosa y yo lo hago y les transmito lo que he aprendido en forma de una solución de código, un informe, una formación o todas a la vez.
Lo que más he hecho últimamente es dar formaciones, pero el formato es similar. Preparo un curso y transmito lo preparado a un equipo de profesionales para que arranquen y puedan funcionar por su cuenta.
A nivel práctico, soy una especie de programador todoterreno, que tiene cierta capacidad para aprender rápido y ser mediocre en muchísimas cosas y decente en unas pocas, lo que me permite comprender las necesidades de cualquier posible cliente y ser relativamente productivo en el corto plazo.
Además, se me da bien investigar cosas raras, porque es un pasatiempo que tengo, así que creo que le soy útil a quienes están envueltos en el día a día y necesitan a alguien externo que les saque de allí.
A nivel de temáticas, cuesta mucho definir con pocas palabras lo que hago, como puede verse por toda la entrevista. Creo que lo más honesto es decir que hago cosas todo el rato y eso tiene un impacto en lo que ofrezco como profesional. Es por eso que se me hace tan difícil responder a la pregunta.
Por tanto, si cualquiera que nos lea siente algún tipo de interés en lo que hago o cree que necesita mi ayuda, que no tenga miedo en escribirme y preguntarme más en detalle, porque cuesta mucho resumir todo esto.
Supongo que la respuesta es que me dedico a la ingeniería. En el sentido amplio de la palabra.
KC: ¿Cómo has elegido la temática del libro, los temas que ibas a abordar y por qué has elegido estos temas y no otros?
EZ: El libro surgió de la necesidad de aportar unos apuntes confiables en un curso que me pidieron.
No pretendía hacer un libro con ello, pero me di cuenta que los apuntes eran algo más que eso. Casi eran un libreto, así que decidimos publicarlos.
Los temas surgieron de lo que a mí me parecía fundamental para un equipo de gente que no conoce el ecosistema pero sí que tiene capacidad de encontrarse sus propias necesidades. Prefiero quedarme en algo teórico que en ejercicios tontos, así que así lo hicimos. El contenido es teórico y sencillo, pero deja muchas pistas de cómo avanzar a entender las cosas en profundidad. Luego cada cual puede buscarse sus propios ejercicios o leer código por ahí. No pretendía decirle a nadie cómo estudiar, sino qué estudiar.
KC: ¿Cómo ha sido el proceso que te ha llevado a elegir entre ‘estoy en mi sofá tocándome el ombligo muy a gustito’ y ‘voy a escribir un libro’?, ¿de dónde surgió la motivación inicial?
EZ: Creo que te he respondido un poco en la pregunta anterior. Los libros los desarrollo por el dinero que ponen quienes me contratan para que les enseñe algo.
Tanto el de Python como uno de C++ posterior que está ya escrito a falta de unos retoques, han sido escritos gracias a la misma fundación de investigación y desarrollo, que me contrató para que formara a sus trabajadores.
Como las clases que me han pedido me las tomo en serio y trato de investigar para poder darles las cosas de la mejor manera posible, el trabajo de estudiar y ordenar el conocimiento es una etapa que no puedo evitar. Es por eso que no me cuesta nada hacerles unos apuntes y mucho menos me cuesta, una vez los tengo, publicarlos online para que todos, incluso los que no tienen dinero ni saben inglés puedan aprender.
También es cierto que por ciertos problemas personales tengo muy poca capacidad para no hacer nada. No sé descansar, y eso me cuesta caro a veces, pero otras veces, cuando hay suerte, salen cosas bonitas.
KC: Si no es algo de lo que quieras hablar lo entiendo perfectamente pero la parte final de tu respuesta me ha despertado especial interés. ¿Por qué no disfrutas tocándote el ombligo mientras miras al techo y escuchas a los Wu-Tang?
EZ: No es que no lo disfrute, sólo que si escucho a los Wu-Tang mientras estoy trabajando o pensando en cosas los disfruto más.
No sé muy bien qué decirte sobre esto. Siempre he sido así.
Me gusta pensar en qué puedo hacer, crear cosas de cualquier tipo, planificarlas, imaginarlas, etc. Terminarlas me cuesta un poco más, porque el proceso suele verse interrumpido por que me interese por otras.
La ansiedad tiene que ver en todo esto porque vivo la vida como si fuera a morir mañana y necesitase terminar todo ayer. Esto me hace castigarme a veces si pierdo el tiempo, aunque cada vez lo hago menos.
Disfruto mucho del tiempo de pensar e imaginar posibilidades y es un proceso que me ayuda mucho a trabajar y a tener una visión amplia. Cuando lo hago de forma positiva y sin culparme es muy enriquecedor.
KC: ¿Han cambiado los contenidos iniciales con respecto al resultado final?, ¿por qué?
EZ: Sí, han cambiado, pero no demasiado. Principalmente los cambios se han debido a cosas que yo tenía interiorizadas de forma un poco dudosa, que no interfiere en el día a día del programador, pero que a la hora de estudiar son importantes.
Por ejemplo, usé la terminología de forma natural, con los nombres que yo utilizaba, pero corregí más tarde. No he sido especialmente riguroso en lo técnico, pero sí en eso, porque creo que es importante. La terminología es lo que permite a la gente investigar de forma autónoma y entenderse.
Hay alguna otra cosa más, pero no recuerdo demasiado del proceso.
KC: ¿Qué temas te han costado más y de cuales te sientes más orgulloso?
EZ: Pues como era un contenido bastante básico no creo que me haya costado demasiado pero sí que es cierto que sufro un poco cohesionando textos largos. Me cuesta dejarlo tan bien como me gustaría.
Me siento especialmente orgulloso de la sección sobre funciones, y de haber hecho hincapié en ella más que en otras. Creo que aporta una visión un poco distinta a las habituales en este tipo de textos sobre Python y que sin profundizar en la implementación aporta suficiente visión como para que quien lo lea no necesite nada más para comprender de forma natural el funcionamiento. Quizás me equivoque.
Tampoco he recibido demasiadas opiniones del libro de forma autónoma, aunque el curso completo sí que me consta que gustó (¡y me volvieron a llamar para otras cosas!).
KC: Aquí voy a comentar mis experiencias en estos ámbitos por si te sirven a ti o a otras personas. Yo también he dado cursos en empresas con temáticas como introducción a Python, a la ciencia de datos,…, y cuando los termino suelo enviar una encuesta anónima para que respondan las asistentes a los cursos. En general, las respuestas han sido satisfactorias y en algunas empresas he repetido!!! Otra cosa que hago es incluir una clausula en el precio en la que hay un descuento en el curso si me permiten publicar los materiales de los cursos, es decir, si el material que he generado para la empresa X lo puedo compartir ellos reciben un curso más barato. De esos cursos han salido unos cuantos tutoriales en Pybonacci que ahora disfruta (o sufre) todo el mundo de forma gratuita y abierta. Y dejo la coletilla, lector, si me quieres contratar o quieres que tu empresa me contrate para un curso a medida ponte en contacto conmigo 😀
KC: Entiendo que escribir un libro es un proceso largo y solitario. ¿Cómo has mantenido la motivación durante todo el proceso?
EZ: Bueno, el hecho de que sean apuntes te enciende un poco la chispa. Trabajaba todos los días a tiempo completo en el contenido. No lo sentí como algo agotador.
Me gusta escribir y enseñar. Saber que estas horas están pagadas, y que luego van a ser tu respaldo cuando das la clase tiene bastante que ver con mantenerte motivado.
También está el que el proceso simplemente surge de ti. No tienes que volverte demasiado loco con si las cosas funcionan o no, como cuando estás programando. Es solamente la parte bonita. A mí me ha parecido un proceso muy agradable.
De hecho, en el de C++, que está por publicar, el proceso fue mucho más duro, porque no conocía tan bien el lenguaje y el curso era más avanzado, pero lo disfruté mucho. Aprendí mucho y me arranqué con más texto y explicaciones más profundas, simplemente porque estaba disfrutando del proceso.
KC: Veo que te autoeditas en tu propia editorial, ¿nos podrías explicar un poco cómo fue el proceso inicial que te llevó a autoeditarte en lugar de elegir ser un autor en una editorial de otras personas?
EZ: No creía ni que el libro fuera interesante para ninguna editorial, ni que el idioma vendiera mucho, ni que el contenido estuviese a la altura y, la verdad, tampoco me apetecía que me mareasen. Yo lo que quería era poder decidir sobre lo que hacía.
Conozco a un par de personas que han tenido editoriales, una de ellas es una muy buena amiga, con la que comparto muchas cosas relacionadas con esto. Es por eso que sabía que el proceso de sacar libros de forma legal no es complejo. Que lo que es complejo es hacer libros excelentes, pero, como tampoco lo pretendía, no había demasiado problema.
Lo que intento es hacerlo lo mejor posible y cada vez un poquito mejor, pero siempre decidiendo sobre mis cosas y poniéndolo en abierto online para que el que quiera pueda leerlo. Sé que hay editoriales de habla inglesa que permiten este tipo de formatos, pero no sé cómo de compatible es esto con las editoriales a las que podría tener acceso aquí, y para ponerme a preguntar y negociar y todo eso… Me lo hago yo y listo.
A veces me da pereza hacer una cosa trivial que implique a un tercero y no me da pereza hacer todo yo mismo. Así soy yo.
KC: ¿Has tenido experiencias previas con editoriales al uso?
EZ: Como consumidor muchas. Libros técnicos por 80, 100, o 150 euros: No gracias. Luego te los compras y resulta que no son para tanto. Esto era lo que quería evitar. Así que ni me lo planteé.
KC: ¿Ganas dinero con tu editorial o te cuesta dinero?
EZ: Gracias a que el Crowdfunding tuvo éxito, no he puesto dinero de mi
bolsillo para hacer una editorial cuyos contenidos ya están amortizados
previamente, así que creo que está bien.
He puesto tiempo, cosa que suelo regalar quizás más de lo que debería. Pero a mí me satisface.
KC: Últimamente te has hecho ‘streamer’. Sinceramente, no le veo mucho atractivo en ver a alguien desarrollando algo y verlo en directo a no ser que esté colaborando directamente de alguna forma. ¿Por qué te has decidido a hacer vídeos en directo?
EZ: ¡No me he hecho ‘streamer’! A veces hago ‘streams’. Ni me dedico a ello ni le saco rendimiento monetario.
Básicamente es una forma de no sentirme solo cuando investigo cosas que a nadie de mi entorno le interesan. Lo uso como un mecanismo para sentirme acompañado y compartir cosas que me gustan con la gente.
Llevo unos años bastante a medias, con problemas de salud mental y algunos problemillas médicos que me han agotado mucho. El confinamiento y el aislamiento me han hundido bastante. Como la cosa estaba un poco parada, me quise tomar unas vacaciones, o un tiempo de menos agobio, en el que me pongo a estudiar y a trabajar en unos temas que llevaba tiempo queriendo mirar.
El streaming me ayuda a charlar con personas sobre los proyectos en los que he estado investigando y me hacen sentir menos solo en este proceso.
KC: Muchas gracias por exponer tu punto de vista, no había pensado en lo de ‘streamear’ como una terapia. ¿Nos quieres hablar un poco más sobre esos problemas mentales y de salud? Son temas tabú y es complicado poder entender y hablar sobre estas cosas de primera mano. Quizá tu testimonio pueda ayudar a otras personas.
EZ: La verdad es que no hay demasiado que decir sobre esto. He estado deprimido desde hace bastante tiempo, en diferentes niveles, pero tampoco le he encontrado una única fuente. Todo es un conjunto de cosas.
La ansiedad también es la gasolina que me hace trabajar mucho y mal, cuando de forma sosegada funciono mucho mejor y soy más clarividente. Pero era mi forma de enfrentarme a algunos problemas que ahora trato de enfocar en otros términos.
Sufría mucho, y sigo sufriendo, pero cada vez menos. Sentirse acompañado en el proceso ayuda por varios motivos. El primero es que te ayuda a centrarte en un tema durante más tiempo, porque lo haces para los demás. Aunque a ti no te quieras tanto, se lo debes a quien te escucha o se lo debes a quien te acompaña así que a través de su presencia aprendes a quererte un poco más y recordarte que no es una mierda todo lo que haces. El segundo te diría que es que te ayuda a ir despacio.
Quien sufre ansiedad lo sabe: a mí me duelen los dedos de aporrear las teclas. Por otro lado, acompañarte de gente en el proceso también te ayuda a entender las cosas mejor, igual que enseñar.
Como bien sabes, explicar las cosas a un tercero, aunque sea un patito de goma, es una buena herramienta para asegurarte de que estás realmente interiorizando las cosas.
En resumen: con personas, sobre todo con las adecuadas, la vida es más bonita.
KC: ¿Por qué twitch, propiedad de Amazon, en lugar de elegir otro tipo de plataformas más respetuosas con tus creaciones como alguna instancia de peertube par a vídeo como fediverse.tv o de funkwhale para audio como open.audio?
EZ: Cuando empecé a streamear Peertube anunció que tendrían streaming, pero antes no estaba disponible y hoy en día el ancho de banda que el streaming necesita hace que las instancias tengan limitaciones de uso.
También está Owncast por ahí, que una amiga lo ha empezado a usar y funciona bastante bien.
Yo, personalmente, odio con todas mis fuerzas configurar y gestionar servidores y creo que estos proyectos son suficientemente grandes como para que necesite algo más de infraestructura de la que actualmente dispongo.
Y no tengo dinero para destinar a estas cosas.
El streaming nació como algo informal, que hago cuando me apetece a lo que no puedo dedicar demasiados recursos. Instalar OBS y configurarlo mínimamente es todo lo que le puedo dedicar.
La única razón que tengo, es que necesito que no me lleve esfuerzo ponerlo en marcha, porque no me encuentro con ganas de ponerme a gestionar el sistema. Quería mirar Owncast lo mejor posible porque igual me sirve para los requerimientos que tengo, pero como Twitch puede verse por los reproductores de video libres mediante youtube-dl, no lo tengo como una prioridad.
Me gustaría tener la energía, el tiempo y el dinero para tomar siempre la mejor decisión, pero aun intentándolo con todas mis fuerzas, hay cosas en las que tengo que claudicar, como ésta, aunque sea de manera temporal.
KC: La última pregunta, ¿cuánto dinero tienes en la cuenta? Si es incómoda contesta esta otra, ¿cuántos side-projects tienes entre manos?, ¿y semi-abandonados/algún día/quizás? ¿Nos puedes contar algo sobre algunos de ellos?
EZ: Menos del que me gustaría, desde luego.
Side-projects… Cada día uno. No sé ni de cuáles hablarte.
Estos días estoy trabajando en un pequeño intérprete del ensamblador de RISC-V, en Python, precisamente.
También tengo siempre la idea de hacer una integración de una REPL genérica de LISP para NeoVim estilo Geiser (Emacs), pero nunca saco tiempo.
También llevo tiempo intentando encontrar un entorno cómodo para hacer videojuegos sencillos, para poder implementar algunas ideas, donde hago yo todo, desde el arte hasta el código. Es posible que lo haya encontrado en Chickadee, un toolkit muy interesante para Guile. Los amantes de Python por aquí que tengan el interés, pueden ir a por Pygame.
En cuanto a cosas más grandes, estoy empezando a hacer un compilador de Scheme como un proceso para aprender más sobre cómo funcionan los compiladores por dentro, así que estoy leyéndome todo texto que trata sobre el tema y pasa por mis manos.
El objetivo también es aprender todo esto para crear un entorno de trabajo à la Oberon: una computadora creada desde cero, incluyendo el procesador y el sistema operativo, para que sea fácil de estudiar, mantener y mejorar. Es algo que llevo años soñando y creo que hoy en día lo tengo más cerca que nunca. Es un curro complejo así que no sé si lo conseguiré. Es más, dudo mucho que lo consiga.
KC: Muchas gracias por tu tiempo y tu sinceridad.
EZ: A ti por las preguntas. Me han hecho analizar bastante lo que está siendo mi vida últimamente, cosa que parece que no había tenido tiempo para hacer.