The two best programming languages that nobody uses

A language that doesn’t affect the way you think about programming, is not worth knowing. Alan Perlis, “Epigrams on Programming” Today I want to talk about two underdogs of programming languages. If you have only ever worked with object-oriented, C-family languages like Java, C# or JavaScript, these will definitely change the way you think aboutContinue reading “The two best programming languages that nobody uses”

Provisioning Virtual Machines with Vagrant and Ansible

In a previous post I showed how to create and provision a VM for development purposes using Vagrant, and the benefits of being able to replicate a consistent environment with a single command. But Vagrant can also create several VMs with a single command and connect them by private networks, allowing to test complete infrastructureContinue reading “Provisioning Virtual Machines with Vagrant and Ansible”

Configurando Javadoc en Eclipse 2018-09 y Ubuntu 18.04 con OpenJDK 11

Si instalaste el paquete default-jdk en Ubuntu 18.04, por estas fechas (septiembre 2018) obtendrás el paquete openjdk-11-jdk. Es un poco confuso porque hasta septiembre de 2018 lo que en realidad instala es Java 10: Sólo después de septiembre de 2018 se va a instalar Java 11 con el paquete openjdk-11-jdk. También podrás comprobar que enContinue reading “Configurando Javadoc en Eclipse 2018-09 y Ubuntu 18.04 con OpenJDK 11”

Instalando un entorno de programación C en Windows con Mingw-w64 y Visual Studio Code

Windows no es un sistema operativo que cuenta con un buen soporte para la programación en C. Por razones que no quedan del todo claras, Microsoft se ha negado rotundamente a actualizar el soporte del compilador C de Visual Studio, el cual ha quedado estancado en el estándar C89. Afortunadamente la comunidad Open Source vieneContinue reading “Instalando un entorno de programación C en Windows con Mingw-w64 y Visual Studio Code”

El rol del idioma inglés

¿Se puede ser un buen programador sin hablar inglés? Es una pregunta interesante. Supongo que sí, pero en mi experiencia personal el no saber inglés hubiera resultado una desventaja importante. El hecho es que el inglés, por distintas razones, es el idioma universal de las ciencias y los negocios, como en un momento lo fueContinue reading “El rol del idioma inglés”

Conceptos básicos de criptografía: cifrado simétrico

Hace ya bastante tiempo, por la década de los 1990, la web apenas comenzaba y solía suceder que un programa podía tener una vida feliz sin tener ninguna función de criptografía. Pero hoy cualquier programa medianamente complejo necesita en algún momento comenzar a utilizar el cifrado para proteger los datos del usuario en su almacenamientoContinue reading “Conceptos básicos de criptografía: cifrado simétrico”

Intercambiando dos variables

Digamos que tenemos dos variables (a, b) y queremos intercambiarlas, es decir que una tome el valor de la otra: Nada más fácil, ¿verdad? Creamos una variable temporal para poder resguardar el valor de a mientras asignamos a = b, y luego asignamos a b el valor previo de a. Es necesario crear esta variableContinue reading “Intercambiando dos variables”

Administrando servicios de Windows

Recientemente tuve que programar una pequeña utilidad para administrar un servicio de Windows, así que pensé recoger aquí algunas informaciones que se encuentran dispersas en varias fuentes para facilitar la tarea. La manera más fácil de administrar un servicio en .NET es mediante la clase ServiceController del assembly System.ServiceProcess.dll. El siguiente ejemplo muestra cómo reiniciarContinue reading “Administrando servicios de Windows”