2023-05-03

Línea de Comandos

fuente: now script

El desarrollo moderno de software depende de muchas herramientas diseñadas para funcionar desde la línea de comandos. Las herramientas permiten crear proyectos, instalar paquetes, compilar, ejecutar, realizar pruebas, desplegar, iniciar servicios, contenedores, etc. Por esta razón, ser capaz de utilizar y automatizar usando la línea de comandos es una habilidad deseable para los desarrolladores y las empresas que los contratan.

Por muchos años, BASH fue el interprete más popular. El shell por defecto en Unix/Linux y derivados, en MacOS, y disponible para Windows a través de varias opciones. Tanto que Microsoft intentó batallar contra BASH usando PowerShell, incluso convirtiendo PowerShell en software libre (por lo que ahora está disponible para Linux y MacOS). No se puede negar que PowerShell es bueno y es infinitamente superior al CMD en términos de usabilidad y programación, pero compartir contra BASH y años de programadores utilizándolo es otra historia, sobre todo por la compatibilidad - Nadie quiere perder años de experiencia y programas (scripts) solo por cambiar de shell. Pero PowerShell no es el único competidor.

Otro punto relevante hoy en día, es el aspecto visual. Si el shell puede presentar información útil, en forma visual, definitivamente mejora tu productividad al utilizarlo. No es solo un asunto de prompts o resultados coloridos, como algunos podrían pensar. Es un asunto de señales visuales que te indican  ubicación, proyecto, estado de git, ambiente del lenguaje, etc. etc.

Veamos que opciones de shell son las más populares, hoy en día:

ShellFrameworkTemas
BASHOh My BASHTemas - Bash-It
FishShellOh My FishTemas - Fishline
PowerShellOh My PoshTemas - Todo en uno
ZshOh My Zsh!Temas - PowerLine 10k
NuShellStarshipTemas


2023-04-25

Taller de Computación Científica

source: freepik

En un trabajo conjunto entre la Universidad Libre - seccional Cali y la RUAV , en el mes de febrero 2023 realizamos el taller Introducción a la Computación Científica con Jupyter/Python.

A continuación comparto los videos, y en la descripción encuentran el cuaderno de la sesión:

  1. Sesión 1: Computación Científica, Ciencia Abierta, Cuadernos Jupyter y Markdown.
  2. Sesión 2: El Lenguaje de Programación Python.
  3. Sesión 3: Cálculo Numérico, Simbólico y Científico.
  4. Sesión 4: Gráficos y Mapas.
  5. Sesión 5: Análisis de Datos con Pandas.
Preguntas, comentarios y sugerencias son todas bienvenidas. 


2023-04-21

Sistema Operativo para Desarrollo


Linux, MacOS o Windows, la pregunta persiste entre los desarrolladores de software. En muchos aspectos el sistema operativo de escritorio se ha vuelto un commodity (cualquiera sirve para lo mismo). 

Herramientas comunes para desarrollar software desde el escritorio, están disponibles por igual para los sistemas operativos Linux, MacOS y Windows: 
  • IDEs: Eclipse, NetBeans, Visual Studio Code, Arduino, Android Studio, etc.
  • Lenguajes: Java, Python, PHP, Kotlin, C#, Ruby, C/C++, etc.
  • Bases de Datos: PostgreSQL, SQLite, MySQL, Oracle RDBMS, etc.
Sin embargo, el desarrollo de software cada vez más se realiza utilizando herramientas desde la línea de comandos, y ahí tanto Linux como MacOS tenían la ventaja, porque BASH fue por mucho tiempo la interfaz de línea de comando (o CLI) por excelencia.

Pero además de una CLI programable, los gestores de paquetes fueron los hicieron que muchos programadores abandonaran Windows se cambiaran a Linux, por la facilidad que implica automatizar tareas de instalación y configuración de ambientes de desarrollo. Otros se cambiaron a MacOS aprovechando gestores de paquetes como MacPorts y Brew que de alguna forma igualaban a sus contrapartes en Linux.

Para Windows también surgieron algunos gestores de paquetes como Chocolatey, y Microsoft terminó creando el suyo propio: Windows Package Manager.

Pero PowerShell no es BASH, ni WinGet es el gestor de paquetes que los programadores acostumbran a usar. Ofrecer nuevas herramientas para hacer lo que se hace igual en Linux y MacOS no resolvió el problema.

La solución para Microsoft fue recurrir a un antiguo componente de Windows llamado SFU: Services for Unix, y al hecho que el kernel de Windows siempre ha soportado POSIX (desde NT), y crear algo nuevo llamado WSL: Windows Services for Linux. Nota: solo de Windows 10 en adelante.

Con WSL se ejecuta un kernel de Linux en modo usuario de Windows, de esta forma los programadores de Windows ahora pueden tener un sistema Linux completo ejecutándose al mismo tiempo. Una CLI con Bash, el mismo gestor de paquetes y todos los demás programas a los que ya están acostumbrado a usar. 

Para instalar WSL solo es necesario abrir PowerShell y ejecutar: wsl --install, con eso es suficiente para tener un Ubuntu funcionando al lado de Windows.

2023-04-18

¿Cómo hacer preguntas inteligentes?


Una de las Leyes de Murphy indica que "Una Pregunta es una declaración implícita de Ignorancia", y cuando de un salón de clase se trata, usualmente significa además que alguien no leyó o no preparó la clase como debía, de lo contrario seguramente sabría lo que está preguntando.

Sin embargo, es claro que hacer preguntas es parte del proceso de aprendizaje, lo importante es saber hacer preguntas inteligentes.

Una pregunta inteligente es aquella que amerita ser respondida, que está bien formulada (en forma y esencia), que tiene cierto grado de dificultad, que justifica que una persona ocupada dedique algo de su tiempo libre para darle respuesta, y por lo tanto exige una respuesta inteligente.

Preguntas que se pueden responder con el acostumbrado RTFM no son preguntas inteligentes. Para dar algunos ejemplos, preguntas del tipo:
  • Donde encuentro X, o Y?
  • Mi aparato X, marca Y no funciona. Qué hago?
  • Instale X, Y o Z, por qué no funciona?
  • Este programa no funciona. Qué hago?
Estas son muy malas preguntas, poco inteligentes. Muestran que quien pregunta no sabe ni qué preguntar. Además de reflejan algunas cosas interesantes:
  • Suponer que quien responde conoce sitios secretos en Internet, pues quien pregunta no es capaz de encontrar una respuesta él mismo usando Bing, Google, ChatGPT o lo que sea que el resto del mundo usa cuando necesita una respuesta.
  • Suponer que quien responde tiene una máquina igualita, con la misma versión de software, y que falla de la misma forma (no dicha) que la máquina de quien pregunta.
  • Suponer que quien responde tiene poderes extrasensoriales y es capaz de adivinar por qué algo no funciona solo poniendo sus manos sobre la pantalla donde está la pregunta.
No es de extrañar que estas preguntas sean completamente ignoradas, no reciban ninguna respuesta útil, o solo reciban siglas como las mencionadas antes.

Si desea mejorar la posibilidad que alguien destine tiempo para responder sus preguntas, por favor tómese antes un momento para leer este artículo y aprenda a hacer preguntas inteligentes.