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”
Category Archives: Sin categoría
Don’t call it REST
Many people describe their HTTP APIs as REST or RESTful, but almost 100% of the time these APIs are not REST. I have made the same mistake in the past, so some clarification is necessary. What is REST? REST is an architectural style defined by Roy Fielding in his doctoral dissertation which defines a veryContinue reading “Don’t call it REST”
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”
Refactoring
El Refactoring es una práctica fundamental en el desarrollo del software, que sin embargo, se deja de lado demasiado a menudo debido a las presiones para cumplir con las fechas de entrega. No es algo “opcional” que se puede dejar “para cuando haya tiempo”. Al contrario. Es igual a la limpieza del taller mecánico, debeContinue reading “Refactoring”