Qué ha pasado estos días en Cartero

Me disculpen que no haya anotado por aquí lo que ha pasado en Cartero en los últimos días. Estuve un poco de vacaciones. Pero bueno, este es un resumen de lo que se ha incorporado al repositorio y ha pasado en el streaming en los últimos días.

  • El viernes en stream se empezó a implementar el cliente HTTP como tal. He decidido utilizar la biblioteca isahc. No tengo ninguna preferencia ni odio reqwest. Sin embargo, me parecía más idiomática y además me parecía buena idea probar cosas nuevas para experimentar. (Reqwest la tengo más tocada.)
  • Entró un pull request de @claufedacosta que arregla la interfaz de usuario. Estoy muy contento con este cambio y muy agradecido. Pone la barra de URL donde estaba antes, para que no sea difícil mover la ventana, y además la hace responsiva, o sea que si ahora la ventana se hace más estrecha, se apilan las partes de la aplicación una encima de la otra.
  • Anoche empecé a trabajar en el soporte para Flatpak y metí un manifest básico que por el momento funciona y compila la aplicación. He agregado comandos al README para explicar cómo generar este Flatpak con las herramientas de desarrollo instaladas.

Y esto sería todo, mucha calma. Dejo un patallazo de cómo está la aplicación en este momento.

Un pantallazo de cómo se está viendo en este momento la aplicación.

Compilación en Windows

Imagen

Un pantallazo de Cartero ejecutandose en Windows.

No es bonito el proceso todavía, pero compila en Windows. He utilizado rustup-init.exe y la toolchain stable-x86_64-pc-windows-gnu y estoy instalando las bibliotecas de GTK a través de MSYS2. La gracia está en que un usuario de Windows pueda simplemente descargar y ejecutar, para hacerlo atractivo como alternativa. Sobre que el ejecutable pese 124 MB, supongo que habrá que hacerse preguntas algún día.

Cartero ya está hecha en Meson

Este es un resumen de lo ocurrido en el tercer stream de desarrollo de Cartero, así como los commits que le he tirado hoy aprovechando que es festivo y que Meson al fin y al cabo sabía de antemano que iba a ser algo aburrido de integrar que no valía la pena hacer en vivo. Las cuatro horas de stream de ayer (yo prometí que el stream duraría hora y media, pero ciertamente volví a fallar) se pueden ver aquí.

  • Se ha migrado el código de la ventana y la aplicación a una clase propia.
  • Primeros pull requests integrados, este proyecto ya tiene más contributors.
  • El proyecto ya tiene icono, aunque sea provisional.
  • Ahora se usa meson para compilar el programa, y eso incluye más cosas.
Sigue leyendo

GTK, nociones de programación básicas

GTK es una biblioteca de componentes usada para hacer aplicaciones gráficas, es decir, aplicaciones de ordenador con ventanas, botones, etiquetas y esas cosas. La gente joven tal vez no sepa esto, pero antes las aplicaciones de ordenador (como los reproductores de música, las aplicaciones de chat o los organizadores de imágenes) no se programaban en HTML, sino que se hacían mediante programas que había que instalar en el ordenador (como cuando instalas Instagram en el móvil).

GTK es una de las bibliotecas predominantes en el mundo del software libre, ya que proyectos como el entorno de escritorio GNOME o el entorno de escritorio Xfce lo utilizan como base para muchas de las aplicaciones y herramientas que se instalan con el entorno de escritorio. Sin embargo, GTK es multiplataforma y se pueden compilar aplicaciones para Microsoft Windows y macOS que también utilicen esta biblioteca de componentes gráficos.

Sigue leyendo

Cartero va tomando forma

Resumen del stream del viernes para quien se lo perdiese. En el stream del viernes se continuó con el desarrollo del clon de Postman que he empezado a escribir en Rust. Estos son en resumen los cambios:

  • El programa ya tiene nombre. En el chat el otro día se propusieron varias palabras, y he de decir que me gustó bastante «Cartero», por lo que va a adoptar este nombre.
  • El programa ya tiene repositorio online. Debido a la naturaleza de este proyecto y visto que la gente quería contribuir a él, lo he publicado en GitHub.com. En los últimos días ya he visto varios forks y sorprendentemente hay gente tirando código.
  • El prototipo de la interfaz de usuario ya está casi completo con las cosas que querría proponer para la primera iteración. En el stream del viernes casi todo el tiempo se fue en preparar lo que podría ser un widget para poner las cabeceras HTTP.
Sigue leyendo

Mi primer prototipo con gtk-rs (ahora sí)

En el stream de ayer hice la primera compilación del cURL gráfico que he empezado a desarrollar. Por ahora no quiero que sea muy sofisticado y vamos a empezar suavemente. La aplicación por ahora debería mostrar un campo de texto para poner la URL, un dropdown para elegir el verbo HTTP de la petición (por ejemplo, POST o GET), una tabla para introducir las cabeceras HTTP de la petición, un campo de texto para el cuerpo de la petición HTTP, un botón para tirar la petición HTTP y un campo de texto donde ver la respuesta de la petición HTTP.

Aunque acabará ocurriendo, el reto por ahora va a ser ver hasta cuánto puedo avanzar en el desarrollo sin instalar GNOME Builder ni crear un proyecto auténtico al estilo GNOME moderno, con su meson.build y su parafernalia. Por el momento he creado un proyecto a mano usando cargo new y luego he agregado gtk4 como dependencia usando cargo add gtk4.

Para meter el cuerpo de la petición, me interesa usar un GtkSourceView, porque quiero que se pueda colorear en caso de que se utilice XML o JSON, así que también lo meteré.

Sigue leyendo

Primeros pasos creando blueprints con GNOME Workbench (resumen del stream de ayer)

Este post forma parte de la saga dedicada a la creación de una alternativa verdaderamente libre (o sea, GNU GPL) a Postman, Insomnia y Bruno. A su vez, esto es un resumen de texto de lo que hice en un stream de livecoding anterior. Así si te lo perdiste, es fácil de leer. Principalmente, lo que voy a contar aquí es cómo utilizar Blueprint y el lenguaje de diseño. Es un post que sirve como referencia y que estaré enlazando más adelante.

En el stream de ayer, después de contar la razón por la que quiero empezar a crear una aplicación de este estilo, empecé a fabricar el prototipo de una interfaz de usuario con GNOME Workbench. Esta aplicación permite diseñar una ventana y verla en tiempo real, para poder iterar más rápido y sin tener que recompilar código.

Sigue leyendo

Nice to haves y funciones aptas para un MVP

Por último, voy a describir algunas funciones que estaría bien ponerle a mi cliente HTTP, y cuáles vale la pena implementar al principio y cuáles para más adelante. O incluso cuales puede que nunca implemente.

Por el momento me interesa que mi cliente haga lo mínimo esencial para por lo menos empujar el proyecto para adelante. Es decir, me interesa:

  • Que se pueda introducir la URL a la que tirar la petición.
  • Que se pueda seleccionar el método HTTP a utilizar (GET, POST…)
  • Que se pueda ponerle un body a las peticiones web (para enviar datos).
  • Que se puedan elegir las cabeceras HTTP a utilizar.
  • Que se pueda visualizar la respuesta y las cabeceras de la misma.
Sigue leyendo