<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Andres Jaimes</title>
    <link>https://andres.jaimes.net/</link>
    <description>Recent content on Andres Jaimes</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 26 May 2026 08:00:00 +0000</lastBuildDate>
    <atom:link href="https://andres.jaimes.net/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Instalando Debian Trixie y Sway</title>
      <link>https://andres.jaimes.net/linux/debian-and-sway/</link>
      <pubDate>Mon, 25 May 2026 00:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/linux/debian-and-sway/</guid>
      <description>&lt;p&gt;Llevo algún tiempo pensando en el sistema operativo que quiero para uso diario. He trabajado con sistemas que van desde Windows 3.1 a HPUX, pasando por OS9, OSX, Slackware y Ubuntu.&lt;/p&gt;&#xA;&lt;p&gt;Cuando me inicié, disfrutaba de teclear comandos en DOS y de aplicaciones como alpine para leer el correo. Ese mundo simple donde aprendí y me desarrollé&amp;hellip; y que ahora añoro.&lt;/p&gt;&#xA;&lt;p&gt;Estoy cansado de las decenas de notificaciones que recibo diariamente y que solo me desconcentran de la tarea del momento. Cansado de los efectos de transparencia de OSX que no fueron pensados para mejorar la productividad. Cansado de ver como los sistemas cargan tantos programas inútiles que consumen la mayor parte de la memoria de mi ordenador haciéndome desear tener más… es justo lo que motiva ese círculo vicioso en el que vivimos, siempre deseando tener una computadora más nueva.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cómo usar ripgrep (rg) en Linux o Mac</title>
      <link>https://andres.jaimes.net/linux/rg-tutorial-examples/</link>
      <pubDate>Wed, 25 Mar 2026 00:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/linux/rg-tutorial-examples/</guid>
      <description>&lt;p&gt;Este artículo contiene ejemplos de uso del comando &lt;strong&gt;ripgrep&lt;/strong&gt; (&lt;em&gt;rg&lt;/em&gt;).&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;ripgrep&lt;/strong&gt; es un buscador de expresiones regulares rápido y moderno que busca recursivamente texto dentro de ficheros y que respeta automáticamente los ficheros &lt;em&gt;.gitignore&lt;/em&gt; y omite directorios ocultos y binarios por defecto. El comando no viene preinstalado en la mayoría de los sistemas operativos, pero merece la pena aprenderlo.&lt;/p&gt;&#xA;&lt;h2 id=&#34;ejemplos-de-uso&#34;&gt;Ejemplos de uso&lt;/h2&gt;&#xA;&lt;p&gt;Busca &amp;ldquo;hola&amp;rdquo; en el directorio actual:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;rg &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hola&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Busca &amp;ldquo;hola&amp;rdquo; en el directorio &amp;ldquo;config&amp;rdquo;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Instalando los controladores de nvidia en Debian Trixie</title>
      <link>https://andres.jaimes.net/linux/installing-nvidia-drivers-in-debian/</link>
      <pubDate>Mon, 16 Mar 2026 00:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/linux/installing-nvidia-drivers-in-debian/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;Importante:&lt;/strong&gt; Sway no funciona con los controladores oficiales de nvidia. Fuente: &lt;a href=&#34;https://wiki.debian.org/sway&#34;&gt;Documentación de sway en el sitio de debian&lt;/a&gt;, actualizado al 15 de marzo de 2026.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;Los usuarios de &lt;strong&gt;sway&lt;/strong&gt; contamos con los controladores de código abierto de &lt;strong&gt;nouveou&lt;/strong&gt;, pero, en ocasiones, necesitamos utilizar programas de inteligencia artificial (IA) que dependen de &lt;strong&gt;cuda&lt;/strong&gt; para tener un mejor rendimiento. Dicha biblioteca requiere del controlador oficial de nvidia y, por ello, en este artículo describo como instalarla en Debian.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cómo instalar Scala/Metals en MacOS</title>
      <link>https://andres.jaimes.net/scala/setup-scala-metals/</link>
      <pubDate>Sat, 14 Feb 2026 00:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/scala/setup-scala-metals/</guid>
      <description>&lt;p&gt;Utilizar &lt;strong&gt;Scala&lt;/strong&gt; con &lt;strong&gt;Metals&lt;/strong&gt; puede ser muy complicado si no se utilizan las versiones correctas. Después de muchas horas logré hacerlo funcionar y estoy encantado con su funcionamiento. Mi editor es &lt;strong&gt;Helix&lt;/strong&gt;, pero los siguientes comandos funcionarán con cualquier otro editor.&lt;/p&gt;&#xA;&lt;p&gt;Lo primero es &lt;strong&gt;desinstalar&lt;/strong&gt; cualquier versión existente que tengamos de &lt;strong&gt;bloop&lt;/strong&gt; o &lt;strong&gt;metals&lt;/strong&gt; y, a continuación, &lt;strong&gt;instalar coursier&lt;/strong&gt; y &lt;strong&gt;actualizar scala&lt;/strong&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;brew install coursier&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;brew upgrade scala&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ahora, utilizando &lt;strong&gt;coursier&lt;/strong&gt;, instalamos bloop y metals:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing git and connecting to GitHub on FreeBSD or Linux</title>
      <link>https://andres.jaimes.net/freebsd/installing-git-and-connecting-to-github-on-freebsd/</link>
      <pubDate>Thu, 29 Jan 2026 11:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/freebsd/installing-git-and-connecting-to-github-on-freebsd/</guid>
      <description>&lt;p&gt;Git is a popular version control system that allows developers to manage their code repositories efficiently. If you are a developer using FreeBSD or Linux, you will need to set up Git and an authentication method to start collaborating on projects with other developers. In this post, we will walk you through the process of installing Git, creating SSH keys, and cloning a project from GitHub on FreeBSD or Linux.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reading gmail email on macOS using fetchmail, postfix, sendmail, and alpine</title>
      <link>https://andres.jaimes.net/macos/fetchmail-sendmail-postfix-alpine/</link>
      <pubDate>Fri, 10 Oct 2025 13:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/macos/fetchmail-sendmail-postfix-alpine/</guid>
      <description>&lt;p&gt;This post describes the process for setting up macOS to read and store email locally –without deleting it from the remote server. The downloaded email can be read with a local application like Alpine.&lt;/p&gt;&#xA;&lt;p&gt;The process goes like this:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;fetchmail&lt;/strong&gt; pulls emails from gmail&lt;/li&gt;&#xA;&lt;li&gt;fetchmail hands the emails to &lt;strong&gt;postfix&lt;/strong&gt; for local delivery&lt;/li&gt;&#xA;&lt;li&gt;use &lt;strong&gt;alpine&lt;/strong&gt; to read our locally delivered email&lt;/li&gt;&#xA;&lt;li&gt;use alpine to write an email, which uses &lt;strong&gt;postfix&lt;/strong&gt; to relay it via gmail&lt;/li&gt;&#xA;&lt;li&gt;we can use &lt;strong&gt;sendmail&lt;/strong&gt; for any other application that requires us to send emails&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;configuring-the-hostname&#34;&gt;Configuring the hostname&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;From the Apple menu, open &lt;strong&gt;System Settings&lt;/strong&gt;, and look for &lt;code&gt;hostname&lt;/code&gt;. It should be under the &lt;strong&gt;Sharing&lt;/strong&gt; settings.&lt;/li&gt;&#xA;&lt;li&gt;Update the hostname to something that is easy to remember/type/etc. Mine, for example, is set to &lt;code&gt;macos.local&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;Save the changes, open a terminal, and check the new name shows up with the following command:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;hostname&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;allowing-app-access-to-gmail&#34;&gt;Allowing app access to gmail&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://andres.jaimes.net/forex/add-email-notification/&#34;&gt;Read this article&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing bash on macOS</title>
      <link>https://andres.jaimes.net/macos/installing-bash/</link>
      <pubDate>Sun, 29 Jun 2025 12:05:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/macos/installing-bash/</guid>
      <description>&lt;p&gt;A quick post on how to install &lt;code&gt;bash&lt;/code&gt; on macOS to replace &lt;code&gt;zsh&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Why did Apple stop shipping with &lt;code&gt;bash&lt;/code&gt;? Licenses. The older version of Bash was licensed under GPLv2, while newer versions are licensed under GPLv3.&lt;/p&gt;&#xA;&lt;h2 id=&#34;installing-bash&#34;&gt;Installing bash&lt;/h2&gt;&#xA;&lt;p&gt;Run the following command to install &lt;code&gt;bash&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;brew install bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;/opt/homebrew/bin/bash --version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add the newly installed shell to &lt;code&gt;/etc/shells&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;sudo vi /etc/shells&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# List of acceptable shells for chpass(1).&#xA;# Ftpd will not allow users to connect who are not using&#xA;# one of these shells.&#xA;&#xA;/bin/bash&#xA;/bin/csh&#xA;/bin/dash&#xA;/bin/ksh&#xA;/bin/sh&#xA;/bin/tcsh&#xA;/bin/zsh&#xA;/opt/homebrew/bin/bash&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Run the following command to change the default shell:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Docker cheat-sheet</title>
      <link>https://andres.jaimes.net/docker/cheat-sheet/</link>
      <pubDate>Sun, 29 Jun 2025 12:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/docker/cheat-sheet/</guid>
      <description>&lt;p&gt;Posting some common docker commands:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;docker compose up&lt;/code&gt; Starts services (add &amp;ndash;build to force rebuild)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;docker compose down&lt;/code&gt; Stops and removes everything (containers, networks)&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;docker compose stop&lt;/code&gt; Stops containers but does not remove them&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;docker compose start&lt;/code&gt; Restarts containers that were previously stopped&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;docker compose down -v&lt;/code&gt; Also removes named/anonymous volumes&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;docker compose down --rmi all&lt;/code&gt; Also removes images built by Compose&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Creating C-API Interfaces for C&#43;&#43; code</title>
      <link>https://andres.jaimes.net/cpp/creating-a-c-api-interface/</link>
      <pubDate>Thu, 24 Apr 2025 12:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/cpp/creating-a-c-api-interface/</guid>
      <description>&lt;p&gt;At some point we&amp;rsquo;ll want our C++ code to interface with other languages, but since C is the standard, we have to find ways to adapt our C++ code to allow interaction via a C interface. A C API is a group of functions that allows other programs to call our C++ code using a well-known protocol. That means, we have to find ways to put our parameters and functions into a standard C wrapping so they can be used by other clients. By creating this interface, we can reuse our C++ code in multiple ways, for example, by creating dynamic libraries –dll&amp;rsquo;s, dylib&amp;rsquo;s or lib&amp;rsquo;s– and using them from different programs written in diverse languages.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Compiling Java and JavaFX applications into native binaries</title>
      <link>https://andres.jaimes.net/java/java-javafx-graalvm-gluon/</link>
      <pubDate>Sun, 26 May 2024 10:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/java/java-javafx-graalvm-gluon/</guid>
      <description>&lt;p&gt;This article will walk you through the process of compiling Java and JavaFX applications into native binaries using GraalVM and Gluon.&#xA;This version is initially focused on MacOS, but will be updated for Windows.&lt;/p&gt;&#xA;&lt;h2 id=&#34;installing-graalvm&#34;&gt;Installing GraalVM&lt;/h2&gt;&#xA;&lt;p&gt;GraalVM is a software package that includes a Java SDK and tools for converting Java programs into native applications. I recommend you to use this SDK during your development. Let&amp;rsquo;s start by downloading GraalVM. The available Java version as of the publication of this page is 22. There are versions for both Intel and Apple processors.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating a simple static library</title>
      <link>https://andres.jaimes.net/cpp/creating-a-basic-static-library/</link>
      <pubDate>Wed, 12 Jul 2023 12:00:00 -0500</pubDate>
      <guid>https://andres.jaimes.net/cpp/creating-a-basic-static-library/</guid>
      <description>&lt;p&gt;This article describes how to create a simple static library using C++. A static library is a collection of object files that are linked with and copied into a target application at compile time. The resulting executable contains all the object code from the static library, so it can be executed independently of the library.&lt;/p&gt;&#xA;&lt;h2 id=&#34;static-library&#34;&gt;Static library&lt;/h2&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s start by creating a simple square class:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// src/square.h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#ifndef SQUARE_H&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#define SQUARE_H&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;square&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;private&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;double&lt;/span&gt; length;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;    square(&lt;span style=&#34;color:#66d9ef&#34;&gt;double&lt;/span&gt; length);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;double&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;area&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#endif&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and its corresponding implementation:&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43;20 Modules</title>
      <link>https://andres.jaimes.net/cpp/cpp20-modules/</link>
      <pubDate>Tue, 11 Jul 2023 12:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/cpp/cpp20-modules/</guid>
      <description>&lt;p&gt;In this article, we&amp;rsquo;ll see how to create and use C++20 modules. We&amp;rsquo;ll use &lt;strong&gt;clang-16&lt;/strong&gt; to compile our code.&lt;/p&gt;&#xA;&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;&#xA;&lt;p&gt;OSX comes with &lt;strong&gt;clang-14&lt;/strong&gt; by default (2023). We can check its version with the following command:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;clang --version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;Apple clang version 14.0.3 &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;clang-1403.0.22.14.1&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;Target: arm64-apple-darwin22.5.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;Thread model: posix&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;InstalledDir: /Library/Developer/CommandLineTools/usr/bin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The latest version as of the time of this writing is &lt;strong&gt;clang-16&lt;/strong&gt;. Use the following command to install it with homebrew:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Notes on C&#43;&#43;</title>
      <link>https://andres.jaimes.net/cpp/notes-on-cpp/</link>
      <pubDate>Fri, 16 Jun 2023 12:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/cpp/notes-on-cpp/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;All the examples use C++17&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;sort-vector-by-property-in-class&#34;&gt;Sort vector by property in class&lt;/h2&gt;&#xA;&lt;p&gt;In this example, we defined a class called &lt;code&gt;open_order&lt;/code&gt; that has a &lt;code&gt;long long open_time&lt;/code&gt; field, and a constructor.&lt;/p&gt;&#xA;&lt;p&gt;To sort the vector of &lt;code&gt;open_order&lt;/code&gt; objects based on the &lt;code&gt;open_time&lt;/code&gt; field, we define a comparison function &lt;code&gt;compare_by_open_time&lt;/code&gt; that compares two &lt;code&gt;open_order&lt;/code&gt; objects based on their &lt;code&gt;open_time&lt;/code&gt; values. The function returns true if the &lt;code&gt;open_time&lt;/code&gt; of the first object is less than the &lt;code&gt;open_time&lt;/code&gt; of the second object, which results in sorting the vector in ascending order of &lt;code&gt;open_time&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating a simple dynamic library</title>
      <link>https://andres.jaimes.net/cpp/creating-a-basic-dynamic-library/</link>
      <pubDate>Thu, 15 Jun 2023 12:00:00 -0500</pubDate>
      <guid>https://andres.jaimes.net/cpp/creating-a-basic-dynamic-library/</guid>
      <description>&lt;p&gt;This article describes how to create a simple shared library using C++. A shared library is a collection of object files that are linked with and loaded into a target application at runtime. The resulting executable contains only the object code that is needed to load the shared library, for this reason, the library has to be distributed with the executable.&lt;/p&gt;&#xA;&lt;h2 id=&#34;shared-library&#34;&gt;Shared library&lt;/h2&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s start by creating a simple &lt;code&gt;sum.c&lt;/code&gt; program using &lt;code&gt;C&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Online diff tool</title>
      <link>https://andres.jaimes.net/apps/online-diff/</link>
      <pubDate>Mon, 08 May 2023 12:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/apps/online-diff/</guid>
      <description>&lt;p&gt;This free online diff tool will help you compare two texts and highlight the differences between them. The whole process is done in your browser, so your texts are not sent to any server.&lt;/p&gt;&#xA;&lt;p&gt;Paste the text you want to compare in the boxes below and click the &lt;strong&gt;Compare&lt;/strong&gt; button.&lt;/p&gt;&#xA;&#xA;&lt;style&gt;&#xA;ins { background: #E6FFE6; }&#xA;del { background: #FFE6E6; }&#xA;#diff {&#xA;  box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);&#xA;  background-color: #fff;&#xA;  border: 3px solid #ddd;&#xA;  color: #000;&#xA;  font-size: 0.7em;&#xA;  line-height: 1.5em;&#xA;  padding: 0.5em;&#xA;  width: 100%;&#xA;  white-space: pre-wrap; &#xA;}&#xA;label {&#xA;  font-size: 0.9em;&#xA;  font-weight: 700;&#xA;}&#xA;textarea {&#xA;  box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);&#xA;  border: 3px solid #ddd;&#xA;  border-radius: 10px;&#xA;  font-family: monospace;&#xA;  font-size: 0.9em;&#xA;  line-height: 1.5em;&#xA;  margin-bottom: 1em;&#xA;  padding: 0.5em;&#xA;  resize: none;&#xA;  width: 100%;&#xA;}&#xA;.btn { padding: 0.5em 0.8em; background-color: #eee; border: 1px solid #ccc; color: #000; border-radius: 5px; margin-bottom: 1em; }&#xA;.btn:hover { background-color: #ccc; }&#xA;.mb-3 { margin-bottom: 0.5em; }&#xA;&lt;/style&gt;&#xA;&lt;div id=&#34;documents&#34;&gt;&#xA;    &lt;form&gt;&#xA;        &lt;label for=&#34;left&#34;&gt;Text A&lt;/label&gt;&#xA;        &lt;textarea id=&#34;left&#34; rows=&#34;16&#34;&gt;&lt;/textarea&gt;&#xA;        &lt;label for=&#34;right&#34;&gt;Text B&lt;/label&gt;&#xA;        &lt;textarea id=&#34;right&#34; rows=&#34;16&#34;&gt;&lt;/textarea&gt;&#xA;        &lt;button class=&#34;btn btn-secondary mx-3&#34; onclick=&#34;compare()&#34; type=&#34;button&#34;&gt;Compare&lt;/button&gt;&#xA;    &lt;/form&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2&gt;diff&lt;/h2&gt;&#xA;&lt;pre id=&#34;diff&#34;&gt;Press the Compare button&lt;/pre&gt;&#xA;&lt;script src=&#34;jsdiff.js&#34;&gt;&lt;/script&gt;&#xA;&lt;script&gt;&#xA;    function compare() {&#xA;        let left = document.getElementById(&#39;left&#39;).value&#xA;        let right = document.getElementById(&#39;right&#39;).value&#xA;        if (left.length &gt; 0 &amp;&amp; right.length &gt; 0) {&#xA;            document.getElementById(&#34;diff&#34;).innerHTML = diffString(left, right)&#xA;        }&#xA;    }&#xA;&lt;/script&gt;&#xA;&#xA;&lt;h2 id=&#34;references&#34;&gt;References&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Resig, J. (n.d.). &amp;ldquo;Javascript Diff Algorithm.&amp;rdquo; Retrieved May 1, 2023, from &lt;a href=&#34;https://johnresig.com/projects/javascript-diff-algorithm/&#34;&gt;https://johnresig.com/projects/javascript-diff-algorithm/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Create a bootable FreeBSD or Ubuntu USB flash drive on Mac/OS-X</title>
      <link>https://andres.jaimes.net/freebsd/creating-a-freebsd-linux-bootable-usb-stick-in-mac/</link>
      <pubDate>Mon, 08 May 2023 09:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/freebsd/creating-a-freebsd-linux-bootable-usb-stick-in-mac/</guid>
      <description>&lt;p&gt;This article provides step-by-step instructions on how to create a bootable USB flash drive for either FreeBSD or Ubuntu operating systems. The post includes the necessary commands to download and transfer the installation files onto the USB drive using the terminal on a macOS system. The author also includes a reference link for creating a FreeBSD installation memstick on macOS.&lt;/p&gt;&#xA;&lt;h2 id=&#34;download-the-files&#34;&gt;Download the files&lt;/h2&gt;&#xA;&lt;p&gt;Start by downloading the installation file for the operating system you want to install. For &lt;strong&gt;FreeBSD&lt;/strong&gt;, you can download the &lt;strong&gt;amd64/memstick&lt;/strong&gt; installation file from the &lt;a href=&#34;https://www.freebsd.org/where.html&#34;&gt;FreeBSD website&lt;/a&gt;. For Ubuntu, you can download the &lt;strong&gt;desktop&lt;/strong&gt; installation file from the &lt;a href=&#34;https://ubuntu.com/download/desktop&#34;&gt;Ubuntu website&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Common git commands</title>
      <link>https://andres.jaimes.net/linux/git-common-commands/</link>
      <pubDate>Tue, 02 May 2023 12:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/linux/git-common-commands/</guid>
      <description>&lt;p&gt;This page&amp;rsquo;s intention is to help me keep some git commands handy, since some times I forget how to do some tasks in the github workflow.&lt;/p&gt;&#xA;&lt;p&gt;Our first step is to &lt;strong&gt;clone&lt;/strong&gt; a repository using the command &lt;code&gt;git clone git@github.com:some-account/some-project.git&lt;/code&gt;. Why use the &lt;code&gt;git&lt;/code&gt; link instead of the &lt;code&gt;http&lt;/code&gt; one? To avoid user authorization issues.&lt;/p&gt;&#xA;&lt;p&gt;Once we&amp;rsquo;ve cloned the repository, we can start working on a new feature by creating a &lt;strong&gt;new branch&lt;/strong&gt; using the &lt;code&gt;git checkout&lt;/code&gt; command with the &lt;code&gt;-b&lt;/code&gt; flag and a branch name, like this: &lt;code&gt;git checkout -b my-feature&lt;/code&gt;. This creates a new branch called &lt;code&gt;my-feature&lt;/code&gt; and switches to it. To see the &lt;strong&gt;list of branches&lt;/strong&gt;, we can use the &lt;code&gt;git branch&lt;/code&gt; command, and use &lt;code&gt;git branch --show-current&lt;/code&gt; to see the &lt;strong&gt;current branch&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to install Java and Maven on FreeBSD</title>
      <link>https://andres.jaimes.net/java/install-java-on-freebsd/</link>
      <pubDate>Sat, 18 Mar 2023 10:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/java/install-java-on-freebsd/</guid>
      <description>&lt;p&gt;FreeBSD is a powerful and reliable operating system that is widely used by developers and system administrators. If you are a Java developer, you will need to install both Java and Maven on your FreeBSD system to build and run your Java applications. In this post, we will walk you through the steps to install Java and Maven on FreeBSD.&lt;/p&gt;&#xA;&lt;h2 id=&#34;java&#34;&gt;Java&lt;/h2&gt;&#xA;&lt;p&gt;We will start by switching to the root account, and installing java. The flavor to use is &lt;code&gt;openjdk&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to install postgres on FreeBSD</title>
      <link>https://andres.jaimes.net/postgresql/how-to-install-postgres-on-freebsd/</link>
      <pubDate>Sat, 18 Mar 2023 09:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/postgresql/how-to-install-postgres-on-freebsd/</guid>
      <description>&lt;p&gt;PostgreSQL, also known as Postgres, is a popular open-source relational database management system (RDBMS) that is widely used by developers and organizations around the world. FreeBSD, a free and open-source operating system, is well-known for its reliability, performance, and security features. In this blog post, we will guide you through the process of installing PostgreSQL in FreeBSD. Whether you&amp;rsquo;re a developer or a system administrator, this step-by-step tutorial will help you get started with it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Online JSON validator and formatter</title>
      <link>https://andres.jaimes.net/apps/json-validator/</link>
      <pubDate>Tue, 14 Mar 2023 09:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/apps/json-validator/</guid>
      <description>&lt;p&gt;Welcome to our online JSON validator, a tool for validating and formatting JSON code. JSON (JavaScript Object Notation) is a widely used format for storing and exchanging data on the web. Our validator helps you check that your JSON code is correctly formatted, and error-free. Whether you&amp;rsquo;re a developer or just starting with JSON, our tool will make your work easier and more efficient. Simply copy and paste your JSON code into the input field, and let our validator do the rest.&lt;/p&gt;</description>
    </item>
    <item>
      <title>APA citation formatter for online resources</title>
      <link>https://andres.jaimes.net/apps/apa-citation-formatter/</link>
      <pubDate>Sun, 12 Mar 2023 09:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/apps/apa-citation-formatter/</guid>
      <description>&lt;p&gt;The APA citation style is a widely-used academic citation format developed by the American Psychological Association. It provides guidelines for citing sources in written works, such as research papers, essays, and academic publications. The style includes specific formatting and citation rules for various types of sources, including books, articles, websites, and more. The main goal of the APA citation style is to ensure accuracy and clarity in citing sources, while also providing a standard format for referencing that allows readers to easily locate and verify the sources used in a written work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up node and typescript</title>
      <link>https://andres.jaimes.net/javascript/setting-up-node-with-typescript/</link>
      <pubDate>Sat, 01 Oct 2022 10:16:12 -0500</pubDate>
      <guid>https://andres.jaimes.net/javascript/setting-up-node-with-typescript/</guid>
      <description>&lt;p&gt;This article describes the creation process of a node application with TypeScript.&lt;/p&gt;&#xA;&lt;h2 id=&#34;installing-nvm&#34;&gt;Installing nvm&lt;/h2&gt;&#xA;&lt;p&gt;There are multiple ways to install &lt;code&gt;node&lt;/code&gt; but we have picked the &lt;code&gt;nvm&lt;/code&gt; path. This method will&#xA;allow us to have multiple versions of node installed on the computer.&lt;/p&gt;&#xA;&lt;p&gt;We have to make sure that &lt;em&gt;xcode command line tools&lt;/em&gt; are installed. We can trigger the installation by&#xA;trying a command like &lt;code&gt;cc&lt;/code&gt; on the terminal.&lt;/p&gt;&#xA;&lt;p&gt;Run the following command to install nvm:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Microservices Design and Best Practices</title>
      <link>https://andres.jaimes.net/architecture/microservices-best-practices-and-architecture/</link>
      <pubDate>Thu, 25 Aug 2022 21:11:52 -0500</pubDate>
      <guid>https://andres.jaimes.net/architecture/microservices-best-practices-and-architecture/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;microservices-architecture.png&#34; alt=&#34;microservice architecture&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Some of my notes and best practices learned over the years designing and developing microservices.&lt;/p&gt;&#xA;&lt;h2 id=&#34;ui&#34;&gt;UI&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Thin layer. Do not add any business logic to this layer.&lt;/li&gt;&#xA;&lt;li&gt;Contains React code and may contain web assets.&lt;/li&gt;&#xA;&lt;li&gt;Has a shared look and feel that provides a visual consistency to the project.&lt;/li&gt;&#xA;&lt;li&gt;It is a web application, like Play, to allow us to set and remove cookies and delegate calls to the proxy.&lt;/li&gt;&#xA;&lt;li&gt;It can be simpler to share data among react components.&lt;/li&gt;&#xA;&lt;li&gt;It does not handle sessions so it can be part of a distributed system.&lt;/li&gt;&#xA;&lt;li&gt;May be part of a larger web application, like a portal.&lt;/li&gt;&#xA;&lt;li&gt;CSS can be shared across the application, achieving consistency in a simpler way.&lt;/li&gt;&#xA;&lt;li&gt;It is stateless.&lt;/li&gt;&#xA;&lt;li&gt;It is deployed independently of other components and services.&lt;/li&gt;&#xA;&lt;li&gt;It can be configured locally along with a proxy to set up fake requests during development. This way front-end developers do not have to wait for back-end developers to complete their work.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The following are some issues that may come up when we split the UI in multiple subprojects:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Calling a DLL from MQL</title>
      <link>https://andres.jaimes.net/mql/calling-dll-from-mql/</link>
      <pubDate>Mon, 25 Apr 2022 18:03:22 -0400</pubDate>
      <guid>https://andres.jaimes.net/mql/calling-dll-from-mql/</guid>
      <description>&lt;p&gt;There are times when we want access to additional data structures and function libraries than the ones provided by MetaTrader&amp;rsquo;s MQL. Besides native open-source MQL options, we can create our own Dynamic Link Library (DLL) in C# or C++ and link it to our programs.&lt;/p&gt;&#xA;&lt;p&gt;In this article, we research how to connect to DLLs created with these languages. We must keep in mind that the code generated by C# is managed code running on the .NET framework, while C++&amp;rsquo;s code is native. We are going to use Visual Studio 2022 for this exercise.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Parsing Json with the Play Framework</title>
      <link>https://andres.jaimes.net/scala/parsing-json-play-framework/</link>
      <pubDate>Mon, 03 Jan 2022 10:16:12 -0500</pubDate>
      <guid>https://andres.jaimes.net/scala/parsing-json-play-framework/</guid>
      <description>&lt;p&gt;This article discusses different common scenarios for JSON parsing and conversion, useful when working with the Play Framework library.&#xA;All the examples in the article, use one or more of the following library imports:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; play.api.libs.functional.syntax._&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; play.api.libs.json.&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Format&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;JsError&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;JsNull&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;JsPath&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;JsResult&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;JsString&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;JsSuccess&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;JsValue&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Json&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;OFormat&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Reads&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The first import is required to use the special &lt;code&gt;and&lt;/code&gt; and &lt;code&gt;or&lt;/code&gt; functions found through the examples below.&lt;/p&gt;&#xA;&lt;h2 id=&#34;json-that-matches-property-names&#34;&gt;JSON that matches property names&lt;/h2&gt;&#xA;&lt;p&gt;The first snippet allows us to parse different basic data types from a json-formatted input. The following json:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scala Lectures</title>
      <link>https://andres.jaimes.net/scala/lectures-conferences/</link>
      <pubDate>Mon, 06 Dec 2021 14:52:48 -0500</pubDate>
      <guid>https://andres.jaimes.net/scala/lectures-conferences/</guid>
      <description>&lt;p&gt;A curated list of Scala lectures on functional programming and design patterns.&lt;/p&gt;&#xA;&lt;h2 id=&#34;functional-programming-design-patterns&#34;&gt;Functional programming design patterns&lt;/h2&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/E8I19uA-wGY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Wlaschin, Scott. &amp;ldquo;Functional programming design patterns.&amp;rdquo; 30 Aug 2015, &lt;a href=&#34;https://youtu.be/E8I19uA-wGY&#34;&gt;youtu.be/E8I19uA-wGY&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In object-oriented development, we are all familiar with design patterns such as the Strategy pattern and Decorator pattern, and design principles such as SOLID. The functional programming community has design patterns and principles as well. This talk will provide an overview of some of these, and present some demonstrations of FP design in practice.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using Cats Effect IO with the Play Framework</title>
      <link>https://andres.jaimes.net/scala/cats-effect-io-play-framework/</link>
      <pubDate>Tue, 30 Nov 2021 19:49:08 -0500</pubDate>
      <guid>https://andres.jaimes.net/scala/cats-effect-io-play-framework/</guid>
      <description>&lt;p&gt;Cats Effect IO operations have to be performed at the highest level possible. So when working with the Play Framework the solution is to execute &lt;code&gt;unsafeToFuture()&lt;/code&gt; in the controller methods.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; get &lt;span style=&#34;color:#66d9ef&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Action&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;async &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;implicit&lt;/span&gt; request &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;  service&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get&lt;span style=&#34;color:#f92672&#34;&gt;().&lt;/span&gt;map &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt; items &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;Ok&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Json&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;toJson&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;items&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;}.&lt;/span&gt;unsafeToFuture&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We can as well write an Action implementation that automatically calls &lt;code&gt;unsafeToFuture&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;object&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;IOHttp&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;implicit&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;ActionBuilderOps&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;+R&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;_&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;B&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;](&lt;/span&gt;ab&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;ActionBuilder&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;R&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;B&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;])&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; cats.effect.implicits._&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; asyncF&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;F&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;_&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Effect&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;](&lt;/span&gt;cb&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;R&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;B&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; F&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Result&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;])&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Action&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;B&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&lt;/span&gt; ab&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;async &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt; c &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;      cb&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;c&lt;span style=&#34;color:#f92672&#34;&gt;).&lt;/span&gt;toIO&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;unsafeToFuture&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And then use it like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cats Effect IO - Retry with backoff pattern</title>
      <link>https://andres.jaimes.net/scala/cats-effect-io-retry-with-backoff/</link>
      <pubDate>Tue, 30 Nov 2021 19:46:15 -0500</pubDate>
      <guid>https://andres.jaimes.net/scala/cats-effect-io-retry-with-backoff/</guid>
      <description>&lt;p&gt;Scala example for using the retry-with-backoff pattern with Cats Effect IO.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quick notes on functors</title>
      <link>https://andres.jaimes.net/scala/functors/</link>
      <pubDate>Tue, 30 Nov 2021 19:32:27 -0500</pubDate>
      <guid>https://andres.jaimes.net/scala/functors/</guid>
      <description>&lt;h2 id=&#34;functors&#34;&gt;Functors&lt;/h2&gt;&#xA;&lt;p&gt;A functor is a design pattern that allows us to apply a function to a contextualized (wrapped) type. This is accomplished by implementing the &lt;code&gt;map&lt;/code&gt; function:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-haskell&#34; data-lang=&#34;haskell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fmap&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt; (a &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt; b) &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt; f a &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt; f b&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Notes on lazy evaluation</title>
      <link>https://andres.jaimes.net/scala/lazy-evaluation/</link>
      <pubDate>Tue, 30 Nov 2021 19:03:46 -0500</pubDate>
      <guid>https://andres.jaimes.net/scala/lazy-evaluation/</guid>
      <description>&lt;p&gt;Lazy evaluation is a strategy that delays expression evaluation until their value is needed. It also avoids repeated evaluations by returning previously computed results by storing them in a lookup table.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Why isn&amp;rsquo;t lazy evaluation used everywhere?&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Lazy evaluations are not used everywhere (not used in every software currently produced) because of the following reasons:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Lazy evaluation requires book-keeping overhead - you have to know if it&amp;rsquo;s been evaluated yet and such things. Eager evaluation is always evaluated, so you don&amp;rsquo;t have to know. This is especially true in concurrent contexts.&lt;/li&gt;&#xA;&lt;li&gt;Secondly, it&amp;rsquo;s trivial to convert eager evaluation into lazy evaluation by packaging it into a function object to be called later, if you so wish.&lt;/li&gt;&#xA;&lt;li&gt;Thirdly, lazy evaluation implies a loss of control. What if I lazily evaluated reading a file from a disk? Or getting the time? That&amp;rsquo;s not acceptable.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;We observe from the examples on the third bullet that lazy evaluation and &lt;em&gt;side effects&lt;/em&gt; do not play well together. For example, a file could be modified by an external process and we might need to read the latest update.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Future Either</title>
      <link>https://andres.jaimes.net/scala/future-either/</link>
      <pubDate>Fri, 08 Oct 2021 12:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/scala/future-either/</guid>
      <description>&lt;p&gt;This implementation is based on the work of &lt;a href=&#34;http://www.beyondthelines.net/programming/the-problem-with-eithert/&#34;&gt;Malcolm&lt;/a&gt;,&#xA;and exists because it provides the cleanest use of similar monads.&lt;/p&gt;&#xA;&lt;p&gt;The base monad wraps an Either class in a Future class:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; scala.concurrent.&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;ExecutionContext&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Future&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; scala.util.&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Failure&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Success&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Try&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;final&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;FutureEither&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;+E&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;+A&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;](&lt;/span&gt;value&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Future&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Either&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;E&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;A&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]])&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; map&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;B&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;](&lt;/span&gt;f&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;A&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; B&lt;span style=&#34;color:#f92672&#34;&gt;)(&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;implicit&lt;/span&gt; ec&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;ExecutionContext&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;FutureEither&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;E&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;B&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;FutureEither&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;value map &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Right&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;a&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Right&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;f&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;a&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Left&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Left&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;})&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; flatMap&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;EE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;&amp;gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;E&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;B&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;](&lt;/span&gt;f&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;A&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;FutureEither&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;EE&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;B&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;])(&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;implicit&lt;/span&gt; ec&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;ExecutionContext&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;FutureEither&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;EE&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;B&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;FutureEither&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;value flatMap &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Right&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;a&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; f&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;a&lt;span style=&#34;color:#f92672&#34;&gt;).&lt;/span&gt;value&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;map &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Right&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;a&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Right&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;a&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Left&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Left&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Left&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Future&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;successful&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Left&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;})&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The companion object defines multiple functions to instantiate a FutureEither from other monads.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Generate a random string using the console</title>
      <link>https://andres.jaimes.net/linux/random-string/</link>
      <pubDate>Mon, 27 Sep 2021 15:47:13 -0400</pubDate>
      <guid>https://andres.jaimes.net/linux/random-string/</guid>
      <description>&lt;p&gt;Generate a random string using the command line:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;cat /dev/urandom | tr -cd &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;:graph:&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | head -c &lt;span style=&#34;color:#ae81ff&#34;&gt;32&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On OSX, the previous command might return a &lt;code&gt;tr: Illegal byte sequence&lt;/code&gt; error, so try:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;export LC_ALL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;C; cat /dev/urandom | tr -cd &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;:graph:&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; | head -c &lt;span style=&#34;color:#ae81ff&#34;&gt;32&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>AES Encryption with Base64 encoding</title>
      <link>https://andres.jaimes.net/scala/aes-encryption/</link>
      <pubDate>Sun, 25 Jul 2021 21:11:52 -0500</pubDate>
      <guid>https://andres.jaimes.net/scala/aes-encryption/</guid>
      <description>&lt;p&gt;We start by adding our imports.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; java.nio.charset.StandardCharsets&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; java.security.Key&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; java.util.Base64&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; javax.crypto.Cipher&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; javax.crypto.spec.SecretKeySpec&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For this example we&amp;rsquo;re going to use the &lt;a href=&#34;https://www.baeldung.com/java-aes-encryption-decryption#2-cbc&#34;&gt;CBC&lt;/a&gt; (Cipher Block Chaining) variation of AES.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Algorithm&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;String&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;AES&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Transformation&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;String&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;AES/ECB/PKCS5Padding&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; aeskey&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;String&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Key&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&lt;/span&gt; key &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;SecretKeySpec&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;key&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;getBytes&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Algorithm&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Our &lt;code&gt;encrypt&lt;/code&gt; function receives a key and some text to encrypt. The function will return a base64-encoded string if everything goes ok.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Set Up DynamoDB for Local Development</title>
      <link>https://andres.jaimes.net/scala/setup-local-dynamodb/</link>
      <pubDate>Thu, 08 Jul 2021 18:21:53 -0400</pubDate>
      <guid>https://andres.jaimes.net/scala/setup-local-dynamodb/</guid>
      <description>&lt;p&gt;In this article we are going to set up dynamodb on our local development environment. A short description of a couple of easy-to-use management tools is included.&lt;/p&gt;&#xA;&lt;h2 id=&#34;dynamodb&#34;&gt;DynamoDB&lt;/h2&gt;&#xA;&lt;p&gt;Start by &lt;a href=&#34;https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html&#34;&gt;downloading the DynamoDB development&lt;/a&gt; version. Uncompress the file and create a launch script with the following contents:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/sh&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;java -Djava.library.path&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb -port &lt;span style=&#34;color:#ae81ff&#34;&gt;8000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The script will launch dynamo on port 8000 and will create a file called &lt;code&gt;shared-local-instance.db&lt;/code&gt; on the current directory when the first table is added.&#xA;Add execution permissions to the script we just created:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Monoid definition and examples</title>
      <link>https://andres.jaimes.net/scala/monoid/</link>
      <pubDate>Fri, 30 Apr 2021 17:13:03 -0400</pubDate>
      <guid>https://andres.jaimes.net/scala/monoid/</guid>
      <description>&lt;p&gt;We are going to cite the definition of a Monoid found on this &lt;a href=&#34;https://news.ycombinator.com/item?id=15238784&#34;&gt;post&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Conceptually, a monoid is anything that:&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;- Has a &amp;#34;zero-value&amp;#34;: `mempty`, e.g., `0`&#xA;- Can be &amp;#34;appended&amp;#34; together: `mappend`, e.g., `+`&#xA;- Has an identity with the zero-value: `x + 0 == x, 0 + x == x`&#xA;- Is associative: `x + y + z == (x + y) + z == x + (y + z)`&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;&#xA;&lt;p&gt;This isn&amp;rsquo;t limited to just arithmetic with operators like +. You can define whole new types as monoids if they have these characteristics. For example, we can merge together configuration files by using monoid operators (in pseudo-code):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating an sbt project from scratch</title>
      <link>https://andres.jaimes.net/scala/create-sbt-project-from-zero/</link>
      <pubDate>Sun, 25 Apr 2021 13:12:19 -0400</pubDate>
      <guid>https://andres.jaimes.net/scala/create-sbt-project-from-zero/</guid>
      <description>&lt;h2 id=&#34;files-and-project-structure&#34;&gt;Files and project structure&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;sbt&lt;/code&gt; projects use the same structure as Maven. Creating a project from scratch involve the following steps:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;mkdir some-new-project&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;cd some-new-project&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;mkdir -p src/&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;main,test&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;/&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;resources,scala&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;mkdir project&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Create a new file called &lt;code&gt;build.sbt&lt;/code&gt; and add the following contents:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-sbt&#34; data-lang=&#34;sbt&#34;&gt;name := &amp;#34;SomeNewProject&amp;#34;&#xA;version := &amp;#34;1.0&amp;#34;&#xA;scalaVersion := &amp;#34;2.13.5&amp;#34;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Our final folder structure has to look like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sending a message using telegram and scala</title>
      <link>https://andres.jaimes.net/scala/sending-a-message-using-telegram/</link>
      <pubDate>Thu, 11 Feb 2021 19:11:59 -0500</pubDate>
      <guid>https://andres.jaimes.net/scala/sending-a-message-using-telegram/</guid>
      <description>&lt;p&gt;In this article we are going to use scala to send a message via Telegram. The process is very simple and pretty much involves setting up a bot and making a GET request to Telegram&amp;rsquo;s api.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The Telegram app on the phone has more features than its desktop counterpart. I recommend you to use the phone version to make sure you have access to all the required features.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;on-telegram&#34;&gt;On Telegram&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1-create-a-telegram-public-channel&#34;&gt;1. Create a Telegram public channel&lt;/h3&gt;&#xA;&lt;p&gt;Telegram requires you to have a public channel to be able to publish messages using a bot.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to create a self-contained jar file (fat jar) using sbt</title>
      <link>https://andres.jaimes.net/scala/how-to-create-a-fat-jar/</link>
      <pubDate>Sat, 06 Feb 2021 10:39:48 -0500</pubDate>
      <guid>https://andres.jaimes.net/scala/how-to-create-a-fat-jar/</guid>
      <description>&lt;p&gt;A &lt;em&gt;fat jar&lt;/em&gt; is a jar file that contains any dependencies required by a Java or Scala program. Deployment becomes an easy task if we only have to deal with one single file. In this article we&amp;rsquo;ll go through the steps required to create a &lt;em&gt;fat jar&lt;/em&gt; using Scala and sbt.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The following procedure has been tested using Scala 2.12.8, sbt 1.2.8 and jdk 11.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;1-projectassemblysbt&#34;&gt;1. project/assembly.sbt&lt;/h2&gt;&#xA;&lt;p&gt;Create &lt;code&gt;project/assembly.sbt&lt;/code&gt; and add the following line:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add your GMail account to MetaTrader Notifications</title>
      <link>https://andres.jaimes.net/forex/add-email-notification/</link>
      <pubDate>Fri, 15 Jan 2021 12:49:53 -0500</pubDate>
      <guid>https://andres.jaimes.net/forex/add-email-notification/</guid>
      <description>&lt;p&gt;On this article we&amp;rsquo;re going to set up Metatrader for email sending. This is recommended so you don&amp;rsquo;t miss important messages happening to your account.&lt;/p&gt;&#xA;&lt;h2 id=&#34;getting-a-password-from-google&#34;&gt;Getting a password from Google&lt;/h2&gt;&#xA;&lt;p&gt;If you want to connect your Google email account, you have to generate a new password for Metatrader. To generate a Google password:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;On the GMail page click on the &lt;em&gt;Apps&lt;/em&gt; menu at the top right corner and then click on  &lt;em&gt;Account&lt;/em&gt;.&#xA;&lt;img src=&#34;account.png&#34; alt=&#34;Go to Account&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Implementing put and delete operations using BatchWriteItem</title>
      <link>https://andres.jaimes.net/scala/dynamodb-batchwriteitem/</link>
      <pubDate>Tue, 17 Nov 2020 10:57:37 -0500</pubDate>
      <guid>https://andres.jaimes.net/scala/dynamodb-batchwriteitem/</guid>
      <description>&lt;p&gt;The &lt;code&gt;BatchWriteItem&lt;/code&gt; operation allows us to work with groups of up to 25 items per request. Additionally, we can put and delete items to one or multiple tables. Amazon DynamoDB&amp;rsquo;s page says:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;A single call to BatchWriteItem can write up to 16 MB of data, which can comprise as many as 25 put or delete requests. Individual items to be written can be as large as 400 KB.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;In this article we are going to go through the process of putting and deleting items to a table that looks like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Undoing the Last Git Commit</title>
      <link>https://andres.jaimes.net/linux/git/undo-last-commit/</link>
      <pubDate>Thu, 22 Oct 2020 18:34:09 -0400</pubDate>
      <guid>https://andres.jaimes.net/linux/git/undo-last-commit/</guid>
      <description>&lt;p&gt;A command so important, it deserves its own page:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;git reset --soft HEAD~1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The previous command undoes the last commit to git. I think this is one of those commands that I have typed many times during the last year. It&amp;rsquo;s very important to know which branch we currently are on, but sometimes excitement (or stress) may make us forget checking it.&lt;/p&gt;&#xA;&lt;p&gt;If this is not enough, then we can reset our branch to &lt;code&gt;master&lt;/code&gt; like this: (&lt;strong&gt;this will lose all our changes&lt;/strong&gt;):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Inserting and updating items to DynamoDB lists and maps</title>
      <link>https://andres.jaimes.net/scala/dynamodb-insert-update-list-map/</link>
      <pubDate>Sun, 04 Oct 2020 11:25:10 -0400</pubDate>
      <guid>https://andres.jaimes.net/scala/dynamodb-insert-update-list-map/</guid>
      <description>&lt;p&gt;Should I use a map or a list? A simple rule:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;If you need to update or remove an item, lists only allow you to do it by index. While maps let you do it by key.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Their simplified representation goes like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;someMap&amp;#34;&lt;/span&gt;: {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;key1&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value1&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;key2&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value2&amp;#34;&lt;/span&gt;,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;  },&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;&amp;#34;someList&amp;#34;&lt;/span&gt;: [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value1&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;value2&amp;#34;&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;7&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;inserting-and-updating-to-a-map&#34;&gt;Inserting and updating to a map&lt;/h2&gt;&#xA;&lt;p&gt;The following example adds or updates an instance of &amp;ldquo;SomeItem&amp;rdquo; as a json string into a map field called &lt;code&gt;someMapField&lt;/code&gt;. A sample simplified record looks like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Testing scala classes and controllers</title>
      <link>https://andres.jaimes.net/scala/scala-test/</link>
      <pubDate>Sun, 04 Oct 2020 00:41:51 -0400</pubDate>
      <guid>https://andres.jaimes.net/scala/scala-test/</guid>
      <description>&lt;p&gt;This article discusses different approaches for testing classes, services, and PlayFramework controllers using scalatest.&lt;/p&gt;&#xA;&lt;h2 id=&#34;setting-up-the-project-dependencies&#34;&gt;Setting up the project dependencies&lt;/h2&gt;&#xA;&lt;p&gt;First step is to add to &lt;code&gt;build.sbt&lt;/code&gt; the next dependency:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;org.scalatest&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;%%&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;scalatest&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;3.2.2&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The following template unit test uses the &lt;code&gt;WordSpec&lt;/code&gt; style which offers a natural way for writing tests. scalatest offers more &lt;a href=&#34;https://www.scalatest.org/user_guide/selecting_a_style&#34;&gt;styles&lt;/a&gt;, but I find this one more expressive.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;PlaySpec&lt;/code&gt; (found in the PaylFramework) extends &lt;code&gt;WordSpec&lt;/code&gt; and has a similar behavior.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enumerations</title>
      <link>https://andres.jaimes.net/scala/enumerations/</link>
      <pubDate>Mon, 28 Sep 2020 10:25:05 -0400</pubDate>
      <guid>https://andres.jaimes.net/scala/enumerations/</guid>
      <description>&lt;h2 id=&#34;using-case-object&#34;&gt;Using case object&lt;/h2&gt;&#xA;&lt;p&gt;Unlike other languages, Scala does not have a keyword for enumerations. One way to implement them is by using &lt;code&gt;case objects&lt;/code&gt;. For example:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;sealed&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;trait&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;OperatingSystem&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;extends&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Product&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;with&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Serializable&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;object&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;OperatingSystem&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;object&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;FreeBsd&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;extends&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;OperatingSystem&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;object&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Debian&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;extends&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;OperatingSystem&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;object&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Alpine&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;extends&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;OperatingSystem&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;7&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;object&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Arch&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;extends&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;OperatingSystem&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;8&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;object&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Osx&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;extends&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;OperatingSystem&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;9&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To use it, just define a value of type &lt;code&gt;OperatingSystem&lt;/code&gt;. You can even get a string representation from these values:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Rancher on Ubuntu/Docker</title>
      <link>https://andres.jaimes.net/docker/running-rancher-on-ubuntu-docker/</link>
      <pubDate>Sun, 23 Aug 2020 18:30:02 -0400</pubDate>
      <guid>https://andres.jaimes.net/docker/running-rancher-on-ubuntu-docker/</guid>
      <description>&lt;p&gt;On this article we are going to install a rancher server on Ubuntu. Let&amp;rsquo;s start by getting the rancher image from docker hub:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;sudo docker run -d --restart&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;always -p 8080:8080 --name&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;rancher-server rancher/server&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Go to &lt;code&gt;http://ip-address:8080&lt;/code&gt; and click on &lt;em&gt;Add Host&lt;/em&gt;. It is important that you do not use a localhost address (127.0.0.1, localhost). If you do so, and you want to add your local computer as an agent, you will not be able to reach it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>From MySQL to Postgres - Useful commands</title>
      <link>https://andres.jaimes.net/postgresql/from-mysql-to-postgres/</link>
      <pubDate>Mon, 17 Aug 2020 18:43:47 -0400</pubDate>
      <guid>https://andres.jaimes.net/postgresql/from-mysql-to-postgres/</guid>
      <description>&lt;p&gt;This article shows a list of basic commands on MySQL and their corresponding versions for PostgreSQL.&lt;/p&gt;&#xA;&lt;h2 id=&#34;connecting-to-a-database&#34;&gt;Connecting to a database&lt;/h2&gt;&#xA;&lt;p&gt;MySQL&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;$ mysql -u root -p&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Postgres&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;$ psql -h &amp;lt;host&amp;gt; -U &amp;lt;username&amp;gt; &amp;lt;database-name&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Try the following if you don&amp;rsquo;t know the name of the available databases:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;psql -h &amp;lt;host&amp;gt; -U &amp;lt;username&amp;gt; -l&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Some installations add your current user to the list of allowed users to the database. In that case you can connect without specifying a username. Some others create a &lt;code&gt;postgres&lt;/code&gt; or &lt;code&gt;pgsql&lt;/code&gt; user, so as an alternative, you can &lt;code&gt;su&lt;/code&gt; into that user and then run psql:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ideas for successful software projects</title>
      <link>https://andres.jaimes.net/it-management/ideas-to-successful-projects/</link>
      <pubDate>Mon, 17 Aug 2020 16:31:02 -0400</pubDate>
      <guid>https://andres.jaimes.net/it-management/ideas-to-successful-projects/</guid>
      <description>&lt;p&gt;This article describes some ideas on getting a successful software development process.&lt;/p&gt;&#xA;&lt;p&gt;A successful project:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Depends on the expertise of the team. Don&amp;rsquo;t try to push many new technologies into a project. It will be difficult for the team to get acquainted with them and deliver a good quality project. Small steps are the best.&lt;/li&gt;&#xA;&lt;li&gt;Depends on the level of communication among the participants. Enforce communication among the team members. Even if they are working remotely. Make sure they have the right tools for chatting and video conferencing.&lt;/li&gt;&#xA;&lt;li&gt;Depends on the degree of delegation to take decisions. Don&amp;rsquo;t try to guess what your customers want. It&amp;rsquo;s very likely customers have a pretty clear idea of what they&amp;rsquo;re expecting. Involve them. Let them participate in the process.&lt;/li&gt;&#xA;&lt;li&gt;Depends on whether they have direct contact with the customer or not. Let your developers ask questions to the project shareholders. It will give them a clearer idea of what the customer is looking for.&lt;/li&gt;&#xA;&lt;li&gt;Depends on whether the project has been planned or not. Document ideas, meetings, mock-ups. Create links and make them available to everyone in the project. Create a document of requirements and keep it updated.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Things that may affect the process or its final result:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Storing MySQL credentials on a file</title>
      <link>https://andres.jaimes.net/mysql/credentials-stored-on-file/</link>
      <pubDate>Mon, 17 Aug 2020 15:12:47 -0400</pubDate>
      <guid>https://andres.jaimes.net/mysql/credentials-stored-on-file/</guid>
      <description>&lt;p&gt;MySQL allows you to store credentials in a file called &lt;code&gt;~/.my.cnf&lt;/code&gt;. The contents can look like this:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[mysqldump]&#xA;user=myuser&#xA;password=mypassword&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;We have to modify the file permissions and give read/write permissions to the owner only:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;chmod &lt;span style=&#34;color:#ae81ff&#34;&gt;600&lt;/span&gt; ~/.my.cnf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And done. We can now use it:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;mysqldump mydatabase&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;mysqldump&lt;/code&gt; is going to read the credentials from that file.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why you should not initialize a random generator with a static number</title>
      <link>https://andres.jaimes.net/java/random-seeds/</link>
      <pubDate>Mon, 17 Aug 2020 14:05:18 -0400</pubDate>
      <guid>https://andres.jaimes.net/java/random-seeds/</guid>
      <description>&lt;p&gt;The following examples use random generated numbers initialized with a static seed. Never do it like this.&lt;/p&gt;&#xA;&lt;p&gt;Run the following examples multiple times to understand why it is important to have a good seed.&lt;/p&gt;&#xA;&lt;p&gt;PHP version:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/usr/bin/php&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;php&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;srand&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;rand&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;7&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;rand&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;8&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;rand&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;4&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;9&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;rand&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;6&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Java version:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Common tasks when working with MySQL</title>
      <link>https://andres.jaimes.net/mysql/common-tasks-mysql/</link>
      <pubDate>Mon, 17 Aug 2020 13:24:20 -0400</pubDate>
      <guid>https://andres.jaimes.net/mysql/common-tasks-mysql/</guid>
      <description>&lt;h2 id=&#34;how-to-install-mysql-server-in-ubuntu&#34;&gt;How to install MySQL server in Ubuntu&lt;/h2&gt;&#xA;&lt;p&gt;It’s pretty simple:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;sudo apt-get install mysql-server&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;how-to-connect-to-mysql-using-java&#34;&gt;How to connect to MySQL using Java&lt;/h2&gt;&#xA;&lt;p&gt;This is a useful and simple snippet:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; java.sql.Connection;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; java.sql.DriverManager;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Test&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;(String&lt;span style=&#34;color:#f92672&#34;&gt;[]&lt;/span&gt; args) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;            Class.&lt;span style=&#34;color:#a6e22e&#34;&gt;forName&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;com.mysql.jdbc.Driver&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;            Connection c &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; DriverManager.&lt;span style=&#34;color:#a6e22e&#34;&gt;getConnection&lt;/span&gt;(&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;              &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;jdbc:mysql://localhost/?user=root&amp;amp;password=&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;            c.&lt;span style=&#34;color:#a6e22e&#34;&gt;close&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;            System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Success&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;catch&lt;/span&gt; (Exception e) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;            e.&lt;span style=&#34;color:#a6e22e&#34;&gt;printStackTrace&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;how-to-connect-to-mysql-using-c&#34;&gt;How to connect to MySQL using C#&lt;/h2&gt;&#xA;&lt;p&gt;Go to &lt;a href=&#34;http://www.mysql.com&#34;&gt;http://www.mysql.com&lt;/a&gt; and download the .NET connector. I used the “no installation” zip file. Uncompress it. In C# go to Project &amp;gt; Add Reference &amp;gt; Browse and select the file named MySql.Data.dll located in the bin directory of the zip file you just uncompressed. Press Ok.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Akka Actors</title>
      <link>https://andres.jaimes.net/scala/akka-actors/</link>
      <pubDate>Mon, 17 Aug 2020 08:40:41 -0400</pubDate>
      <guid>https://andres.jaimes.net/scala/akka-actors/</guid>
      <description>&lt;p&gt;The Play Framework is built upon Akka actors, but does everything so that you don&amp;rsquo;t really need to use them. Despite this, actors are easy to integrate with Play, precisely because it is built on them (there is already an actor system for you to use)&lt;/p&gt;&#xA;&lt;p&gt;A few exceptions are:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;websockets handling (doing that using actors is a breeze)&lt;/li&gt;&#xA;&lt;li&gt;scheduling tasks for doing daily or weekly jobs&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Akka actors use messages to communicate between among them. This behavior allows callers to send a message and go back to the pool of available threads to keep processing more requests.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Inspirational videos</title>
      <link>https://andres.jaimes.net/forex/videos-inspirational/</link>
      <pubDate>Mon, 17 Aug 2020 08:25:28 -0400</pubDate>
      <guid>https://andres.jaimes.net/forex/videos-inspirational/</guid>
      <description>&lt;p&gt;This article contains a series of curated inspirational videos from different users.&lt;/p&gt;&#xA;&lt;h2 id=&#34;it-will-make-you-rich-what-poor-people-dont-know-about-making-money&#34;&gt;&amp;ldquo;It will make you rich&amp;rdquo;. What poor people don&amp;rsquo;t know about making money&lt;/h2&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/hbgnBv6odYM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;</description>
    </item>
    <item>
      <title>Videos from UKspreadbetting</title>
      <link>https://andres.jaimes.net/forex/videos-ukspreadbetting/</link>
      <pubDate>Mon, 17 Aug 2020 08:24:55 -0400</pubDate>
      <guid>https://andres.jaimes.net/forex/videos-ukspreadbetting/</guid>
      <description>&lt;p&gt;This article contains a series of inspirational videos from user UKspreadbetting which I consider very important.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-trading-forex-is-so-difficult&#34;&gt;Why trading forex is so difficult&lt;/h2&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/XuQ6pqLoTRs?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;is-trading-the-road-to-great-rewards-and-richness&#34;&gt;Is trading the road to great rewards and richness?&lt;/h2&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/uA91q1qjDSY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;trade-entries-and-exits&#34;&gt;Trade entries and exits&lt;/h2&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/xwqF7oYk3m8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;institutional-traders-versus-private-traders&#34;&gt;Institutional traders versus private traders&lt;/h2&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/f66jm9qJAPk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;</description>
    </item>
    <item>
      <title>Recommended libraries for Java</title>
      <link>https://andres.jaimes.net/java/recommended-libraries/</link>
      <pubDate>Sun, 02 Aug 2020 11:20:17 -0400</pubDate>
      <guid>https://andres.jaimes.net/java/recommended-libraries/</guid>
      <description>&lt;p&gt;This article lists a curated list of Java libraries that I have used over the years for different projects. They are all well documented, and for most of them, plenty of examples can be found on the web.&lt;/p&gt;&#xA;&lt;h2 id=&#34;apache-commons-email&#34;&gt;Apache Commons Email&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://commons.apache.org/proper/commons-email/&#34;&gt;Commons Email&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Commons Email aims to provide a API for sending email. It is built on top of the Java Mail API, which it aims to simplify.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://commons.apache.org/proper/commons-email/userguide.html&#34;&gt;User Guide&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;apache-commons-stringutils&#34;&gt;Apache Commons StringUtils&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.commons&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;commons-lang3&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;3.4&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;    StringUtils.&lt;span style=&#34;color:#a6e22e&#34;&gt;isBlank&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;)      &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;    StringUtils.&lt;span style=&#34;color:#a6e22e&#34;&gt;isBlank&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;)        &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;    StringUtils.&lt;span style=&#34;color:#a6e22e&#34;&gt;isBlank&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;)       &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;    StringUtils.&lt;span style=&#34;color:#a6e22e&#34;&gt;isBlank&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;bob&amp;#34;&lt;/span&gt;)     &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;    StringUtils.&lt;span style=&#34;color:#a6e22e&#34;&gt;isBlank&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;  bob  &amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;false&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://commons.apache.org/proper/commons-lang/javadocs/api-release/index.html&#34;&gt;Reference&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://stackoverflow.com/questions/23419087/stringutils-isblank-vs-string-isempty&#34;&gt;StringUtils.isBlank() vs String.isEmpty()&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;apache-opennlp&#34;&gt;Apache OpenNLP&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://opennlp.apache.org&#34;&gt;Apache OpenNLP&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Check multiple option values in Scala</title>
      <link>https://andres.jaimes.net/scala/check-multiple-option-values/</link>
      <pubDate>Fri, 31 Jul 2020 22:42:42 -0400</pubDate>
      <guid>https://andres.jaimes.net/scala/check-multiple-option-values/</guid>
      <description>&lt;p&gt;Two main approaches for doing this, the second one being for me the most appropriate.&lt;/p&gt;&#xA;&lt;p&gt;Check values using regular &lt;code&gt;if&lt;/code&gt; conditions:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;opt1&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;isDefined &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; opt2&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;isDefined &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; opt3&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;isDefined&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;// do something&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Check values using &lt;code&gt;match&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;opt1&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; opt2&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; opt3&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;match&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Some&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;val1&lt;span style=&#34;color:#f92672&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Some&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;val2&lt;span style=&#34;color:#f92672&#34;&gt;),&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Some&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;val3&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;???&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;???&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Creating and validating JWT JSON web tokens</title>
      <link>https://andres.jaimes.net/scala/create-and-validate-jwt-tokens/</link>
      <pubDate>Thu, 30 Jul 2020 19:57:40 -0400</pubDate>
      <guid>https://andres.jaimes.net/scala/create-and-validate-jwt-tokens/</guid>
      <description>&lt;p&gt;This article goes through the process of creating and validating JWT&amp;rsquo;s (JSON web tokens) using Scala.&lt;/p&gt;&#xA;&lt;p&gt;Our implementation uses the awesome &lt;code&gt;io.jsonwebtoken&lt;/code&gt; library, and can be added to a &lt;code&gt;sbt&lt;/code&gt; project like this:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;libraryDependencies &lt;span style=&#34;color:#f92672&#34;&gt;++=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Seq&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;io.jsonwebtoken&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;jjwt&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0.9.1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;creating-a-token&#34;&gt;Creating a token&lt;/h2&gt;&#xA;&lt;p&gt;We are going to use Scala&amp;rsquo;s &lt;code&gt;apply&lt;/code&gt;/&lt;code&gt;unapply&lt;/code&gt; functions for this implementation. This will allow us to use matchers for checking JWT&amp;rsquo;s.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; java.time.Instant&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; java.util.&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;UUID&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; io.jsonwebtoken.&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Claims&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Jws&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Jwts&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;SignatureAlgorithm&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; scala.collection.JavaConverters._&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;object&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Jwt&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Ttl&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Int&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3600&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;val&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Secret&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;String&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;MySecret&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; apply&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;claims&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Map&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;String&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;Any&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;])&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;String&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;val&lt;/span&gt; jwt &lt;span style=&#34;color:#66d9ef&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Jwts&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;builder&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;setId&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;UUID&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;randomUUID&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;toString&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;setIssuedAt&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;from&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Instant&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;now&lt;span style=&#34;color:#f92672&#34;&gt;()))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;setExpiration&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Date&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;from&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Instant&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;now&lt;span style=&#34;color:#f92672&#34;&gt;().&lt;/span&gt;plusSeconds&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;Ttl&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;signWith&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;SignatureAlgorithm&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;HS512&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Secret&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;getBytes&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;UTF-8&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;    claims&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;foreach &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;name&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; value&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;      jwt&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;claim&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;name&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; value&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23&lt;/span&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24&lt;/span&gt;&lt;span&gt;    jwt&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;compact&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ideally &lt;code&gt;Ttl&lt;/code&gt; and &lt;code&gt;Secret&lt;/code&gt; should be provided by a configuration object. Such an object can be passed as an implicit parameter to this function.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Make a request to a remote service</title>
      <link>https://andres.jaimes.net/scala/make-request-to-remote-service/</link>
      <pubDate>Thu, 30 Jul 2020 16:37:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/scala/make-request-to-remote-service/</guid>
      <description>&lt;p&gt;This article shows how to make remote requests to services using Scala and the Play-Framework.&#xA;It documents some recommended features that can improve the reliability of the request.&lt;/p&gt;&#xA;&lt;h2 id=&#34;setup&#34;&gt;Setup&lt;/h2&gt;&#xA;&lt;p&gt;Make sure you add the following dependency to &lt;code&gt;build.sbt&lt;/code&gt;&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;libraryDependencies += ws&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;get-request&#34;&gt;GET request&lt;/h2&gt;&#xA;&lt;p&gt;GET request to a remote service&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; scala.concurrent.Future&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; play.api.http.Status._&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; play.api.libs.ws.WSClient&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;import&lt;/span&gt; play.api.libs.json.&lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;JsSuccess&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Json&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;UnexpectedResponseStatus&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;message&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;extends&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Exception&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;message&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;InvalidServiceResponse&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;message&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;extends&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Exception&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;message&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;SomeClass&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;@Inject&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;()(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;  ws&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;WSClient&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; getFromRemoteService&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;url&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Future&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Option&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;MyClass&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]]&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;    ws&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;url&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;url&lt;span style=&#34;color:#f92672&#34;&gt;).&lt;/span&gt;get map &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt; response &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;      response&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;status &lt;span style=&#34;color:#66d9ef&#34;&gt;match&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;OK&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; response&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;status &lt;span style=&#34;color:#66d9ef&#34;&gt;match&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;          response&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;json&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;validate&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;MyClass&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;match&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; success&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;JsSuccess&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;MyClass&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Some&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;success&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;get&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;throw&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;InvalidServiceResponse&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Invalid response, expecting MyClass response.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;          &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;BAD_REQUEST&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;???&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;// do something&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;NOT_FOUND&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;None&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;_&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;throw&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;UnexpectedResponseStatus&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;s&amp;#34;Service response status: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;response&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;status&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt; recoverWith &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; e&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;Exception&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25&lt;/span&gt;&lt;span&gt;      logger&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;error&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;s&amp;#34;Remote request failed: &lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;${&lt;/span&gt;e&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;getMessage&lt;span style=&#34;color:#e6db74&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; e&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;Future&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;failed&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;e&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;27&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;28&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;29&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;post-put-patch-delete-requests&#34;&gt;POST, PUT, PATCH, DELETE requests&lt;/h2&gt;&#xA;&lt;p&gt;All other requests types can be implemented this way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migrating from WordPress to Hugo</title>
      <link>https://andres.jaimes.net/posts/hugo/migrating-from-wordpress/</link>
      <pubDate>Tue, 28 Jul 2020 10:02:58 -0400</pubDate>
      <guid>https://andres.jaimes.net/posts/hugo/migrating-from-wordpress/</guid>
      <description>&lt;p&gt;The idea behind migrating to hugo is to avoid having to deal with server and certificate updates, backups and so on. Plus moving a site to a global network, like Netlify&amp;rsquo;s, comes with the added benefits of quick download speeds and an easy to use deployment process.&lt;/p&gt;&#xA;&lt;h2 id=&#34;migration-steps&#34;&gt;Migration steps&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Install the &lt;a href=&#34;https://github.com/SchumacherFM/wordpress-to-hugo-exporter&#34;&gt;WordPress to hugo Exporter&lt;/a&gt; plugin to your WordPress site.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;This plugin does not have any configuration settings. You just have to export it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Meet the $250,000,000 man</title>
      <link>https://andres.jaimes.net/1443/meet-the-250000000-man/</link>
      <pubDate>Mon, 27 Apr 2020 15:51:40 +0000</pubDate>
      <guid>https://andres.jaimes.net/1443/meet-the-250000000-man/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;When you do have money, the money gives you power… because you don’t have to answer to anybody. - Ben Mallah&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/3vr6xJukyCE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;</description>
    </item>
    <item>
      <title>Who pays wages?</title>
      <link>https://andres.jaimes.net/1441/who-pays-wages/</link>
      <pubDate>Sun, 26 Apr 2020 22:28:56 +0000</pubDate>
      <guid>https://andres.jaimes.net/1441/who-pays-wages/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;It is not the employer who pays the wages. Employers only handle the money. It is the customer who pays the wages. - Henry Ford&lt;/p&gt;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Error handling for JS fetch requests</title>
      <link>https://andres.jaimes.net/1436/error-handling-for-js-fetch-requests/</link>
      <pubDate>Sun, 26 Apr 2020 19:31:39 +0000</pubDate>
      <guid>https://andres.jaimes.net/1436/error-handling-for-js-fetch-requests/</guid>
      <description>&lt;p&gt;The following example handles server and connectivity errors for javascript fetch requests.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;handleErrors&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;response&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#f92672&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;response&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;ok&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;throw&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; Error(&lt;span style=&#34;color:#a6e22e&#34;&gt;response&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;status&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;response&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;fetch&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;https://jsonplaceholder.typicode.com/todos/1&amp;#39;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// handle network err/success&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    .&lt;span style=&#34;color:#a6e22e&#34;&gt;then&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;handleErrors&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// use response of network on fetch Promise resolve&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    .&lt;span style=&#34;color:#a6e22e&#34;&gt;then&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;response&lt;/span&gt; =&amp;gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;ok&amp;#34;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;// handle fetch Promise error&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    .&lt;span style=&#34;color:#66d9ef&#34;&gt;catch&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;error&lt;/span&gt; =&amp;gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;console&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;log&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;found an error: &amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;error&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;handleErrors&lt;/code&gt; can be updated for handling different types of errors in different ways. This function is called whenever we get a response from the server (successful or failed). When we have a different type of error, like a DNS one, the catch block is called directly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A purely functional example using Scala</title>
      <link>https://andres.jaimes.net/1426/a-purely-functional-example-using-scala/</link>
      <pubDate>Tue, 27 Aug 2019 22:49:14 +0000</pubDate>
      <guid>https://andres.jaimes.net/1426/a-purely-functional-example-using-scala/</guid>
      <description>&lt;p&gt;On this tutorial we’re going to explore the basics of purely functional programming using Scala. One of the principles with purely functional style, is that we have to define concepts in terms of functions.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-basics-comparing-a-number&#34;&gt;The basics: Comparing a number&lt;/h2&gt;&#xA;&lt;p&gt;We’re going to create a simple function that lets us compare a number to a previously stored number in a purely functional way. For that, we can define the following function:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Examples of ‘for’ queries with Scala</title>
      <link>https://andres.jaimes.net/1421/examples-of-for-queries-with-scala/</link>
      <pubDate>Sat, 24 Aug 2019 21:47:00 +0000</pubDate>
      <guid>https://andres.jaimes.net/1421/examples-of-for-queries-with-scala/</guid>
      <description>&lt;p&gt;On this page you are going to find some examples of ‘for’ queries.&lt;br&gt;&#xA;Let’s start by defining the following database:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-scala&#34; data-lang=&#34;scala&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;case&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Book&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;title&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; authors&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;List&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;String&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;])&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;val&lt;/span&gt; books&lt;span style=&#34;color:#66d9ef&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;List&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Book&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;List&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;Book&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;structure and interpretation of computer programs&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;      &lt;span style=&#34;color:#a6e22e&#34;&gt;List&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;abelson, harald&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;sussman, gerald j.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)),&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;Book&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;introduction to functional programming&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;List&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;bird, richard&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;wadler, phil&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)),&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;Book&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;effective java&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;List&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;bloch, joshua&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)),&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;Book&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;java puzzlers&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;List&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;bloch, joshua&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;gafter, neal&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)),&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;  &lt;span style=&#34;color:#a6e22e&#34;&gt;Book&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;programming in scala&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#a6e22e&#34;&gt;List&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;odersky, martin&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;spoon, lex&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;venners, bill&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Find the titles of books whose author’s name is ‘bird’&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enterprise Architect – Synchronize model from a live database</title>
      <link>https://andres.jaimes.net/1396/enterprise-architect-synchronize-model-from-a-live-database/</link>
      <pubDate>Mon, 12 Nov 2018 17:18:28 +0000</pubDate>
      <guid>https://andres.jaimes.net/1396/enterprise-architect-synchronize-model-from-a-live-database/</guid>
      <description>&lt;p&gt;Synchronize a model from a live database to Enterprise Architect.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Select your database from the Database Model folder in Project Browser.&lt;/li&gt;&#xA;&lt;li&gt;Go to Tools &amp;gt; Database Builder&lt;/li&gt;&#xA;&lt;li&gt;Right click on Tables &amp;gt; Show Differences. We can also click on a different type of object.&lt;br&gt;&#xA;a. An active connection is needed to complete the previous step. If no one exists Enterprise Architect will ask us to create one.&lt;/li&gt;&#xA;&lt;li&gt;The list of differences will show up on the Database Compare tab&lt;/li&gt;&#xA;&lt;li&gt;Select the ones you want to import or click the Set Import All button.&lt;/li&gt;&#xA;&lt;li&gt;The list of updates to perform will show up at the bottom of the page.&lt;/li&gt;&#xA;&lt;li&gt;Press Import from ODBC to start the process. There’s no visual feedback other than the UI becoming irresponsive during the process. Be patient.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/2018/11/project-browser.png&#34; alt=&#34;Project browser&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Running Pentaho Data Integration on Mac OSX</title>
      <link>https://andres.jaimes.net/1388/running-pentaho-spoon-on-mac-osx/</link>
      <pubDate>Fri, 09 Nov 2018 14:54:28 +0000</pubDate>
      <guid>https://andres.jaimes.net/1388/running-pentaho-spoon-on-mac-osx/</guid>
      <description>&lt;p&gt;Run Pentaho Data Integration on Mac OSX. The following procedure works with all the latest OSX versions.&lt;/p&gt;&#xA;&lt;h2 id=&#34;my-local-configuration&#34;&gt;My local configuration&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;OSX Mojave&lt;/li&gt;&#xA;&lt;li&gt;OpenJDK 11&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;procedure&#34;&gt;Procedure&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Download pdi-ce-8.1.0.0-365.zip from &lt;a href=&#34;https://sourceforge.net/projects/pentaho/&#34;&gt;https://sourceforge.net/projects/pentaho/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Unzip it&lt;/li&gt;&#xA;&lt;li&gt;Using the terminal, &lt;code&gt;cd&lt;/code&gt; into the unzipped directory&lt;/li&gt;&#xA;&lt;li&gt;Run the application &lt;code&gt;open Data\ Integration.app&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;If you get the following error:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;LSOpenURLsWithRole() failed with error -10810 for the file Data Integration.app&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;then run the following command (it is permissions related):&lt;/p&gt;</description>
    </item>
    <item>
      <title>PlayFramework – Java</title>
      <link>https://andres.jaimes.net/1373/play-framework-java/</link>
      <pubDate>Wed, 11 Jul 2018 22:45:08 +0000</pubDate>
      <guid>https://andres.jaimes.net/1373/play-framework-java/</guid>
      <description>&lt;p&gt;So far I have really liked this concept. The only con is that some times is difficult to find full examples that use the latest version.&lt;/p&gt;&#xA;&lt;h2 id=&#34;installingsbt&#34;&gt;Installing sbt&lt;/h2&gt;&#xA;&lt;p&gt;We need &lt;code&gt;sbt&lt;/code&gt; for compiling and running Play applications.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;brew install sbt@1&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;h2 id=&#34;executingafirstapplication&#34;&gt;Executing a first application&lt;/h2&gt;&#xA;&lt;p&gt;Check the &lt;a href=&#34;https://www.playframework.com/documentation/2.6.x/Tutorials&#34;&gt;tutorials page&lt;/a&gt; to see how to create a first project.&lt;/p&gt;&#xA;&lt;p&gt;Pretty much:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;sbt new playframework/play-java-seed.g8&#xA;sbt run&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;And then visit &lt;code&gt;localhost:9000&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;Play 2.6 throws the following exception unless an additional dependency is added:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Password Requirements Validation with JQuery</title>
      <link>https://andres.jaimes.net/1365/jquery-password-strength-validator/</link>
      <pubDate>Wed, 30 May 2018 20:52:01 +0000</pubDate>
      <guid>https://andres.jaimes.net/1365/jquery-password-strength-validator/</guid>
      <description>&lt;p&gt;Password forms are challenging for users because we often ask them to enter complex strings which they are usually not allowed to see. Additionally, these strings have to meet different criteria – like having upper and lower case characters, numbers and so on – to keep our applications secure.&lt;/p&gt;&#xA;&lt;p&gt;In this post, we are going to add visual queues to a form that will allow users to get a better experience with passwords.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to run a custom update using Java JPA</title>
      <link>https://andres.jaimes.net/1354/execute-custom-update-using-java-jpa/</link>
      <pubDate>Tue, 15 May 2018 19:14:36 +0000</pubDate>
      <guid>https://andres.jaimes.net/1354/execute-custom-update-using-java-jpa/</guid>
      <description>&lt;p&gt;From time to time it is necessary to execute a query without using Java’s JPA infrastructure.&lt;/p&gt;&#xA;&lt;p&gt;In order to do it, we have to define a &lt;code&gt;NamedQuery&lt;/code&gt; to execute. In this example, I will run an update against the database.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;@Entity&#xA;@NamedQueries ({&#xA;    @NamedQuery (&#xA;        name = &amp;quot;SomeEntity.TestQuery&amp;quot;,&#xA;        query = &amp;quot;update SomeEntity se set se.myField = &#39;&#39; where se.id = 0&amp;quot;&#xA;    )&#xA;})&#xA;public class SomeEntity implements Serializable {&#xA;    // ...&#xA;    private String myField;&#xA;    // ...&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;As you can see, the custom query does not use the database table name, but the JPA one. This is usually the name of the class that we have declared as &lt;code&gt;Entity&lt;/code&gt;. In this case it is called &lt;code&gt;SomeEntity&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quick lessons on working with Java’s BigDecimal</title>
      <link>https://andres.jaimes.net/1351/using-java-bigdecimal/</link>
      <pubDate>Sun, 13 May 2018 23:26:21 +0000</pubDate>
      <guid>https://andres.jaimes.net/1351/using-java-bigdecimal/</guid>
      <description>&lt;p&gt;Today I bring an example of the different results you can expect when using Java’s &lt;code&gt;BigDecimal&lt;/code&gt; class. From instantiation to applying different arithmetic operations, it is important to understand how they affect the resulting instances.&lt;/p&gt;&#xA;&lt;p&gt;The following program shows different scenarios and results applied to &lt;code&gt;BigDecimal&lt;/code&gt;’s.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;package&lt;/span&gt; test;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; java.math.BigDecimal;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; java.math.RoundingMode;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Test&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;public&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;static&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;(String&lt;span style=&#34;color:#f92672&#34;&gt;[]&lt;/span&gt; args) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;        BigDecimal a &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;1.204165&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;a (from string): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 1.204165&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;        a &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(1);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;a (from int): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;        a &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(1.&lt;span style=&#34;color:#a6e22e&#34;&gt;204165&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;a (from float): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 1.2041649999999999298694319804781116545200347900390625&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;        a &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;setScale&lt;/span&gt;(6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;a (setting scale): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 1.204165&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Add (1): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;add&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0.0001&amp;#34;&lt;/span&gt;)));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 1.204265&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;27&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;28&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Add (2): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;add&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(0.&lt;span style=&#34;color:#a6e22e&#34;&gt;0001&lt;/span&gt;)));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;29&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 1.204265000000000000004792173602385929598312941379845142364501953125&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;30&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;31&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Add (3): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;add&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(0.&lt;span style=&#34;color:#a6e22e&#34;&gt;0001&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;setScale&lt;/span&gt;(6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;)));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;32&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 1.204265&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;33&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;34&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Sub (1): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;subtract&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0.0001&amp;#34;&lt;/span&gt;)));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;35&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 1.204065&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;36&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;37&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Sub (2): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;subtract&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(0.&lt;span style=&#34;color:#a6e22e&#34;&gt;0001&lt;/span&gt;)));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;38&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 1.204064999999999999995207826397614070401687058620154857635498046875&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;39&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;40&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Sub (3): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;subtract&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(0.&lt;span style=&#34;color:#a6e22e&#34;&gt;0001&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;setScale&lt;/span&gt;(6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;)));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;41&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 1.204065&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;42&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;43&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Mult (1): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;multiply&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0.0001&amp;#34;&lt;/span&gt;)));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;44&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 0.0001204165&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;45&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;46&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Mult (2): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;multiply&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(0.&lt;span style=&#34;color:#a6e22e&#34;&gt;0001&lt;/span&gt;)));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;47&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 0.000120416500000000005770567725917052914752503056661225855350494384765625&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;48&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;49&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Mult (3): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;multiply&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(0.&lt;span style=&#34;color:#a6e22e&#34;&gt;0001&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;setScale&lt;/span&gt;(6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;)));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;50&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 0.000120416500&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;51&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;52&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Mult (4): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;multiply&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(0.&lt;span style=&#34;color:#a6e22e&#34;&gt;0001&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;setScale&lt;/span&gt;(6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;)).&lt;span style=&#34;color:#a6e22e&#34;&gt;setScale&lt;/span&gt;(6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;53&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 0.000120&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;54&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;55&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Mult (5): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;multiply&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(0.&lt;span style=&#34;color:#a6e22e&#34;&gt;0001&lt;/span&gt;)).&lt;span style=&#34;color:#a6e22e&#34;&gt;setScale&lt;/span&gt;(6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;56&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 0.000120&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;57&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;58&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Div (1): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;divide&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;0.0001&amp;#34;&lt;/span&gt;)));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;59&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 12041.65&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;60&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;61&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;62&lt;/span&gt;&lt;span&gt;            System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Div (2): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;divide&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(0.&lt;span style=&#34;color:#a6e22e&#34;&gt;0001&lt;/span&gt;)));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;63&lt;/span&gt;&lt;span&gt;        } &lt;span style=&#34;color:#66d9ef&#34;&gt;catch&lt;/span&gt; (java.&lt;span style=&#34;color:#a6e22e&#34;&gt;lang&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;ArithmeticException&lt;/span&gt; e) { System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Div (2): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; e.&lt;span style=&#34;color:#a6e22e&#34;&gt;getMessage&lt;/span&gt;()); }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;64&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// Non-terminating decimal expansion; no exact representable decimal result.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;65&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;66&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Div (3): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;divide&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(0.&lt;span style=&#34;color:#a6e22e&#34;&gt;0001&lt;/span&gt;), 6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;67&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 12041.650000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;68&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;69&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Div (4): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;divide&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(0.&lt;span style=&#34;color:#a6e22e&#34;&gt;0001&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;setScale&lt;/span&gt;(6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;)));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;70&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 12041.65&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;71&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;72&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Div (5): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;divide&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(0.&lt;span style=&#34;color:#a6e22e&#34;&gt;0001&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;setScale&lt;/span&gt;(6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;)).&lt;span style=&#34;color:#a6e22e&#34;&gt;setScale&lt;/span&gt;(6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;73&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 12041.650000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;74&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;75&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;76&lt;/span&gt;&lt;span&gt;            System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Div (6): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;divide&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(0.&lt;span style=&#34;color:#a6e22e&#34;&gt;0001&lt;/span&gt;)).&lt;span style=&#34;color:#a6e22e&#34;&gt;setScale&lt;/span&gt;(6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;77&lt;/span&gt;&lt;span&gt;        } &lt;span style=&#34;color:#66d9ef&#34;&gt;catch&lt;/span&gt; (java.&lt;span style=&#34;color:#a6e22e&#34;&gt;lang&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;ArithmeticException&lt;/span&gt; e) { System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Div (6): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; e.&lt;span style=&#34;color:#a6e22e&#34;&gt;getMessage&lt;/span&gt;()); }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;78&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// Non-terminating decimal expansion; no exact representable decimal result.&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;79&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;80&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Abs (1): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;abs&lt;/span&gt;());&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;81&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 1.204165&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;82&lt;/span&gt;&lt;span&gt;        &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;83&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Abs (2): &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; a.&lt;span style=&#34;color:#a6e22e&#34;&gt;multiply&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; BigDecimal(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;-1.0&amp;#34;&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;setScale&lt;/span&gt;(6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;)).&lt;span style=&#34;color:#a6e22e&#34;&gt;setScale&lt;/span&gt;(6, RoundingMode.&lt;span style=&#34;color:#a6e22e&#34;&gt;HALF_UP&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;abs&lt;/span&gt;());&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;84&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#75715e&#34;&gt;// 1.204165&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;85&lt;/span&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;86&lt;/span&gt;&lt;span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;87&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;As you can see creating an instance from a &lt;code&gt;String&lt;/code&gt; is the best way to get a &lt;code&gt;BigDecimal&lt;/code&gt; when you want to keep certain precision. Rounding and scaling play as well an important role when making calculations with &lt;code&gt;BigDecimal&lt;/code&gt;&amp;rsquo;s.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to read a file name argument from the command line in C&#43;&#43;</title>
      <link>https://andres.jaimes.net/1327/how-to-read-a-file-name-argument-from-the-command-line-in-c/</link>
      <pubDate>Mon, 07 May 2018 14:20:10 +0000</pubDate>
      <guid>https://andres.jaimes.net/1327/how-to-read-a-file-name-argument-from-the-command-line-in-c/</guid>
      <description>&lt;p&gt;Reading a file name parameter from the command line is a common task. In this post I read a file name and validate it exists. For paths and file names that include spaces, you have to pass them between quotes, otherwise they will be interpreted by the operating system as two different parameters.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-c++&#34; data-lang=&#34;c++&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;fstream&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&lt;/span&gt;    &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;main&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; argc, &lt;span style=&#34;color:#66d9ef&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; argv[]) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;; i &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; argc; i&lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;            std&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;string s(argv[i]);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;            &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (s.rfind(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--input=&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;                std&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;ifstream f(s.substr(std&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;string(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;--input=&amp;#34;&lt;/span&gt;).length()));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (f.good()) std&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;cout &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;File exists&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; std&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;endl;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;                &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; std&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;cout &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;File not found&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; std&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;endl;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;            } &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;                std&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;cout &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Unknown: &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; s &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; std&lt;span style=&#34;color:#f92672&#34;&gt;::&lt;/span&gt;endl;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;            }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>How to check command line arguments in any order</title>
      <link>https://andres.jaimes.net/1323/how-to-check-command-line-arguments-in-any-order/</link>
      <pubDate>Mon, 07 May 2018 14:03:54 +0000</pubDate>
      <guid>https://andres.jaimes.net/1323/how-to-check-command-line-arguments-in-any-order/</guid>
      <description>&lt;p&gt;Here is an easy solution to passing parameters to a C++ application from the command line that does not require any external libraries.&lt;/p&gt;&#xA;&lt;p&gt;Since parameters are read inside a loop, the order in which they are passed is not important.&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;&#xA;#include &amp;lt;iostream&amp;gt;&#xA;&#xA;int main(int argc, char* argv[]) {&#xA;    for (int i = 1; i &amp;lt; argc; i++) {&#xA;        std::string s(argv[i]);&#xA;        if (s == &amp;quot;-a&amp;quot;) {&#xA;            std::cout &amp;lt;&amp;lt; &amp;quot;You passed parameter -a&amp;quot; &amp;lt;&amp;lt; std::endl;&#xA;        } else if (s == &amp;quot;-b&amp;quot;) {&#xA;            std::cout &amp;lt;&amp;lt; &amp;quot;You passed parameter -b&amp;quot; &amp;lt;&amp;lt; std::endl;&#xA;        } else {&#xA;            std::cout &amp;lt;&amp;lt; &amp;quot;Unknown: &amp;quot; &amp;lt;&amp;lt; s &amp;lt;&amp;lt; std::endl;&#xA;        }&#xA;    }&#xA;    return 0;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Read all tables and columns from a database using Java</title>
      <link>https://andres.jaimes.net/java/read-all-tables-and-columns-from-a-database/</link>
      <pubDate>Wed, 02 Aug 2017 11:38:05 -0400</pubDate>
      <guid>https://andres.jaimes.net/java/read-all-tables-and-columns-from-a-database/</guid>
      <description>&lt;p&gt;This Java example finds all the tables and their corresponding columns from a database. The code iterates over the entities and columns found and shows them on the console.&lt;/p&gt;&#xA;&lt;p&gt;Minor changes are necessary to process the found values in a different way.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;Connection conn;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;DatabaseMetaData dmd;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;ResultSet rs1, rs2;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;ResultSetMetaData rsmd;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;Statement s;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;try&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;    conn &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; getConnection();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;    dmd &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; conn.&lt;span style=&#34;color:#a6e22e&#34;&gt;getMetaData&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;    rs1 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; dmd.&lt;span style=&#34;color:#a6e22e&#34;&gt;getTables&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;database_name&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;%&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;null&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;    s &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; conn.&lt;span style=&#34;color:#a6e22e&#34;&gt;createStatement&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;while&lt;/span&gt; (rs1.&lt;span style=&#34;color:#a6e22e&#34;&gt;next&lt;/span&gt;()) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;# Processing table: &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; rs1.&lt;span style=&#34;color:#a6e22e&#34;&gt;getString&lt;/span&gt;(3));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;        rs2 &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; s.&lt;span style=&#34;color:#a6e22e&#34;&gt;executeQuery&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;select * from &amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; rs1.&lt;span style=&#34;color:#a6e22e&#34;&gt;getString&lt;/span&gt;(3));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;        rsmd &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; rs2.&lt;span style=&#34;color:#a6e22e&#34;&gt;getMetaData&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; 0; i &lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; rsmd.&lt;span style=&#34;color:#a6e22e&#34;&gt;getColumnCount&lt;/span&gt;(); i&lt;span style=&#34;color:#f92672&#34;&gt;++&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;            System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;print&lt;/span&gt;(rs2.&lt;span style=&#34;color:#a6e22e&#34;&gt;getString&lt;/span&gt;(i &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; 1) &lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;        System.&lt;span style=&#34;color:#a6e22e&#34;&gt;out&lt;/span&gt;.&lt;span style=&#34;color:#a6e22e&#34;&gt;println&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;        rs2.&lt;span style=&#34;color:#a6e22e&#34;&gt;close&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;catch&lt;/span&gt; (SQLException sqle) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23&lt;/span&gt;&lt;span&gt;    sqle.&lt;span style=&#34;color:#a6e22e&#34;&gt;printStackTrace&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;finally&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26&lt;/span&gt;&lt;span&gt;    conn.&lt;span style=&#34;color:#a6e22e&#34;&gt;close&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;27&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Solution: Netbeans 8 not working on Ubuntu 15.10</title>
      <link>https://andres.jaimes.net/1262/netbeans-8-hangs-on-ubuntu-15-10/</link>
      <pubDate>Tue, 05 Apr 2016 16:31:11 +0000</pubDate>
      <guid>https://andres.jaimes.net/1262/netbeans-8-hangs-on-ubuntu-15-10/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Netbeans&lt;/strong&gt; is one of my beloved day to day applications. Yesterday, when I installed &lt;strong&gt;Ubuntu 15.10&lt;/strong&gt; (&lt;strong&gt;Wily Werewolf&lt;/strong&gt;) on my computer, Netbeans started to hang on the startup screen, specifically at the &lt;strong&gt;Loading Modules&lt;/strong&gt; phase. It took me hours looking for solutions on the internet; and reinstalling different versions of the &lt;strong&gt;Java Development Framework&lt;/strong&gt; didn’t seem to help.&lt;/p&gt;&#xA;&lt;p&gt;Finally I found the following fix at an Ubuntu forum, which turned out to be very simple to apply.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Support Glumik!</title>
      <link>https://andres.jaimes.net/1246/support-glumik/</link>
      <pubDate>Mon, 23 Mar 2015 14:00:58 +0000</pubDate>
      <guid>https://andres.jaimes.net/1246/support-glumik/</guid>
      <description>&lt;p&gt;Hello,&lt;/p&gt;&#xA;&lt;p&gt;This time I write to ask you for your support. We’re developing a website for small business owners in the City of Queretaro, Mexico.&lt;/p&gt;&#xA;&lt;p&gt;The website will allow the proprietors have presence on the Internet. Many of these people do not have the resources for starting a website and we want to help them. Donations start from as little as 1 dollar. The more you donate the better chance you have to get a reward, including a 1 hour call where you and I can hold a Q&amp;amp;A session on selected tech topics.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing CentOS 7 – A Graphical Tour for Linux Beginners</title>
      <link>https://andres.jaimes.net/1084/installing-centos-7-a-graphical-tour-for-linux-beginners/</link>
      <pubDate>Thu, 22 Jan 2015 23:19:35 +0000</pubDate>
      <guid>https://andres.jaimes.net/1084/installing-centos-7-a-graphical-tour-for-linux-beginners/</guid>
      <description>&lt;p&gt;If you are new on the Linux platform, I am sure you feel overwhelmed with all the different versions available. Choosing one is not an easy task, and each version has its own pros and cons.&lt;/p&gt;&#xA;&lt;p&gt;Let me tell you why I like CentOS:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;It is very stable&lt;/li&gt;&#xA;&lt;li&gt;It has well tested features&lt;/li&gt;&#xA;&lt;li&gt;There is a big community around it&lt;/li&gt;&#xA;&lt;li&gt;It has many large software repositories&lt;/li&gt;&#xA;&lt;li&gt;It is Part of the RedHat / Fedora family&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;installing-centos&#34;&gt;Installing CentOS&lt;/h2&gt;&#xA;&lt;p&gt;Installing a new operating system may seem challenging, but CentOS has always made this task a simple one.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Install CentOS 7, Oracle XE and other development tools</title>
      <link>https://andres.jaimes.net/linux/install-centos-7-oracle-xe-and-other-development-tools/</link>
      <pubDate>Thu, 22 Jan 2015 00:00:00 +0000</pubDate>
      <guid>https://andres.jaimes.net/linux/install-centos-7-oracle-xe-and-other-development-tools/</guid>
      <description>&lt;p&gt;The CentOS distribution is a famous and stable Linux version derived from RedHat Linux. It’s been one of my favorites and one that you can easily find with hosting providers.&lt;/p&gt;&#xA;&lt;p&gt;In this article we will install CentOS and OracleXE. It’s worth mentioning the OS team improves the installation process with each version, and you will find out in this tutorial how straightforward it currently is.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-installing-centos&#34;&gt;1. Installing CentOS&lt;/h2&gt;&#xA;&lt;p&gt;We’ll perform a &lt;code&gt;minimal installation&lt;/code&gt;; this means, we will not install a graphical interface, because this server is meant to be a web / database test server.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sunset stroll</title>
      <link>https://andres.jaimes.net/1179/sunset-stroll/</link>
      <pubDate>Thu, 18 Dec 2014 06:36:02 +0000</pubDate>
      <guid>https://andres.jaimes.net/1179/sunset-stroll/</guid>
      <description>&lt;p&gt;Relaxing stroll in the desert.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2014/12/sunset-stroll-by-andres-jaimes.jpg&#34; alt=&#34;Sunset stroll&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Compiling and Debugging Oracle&#39;s Pro*C files in OS-X / Xcode</title>
      <link>https://andres.jaimes.net/1151/compiling-and-debugging-oracle-pro-c-files-in-os-x-xcode/</link>
      <pubDate>Thu, 18 Dec 2014 05:25:43 +0000</pubDate>
      <guid>https://andres.jaimes.net/1151/compiling-and-debugging-oracle-pro-c-files-in-os-x-xcode/</guid>
      <description>&lt;p&gt;Part of my work as a Web/UNIX developer includes maintenance and development of tools using Oracle’s Pro*C.&lt;/p&gt;&#xA;&lt;p&gt;In text interfaces, VIM is a pretty decent tool for creating source code and their companion make files. If you created the right make file, compiling is also a breeze. However things get kind of tricky when you have to debug. Oh my! This can be a difficult task. Many may say that there’s nothing like &lt;code&gt;gdb&lt;/code&gt;, but come on guys, even you can’t deny the beauty of a visual debugger. But don’t get me wrong, I love UNIX and text interfaces, but I consider that there are tasks that can be performed more efficiently with the help of visual tools.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Rationale behind the Creation of a Model-View-Controller Framework: Fantastic</title>
      <link>https://andres.jaimes.net/1129/the-rationale-behind-the-creation-of-a-model-view-controller-framework-fantastic/</link>
      <pubDate>Sun, 16 Nov 2014 19:24:29 +0000</pubDate>
      <guid>https://andres.jaimes.net/1129/the-rationale-behind-the-creation-of-a-model-view-controller-framework-fantastic/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; This is a work in progress document.&lt;/p&gt;&#xA;&lt;p&gt;The Model-View-Controller is a software pattern frequently used for web development. As its name states, it is composed by three components:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;A Model or domain representation of a problem. It receives commands, processes them and modifies its state according to the input provided.&lt;/li&gt;&#xA;&lt;li&gt;A View whose main task is to retrieve information from the model and turn it into a useful representation for the user.&lt;/li&gt;&#xA;&lt;li&gt;A Controller that waits for user commands and translates them into appropriate model requests.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;These three components work together the following way:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Oracle Snippets</title>
      <link>https://andres.jaimes.net/1072/oracle-snippets/</link>
      <pubDate>Sun, 21 Sep 2014 17:37:52 +0000</pubDate>
      <guid>https://andres.jaimes.net/1072/oracle-snippets/</guid>
      <description>&lt;p&gt;This post will be updated with snippets for Oracle. I hope you find it useful.&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;1. Change the default date format&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Most useful snippet of the year! 😉&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ALTER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SESSION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; NLS_DATE_FORMAT &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;MM/DD/YYYY HH24:MI:SS&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; sysdate &lt;span style=&#34;color:#66d9ef&#34;&gt;from&lt;/span&gt; dual;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;2. Escape single quotes and ampersands on strings&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Single quotes:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;select&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;D&amp;#39;&amp;#39;Angelo&amp;#39;&amp;#39;s&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;from&lt;/span&gt; dual;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ampersands:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; DEFINE &lt;span style=&#34;color:#66d9ef&#34;&gt;OFF&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;3. Adjust page width and size&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; pagesize &lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;set&lt;/span&gt; linesize &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;4. Truncate a table&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to redirect stdout / stderr to a file</title>
      <link>https://andres.jaimes.net/825/bash-redirect-stderr-to-file/</link>
      <pubDate>Mon, 15 Sep 2014 18:15:07 +0000</pubDate>
      <guid>https://andres.jaimes.net/825/bash-redirect-stderr-to-file/</guid>
      <description>&lt;p&gt;Redirecting all your program output to a file is very simple and can be accomplished like this:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;myapp &amp;gt; output.log&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;This line will send all the output generated by myapp to a file named output.log. The contents of output.log will always be overwritten; but you can use a second &amp;gt; to append to the current content like this:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;myapp &amp;gt;&amp;gt; output.log&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;As well as with output, it is very useful to redirect the stderr (standard error output) to a file rather than to the screen. You can accomplish this right from the command line like this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>RESTful URL&#39;s</title>
      <link>https://andres.jaimes.net/1069/restful-urls/</link>
      <pubDate>Fri, 09 May 2014 00:00:00 -0400</pubDate>
      <guid>https://andres.jaimes.net/1069/restful-urls/</guid>
      <description>&lt;h2 id=&#34;restful-operations-on-collections&#34;&gt;RESTful operations on collections&lt;/h2&gt;&#xA;&lt;p&gt;Use pretty and RESTful URL’s.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;GET /places &#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;returns a list of all places&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;GET /places/new &#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;returns a form to create a new place&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;POST /places&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;submits fields for creating a new place&lt;/p&gt;&#xA;&lt;h2 id=&#34;operate-on-a-record&#34;&gt;Operate on a Record&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;GET /places/1  &#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Returns place with id 1&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;DELETE /places/1  &#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Destroys place with id 1&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;POST /places/1?_method=DELETE  &#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Alias for DELETE, to compensate for browser limitations&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;GET /places/1/edit  &#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Returns a form to edit the first record&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;PUT /places/1  &#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Submits fields for updating the first record&lt;/p&gt;</description>
    </item>
    <item>
      <title>Intro to Responsive Web Design</title>
      <link>https://andres.jaimes.net/1065/intro-to-responsive-web-design/</link>
      <pubDate>Sun, 16 Feb 2014 19:19:30 +0000</pubDate>
      <guid>https://andres.jaimes.net/1065/intro-to-responsive-web-design/</guid>
      <description>&lt;p&gt;This weekend I was invited to have a remote presentation on Responsive Web Design with students from the Autonomous University of Queretaro (UAQ) in Mexico. Introductory concepts are presented in code, so you have the chance to apply them immediately. The video is in spanish.&lt;/p&gt;&#xA;&lt;p&gt;Happy coding.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create a connection to MySQL in Java</title>
      <link>https://andres.jaimes.net/1061/how-to-make-a-connection-to-mysql-in-java/</link>
      <pubDate>Mon, 16 Dec 2013 22:45:59 +0000</pubDate>
      <guid>https://andres.jaimes.net/1061/how-to-make-a-connection-to-mysql-in-java/</guid>
      <description>&lt;p&gt;This time we are going to create a basic connection to MySQL in Java and pull some data from it.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;// Compile it:&#xA;// javac Mysql.java&#xA;//&#xA;// Try it:&#xA;// java -classpath mysql-connector-java-5.1.27-bin.jar:. MySQL&#xA;&#xA;import java.sql.Connection;&#xA;import java.sql.DriverManager;&#xA;import java.sql.ResultSet;&#xA;import java.sql.SQLException;&#xA;import java.sql.Statement;&#xA;import java.util.Properties;&#xA;&#xA;public class MySQL {&#xA;&#xA;    public Connection getConnection() throws SQLException {&#xA;        Connection conn = null;&#xA;        Properties p = new Properties();&#xA;&#xA;        p.put(&amp;#34;user&amp;#34;, &amp;#34;username&amp;#34;);&#xA;        p.put(&amp;#34;password&amp;#34;, &amp;#34;superpassword&amp;#34;);&#xA;&#xA;        String cs = &amp;#34;jdbc:mysql://localhost/demo&amp;#34;;&#xA;        conn = DriverManager.getConnection(cs, p);&#xA;&#xA;        return conn;&#xA;    }&#xA;&#xA;    public static void main(String[] args) {&#xA;        Connection conn = null;&#xA;        ResultSet rs = null;&#xA;        Statement stmt = null;&#xA;&#xA;        try {&#xA;            // Register JDBC driver&#xA;            Class.forName(&amp;#34;com.mysql.jdbc.Driver&amp;#34;);&#xA;&#xA;            MySQL mysql = new MySQL();&#xA;            conn = mysql.getConnection();&#xA;            stmt = conn.createStatement();&#xA;&#xA;            String sql = &amp;#34;select * from songs limit 10&amp;#34;;&#xA;            rs = stmt.executeQuery(sql);&#xA;&#xA;            while (rs.next()) {&#xA;                System.out.println(rs.getString(&amp;#34;name&amp;#34;));&#xA;            }&#xA;&#xA;        }&#xA;        catch (Exception e) {&#xA;            e.printStackTrace();&#xA;        }&#xA;        finally {&#xA;            try {&#xA;                if (rs != null) rs.close();&#xA;                if (stmt != null) stmt.close();&#xA;                if (conn != null) conn.close();&#xA;            }&#xA;            catch (Exception e) {&#xA;                e.printStackTrace();&#xA;            }&#xA;        }&#xA;    }&#xA;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Happy coding…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Lucene/Solr on CentOS 6</title>
      <link>https://andres.jaimes.net/878/setup-lucene-solr-centos-tomcat/</link>
      <pubDate>Wed, 30 Oct 2013 00:00:59 +0000</pubDate>
      <guid>https://andres.jaimes.net/878/setup-lucene-solr-centos-tomcat/</guid>
      <description>&lt;p&gt;This time we are going to install Solr, the super text search platform on CentOS. The installation process requires a couple extra libraries in order to work: Apache Commons Logging and SLF4J.  &lt;/p&gt;&#xA;&lt;h2 id=&#34;installing-java&#34;&gt;Installing Java&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;yum install java&#xA;java -version&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;You must have at least version 1.6 in order to run Solr. If you got Java 1.5, I recommend you to follow &lt;a href=&#34;https://andres.jaimes.net/971/setup-java-6-on-linux-centos/&#34; title=&#34;Installing Java 1.6 on CentOS 6&#34;&gt;this tutorial&lt;/a&gt; to get version 1.6.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Java 1.6 on CentOS 6</title>
      <link>https://andres.jaimes.net/971/setup-java-6-on-linux-centos/</link>
      <pubDate>Tue, 29 Oct 2013 23:30:39 +0000</pubDate>
      <guid>https://andres.jaimes.net/971/setup-java-6-on-linux-centos/</guid>
      <description>&lt;p&gt;Java 1.5 is the default Java version you get when you ask &lt;em&gt;yum&lt;/em&gt; to install it on CentOS. However, several applications need 1.6 in order to run. Just follow the next steps to install it.&lt;/p&gt;&#xA;&lt;p&gt;Remove Java 1.5&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;yum remove java-1.5-*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Install the &lt;em&gt;rpmforge&lt;/em&gt; repository&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;cd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Check if you have a 32 or 64 CentOS version&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;uname -a&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For 32 versions (i686) download and install the following repository&lt;/p&gt;</description>
    </item>
    <item>
      <title>WordPress Snippets</title>
      <link>https://andres.jaimes.net/984/wordpress-great-time-savers/</link>
      <pubDate>Mon, 21 Oct 2013 00:12:10 +0000</pubDate>
      <guid>https://andres.jaimes.net/984/wordpress-great-time-savers/</guid>
      <description>&lt;p&gt;As a WordPress developer I have collected / created / curated many snippets that I’ve used in my projects. I hope you find them useful.&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;h2 id=&#34;general-html--wordpress-tags&#34;&gt;General HTML / WordPress tags&lt;/h2&gt;&#xA;&lt;h3 id=&#34;get-your-template8217s-directory&#34;&gt;Get your template’s directory&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;link&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;lt;?php echo get_template_directory_uri(); ?&amp;gt;/style.css&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;rel&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;stylesheet&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;media&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;screen&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;check-if-this-is-the-home-page&#34;&gt;Check if this is the home page&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;php&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;is_home&lt;/span&gt;()) { &lt;span style=&#34;color:#f92672&#34;&gt;...&lt;/span&gt; } &lt;span style=&#34;color:#75715e&#34;&gt;?&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&#xA;&lt;h3 id=&#34;remove-the-wp_generator-tag-in-the-head-section-of-your-html&#34;&gt;Remove the wp_generator tag in the Head section of your HTML&lt;/h3&gt;&#xA;&lt;p&gt;I recommend you to add this line for security reasons.&lt;/p&gt;</description>
    </item>
    <item>
      <title>iptables snippets</title>
      <link>https://andres.jaimes.net/961/how-to-iptables-snippets-tutorial/</link>
      <pubDate>Wed, 07 Aug 2013 23:04:19 +0000</pubDate>
      <guid>https://andres.jaimes.net/961/how-to-iptables-snippets-tutorial/</guid>
      <description>&lt;p&gt;iptables is the default firewall you see on any linux computer. It works by allowing (&lt;strong&gt;ACCEPT&lt;/strong&gt;ing) or denying (&lt;strong&gt;DROP&lt;/strong&gt;ing) connections to the local computer. There are basically three scenarios you can deal with:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;INPUT&lt;/strong&gt;: Connections generated from a different computer targeting yours; for example, when you run a web server on your computer and others want to connect to it.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;OUTPUT&lt;/strong&gt;: Connections generated from your computer targeting other computers; for example, when you open a web page or open a remote ssh session.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;FORWARD&lt;/strong&gt;: Connections generated from computers different than your, but that use your computer as a link to get to other computers; for example, when you share your computer’s internet connection with others, that is, when you use your computer as a router for others.&#xA;&lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2013/08/iptables.png&#34; alt=&#34;iptables&#34;&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt; &lt;/p&gt;</description>
    </item>
    <item>
      <title>Calvin &amp; Hobbes on real scenery</title>
      <link>https://andres.jaimes.net/930/calvin-hobbes-real-scenery/</link>
      <pubDate>Wed, 31 Jul 2013 21:45:54 +0000</pubDate>
      <guid>https://andres.jaimes.net/930/calvin-hobbes-real-scenery/</guid>
      <description>&lt;p&gt;A set of beautiful images found on the Internet by an unknown artist.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to connect to MySQL from a remote server</title>
      <link>https://andres.jaimes.net/926/setup-connections-to-mysql-from-server-other-than-localhost/</link>
      <pubDate>Tue, 30 Jul 2013 22:51:19 +0000</pubDate>
      <guid>https://andres.jaimes.net/926/setup-connections-to-mysql-from-server-other-than-localhost/</guid>
      <description>&lt;p&gt;In few words, you have to configure MySQL to allow remote connections, create a user for connecting and setup your firewall to allow it. You don’t have to do this if you are only connecting from a local application like WordPress.&lt;/p&gt;&#xA;&lt;p&gt;You need root permissions to perform the following commands.&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;h2 id=&#34;configuring-mysql&#34;&gt;Configuring MySQL&lt;/h2&gt;&#xA;&lt;p&gt;Edit the MySQL configuration file.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;nano /etc/my.cnf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Allow connections from all your network interfaces by commenting out the following line:&lt;/p&gt;</description>
    </item>
    <item>
      <title>A divided sky</title>
      <link>https://andres.jaimes.net/916/a-divided-sky/</link>
      <pubDate>Sat, 27 Jul 2013 00:37:46 +0000</pubDate>
      <guid>https://andres.jaimes.net/916/a-divided-sky/</guid>
      <description>&lt;p&gt;Right before the rain…&#xA;&lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2013/07/20130726-193742.jpg&#34; alt=&#34;sky.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing MongoDB/PHP Driver on CentOS 6</title>
      <link>https://andres.jaimes.net/876/setup-mongo-php-module-centos-6/</link>
      <pubDate>Wed, 17 Jul 2013 20:28:52 +0000</pubDate>
      <guid>https://andres.jaimes.net/876/setup-mongo-php-module-centos-6/</guid>
      <description>&lt;p&gt;Since the module is not included with the default PHP installation, you have to download it from &lt;!-- raw HTML omitted --&gt;the official repository&lt;!-- raw HTML omitted --&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;cd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;mkdir mongo-php-driver&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;cd mongo-php-driver&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;curl https://codeload.github.com/mongodb/mongo-php-driver/zip/master &amp;gt; mongo-php-driver-master.zip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Unzip it&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;unzip mongo-php-driver-master.zip&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;cd mongo-php-driver-master&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You need _phpize _to build the module. You can install it from the &lt;em&gt;remi&lt;/em&gt; repository:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing MongoDB on CentOS 6</title>
      <link>https://andres.jaimes.net/870/setup-mongo-on-centos-6/</link>
      <pubDate>Wed, 17 Jul 2013 17:46:56 +0000</pubDate>
      <guid>https://andres.jaimes.net/870/setup-mongo-on-centos-6/</guid>
      <description>&lt;p&gt;The first step is to configure the repositories. Create the following file /etc/yum.repos.d/10gen.repo with the following contents:&lt;/p&gt;&#xA;&lt;p&gt;For 32-bit systems:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[10gen]&#xA;name=10gen Repository&#xA;baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686&#xA;gpgcheck=0&#xA;enabled=1&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For 64-bit systems:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[10gen]&#xA;name=10gen Repository&#xA;baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64&#xA;gpgcheck=0&#xA;enabled=1&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Install Mongo&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;yum install mongo-10gen mongo-10gen-server&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; &lt;/p&gt;&#xA;&lt;h2 id=&#34;configure-mongodb&#34;&gt;Configure MongoDB&lt;/h2&gt;&#xA;&lt;p&gt;You can configure Mongo by editing the following file:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;/etc/mongod.conf&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Set Mongo to autostart on system boot:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;chkconfig mongod on&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Start Mongo&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unresponsive iOS7 beta 2 touch screen</title>
      <link>https://andres.jaimes.net/865/ios7-b2-iphone-ipad-locked-screen/</link>
      <pubDate>Wed, 03 Jul 2013 20:59:37 +0000</pubDate>
      <guid>https://andres.jaimes.net/865/ios7-b2-iphone-ipad-locked-screen/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2013/07/ios7.jpg&#34; alt=&#34;ios7.jpg&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Since I installed iOS7 beta 2 version, my touch screen started to go unresponsive from time to time. After a couple hours of internet research this is what I found:&lt;/p&gt;&#xA;&lt;p&gt;iPhone unresponsiveness is mainly caused by notification messages being sent behind the lock screen. For example, when your battery reaches 20% you get a notification on your screen. There is a bug that may send those messages behind the lock screen giving you as a result an unresponsive screen – your iPhone is waiting for a response, but since you do not see the window because it is behind the lock screen, then you cannot respond… and well, you know.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing the PHP/MongoDB extension on Mac OSX 10.8</title>
      <link>https://andres.jaimes.net/857/setup-php-mongo-on-mac/</link>
      <pubDate>Thu, 27 Jun 2013 19:57:58 +0000</pubDate>
      <guid>https://andres.jaimes.net/857/setup-php-mongo-on-mac/</guid>
      <description>&lt;p&gt;Installing PHP/MongoDB extension is a two steps task on OSX:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Install the &lt;strong&gt;autoconf&lt;/strong&gt; tool required for compiling the extension&lt;/li&gt;&#xA;&lt;li&gt;Install the &lt;strong&gt;Mongo&lt;/strong&gt; extension&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;You have to install &lt;strong&gt;autoconf&lt;/strong&gt; in order to avoid the following error:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;ERROR: &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;phpize’ failed&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Enough talk, hands on work…&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;h2 id=&#34;step-1-install-the-autoconf-tool&#34;&gt;Step 1. Install the autoconf tool&lt;/h2&gt;&#xA;&lt;p&gt;Download the latest source version:&lt;/p&gt;</description>
    </item>
    <item>
      <title>When I was twelve…</title>
      <link>https://andres.jaimes.net/848/when-i-was-twelve/</link>
      <pubDate>Tue, 30 Apr 2013 05:26:21 +0000</pubDate>
      <guid>https://andres.jaimes.net/848/when-i-was-twelve/</guid>
      <description>&lt;p&gt;When I was twelve I learned something that changed my life:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-basic&#34; data-lang=&#34;basic&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;10 print &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Hello&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;20 goto &lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>1000 song names SQL test data</title>
      <link>https://andres.jaimes.net/842/1000-rows-table-sql-test-data/</link>
      <pubDate>Wed, 10 Apr 2013 17:28:20 +0000</pubDate>
      <guid>https://andres.jaimes.net/842/1000-rows-table-sql-test-data/</guid>
      <description>&lt;p&gt;This time I want to share a 1000 rows SQL table that you can use for text searches. It includes a table with 1 column, 1000 rows song title names. It is plain standard SQL so you can use it with any database manager.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://andres.jaimes.net/uploads/songs.sql_.zip&#34;&gt;Download it here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Hope you find it useful.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to create a Finder Alias on Mac</title>
      <link>https://andres.jaimes.net/839/make-a-finder-alias-on-desktop/</link>
      <pubDate>Wed, 10 Apr 2013 07:44:10 +0000</pubDate>
      <guid>https://andres.jaimes.net/839/make-a-finder-alias-on-desktop/</guid>
      <description>&lt;p&gt;A Finder alias is a special kind of shortcut or link to a folder. You can place this alias anywhere, being the Desktop a common place. You can even create an alias from a shared folder on a server.&lt;/p&gt;&#xA;&lt;p&gt;To create an alias:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Open Finder and look for the folder you want to create an alias for.&lt;/li&gt;&#xA;&lt;li&gt;Press Option + Command while you click and drag the folder to the desktop. You should see a small arrow on the ghost folder meaning you are creating an alias.&lt;/li&gt;&#xA;&lt;li&gt;Double click on your alias to test it.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>How many bytes does an &#34;int&#34; have in c&#43;&#43;?</title>
      <link>https://andres.jaimes.net/835/sizeof-int-in-c/</link>
      <pubDate>Mon, 08 Apr 2013 05:57:17 +0000</pubDate>
      <guid>https://andres.jaimes.net/835/sizeof-int-in-c/</guid>
      <description>&lt;p&gt;Well, that depends on several things, like your current processor and compiler. The best way to know it, is by using the &lt;strong&gt;sizeof&lt;/strong&gt; operator. Copy the following code, compile it and run it:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;&#xA;&#xA;using namespace std;&#xA;&#xA;int main() {&#xA;    cout &amp;lt;&amp;lt; &amp;#34;char: &amp;#34; &amp;lt;&amp;lt; sizeof(char) &amp;lt;&amp;lt; endl;&#xA;    cout &amp;lt;&amp;lt; &amp;#34;int: &amp;#34; &amp;lt;&amp;lt; sizeof(int) &amp;lt;&amp;lt; endl;&#xA;    cout &amp;lt;&amp;lt; &amp;#34;long: &amp;#34; &amp;lt;&amp;lt; sizeof(long) &amp;lt;&amp;lt; endl;&#xA;    return 0;&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Happy coding…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Back in 1991…</title>
      <link>https://andres.jaimes.net/832/back-in-1991/</link>
      <pubDate>Fri, 05 Apr 2013 17:40:44 +0000</pubDate>
      <guid>https://andres.jaimes.net/832/back-in-1991/</guid>
      <description>&lt;p&gt;From: &lt;a href=&#34;mailto:torvalds@klaava.Helsinki.FI&#34;&gt;torvalds@klaava.Helsinki.FI&lt;/a&gt; (Linus Benedict Torvalds)&lt;br&gt;&#xA;Newsgroups: comp.os.minix&lt;br&gt;&#xA;Subject: What would you like to see most in minix?&lt;br&gt;&#xA;Summary: small poll for my new operating system&lt;br&gt;&#xA;Message-ID: &lt;a href=&#34;mailto:1991Aug25.205708.9541@klaava.Helsinki.FI&#34;&gt;1991Aug25.205708.9541@klaava.Helsinki.FI&lt;/a&gt;&lt;br&gt;&#xA;Date: 25 Aug 91 20:57:08 GMT&lt;br&gt;&#xA;Organization: University of Helsinki&lt;/p&gt;&#xA;&lt;p&gt;Hello everybody out there using minix –&lt;/p&gt;&#xA;&lt;p&gt;I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I’d like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).&lt;/p&gt;</description>
    </item>
    <item>
      <title>A simple Makefile</title>
      <link>https://andres.jaimes.net/822/base-c-cpp-makefile/</link>
      <pubDate>Mon, 04 Mar 2013 04:06:31 +0000</pubDate>
      <guid>https://andres.jaimes.net/822/base-c-cpp-makefile/</guid>
      <description>&lt;p&gt;Learning how to create a Makefile is one of those tasks every C/C++ programmer has to do. Since there are many good make tutorials on the web, I’m only going to share a simplistic makefile that you can use for your projects.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;CFLAGS=-c -Wall -Iinclude&#xA;LDFLAGS=-lPocoFoundation -lPocoData&#xA;SOURCES=a.cpp b.cpp main.cpp&#xA;OBJECTS=$(SOURCES:.cpp=.o)&#xA;VPATH=src&#xA;&#xA;all: pre $(OBJECTS)&#xA;&#x9;g++ $(OBJECTS) -o build/main $(LDFLAGS)&#xA;&#xA;.cpp.o:&#xA;&#x9;g++ $(CFLAGS) $&amp;lt; -o $@&#xA;&#xA;pre:&#xA;&#x9;mkdir -p build&#xA;&#xA;clean:&#xA;&#x9;rm -Rf build&#xA;&#x9;rm -f *.o&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt; &lt;/p&gt;</description>
    </item>
    <item>
      <title>How to setup a FastCGI development environment in CentOS 6</title>
      <link>https://andres.jaimes.net/811/how-to-install-a-fcgi-nginx-in-centos-6/</link>
      <pubDate>Thu, 11 Oct 2012 20:24:27 +0000</pubDate>
      <guid>https://andres.jaimes.net/811/how-to-install-a-fcgi-nginx-in-centos-6/</guid>
      <description>&lt;h2 id=&#34;install-the-development-environment&#34;&gt;Install the development environment&lt;/h2&gt;&#xA;&lt;p&gt;Install the C/C++ development tools to your server:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;yum install gcc gcc-c++ autoconf automake&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, before installing fcgi we need to add the epel repository:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once it is installed we can proceed to get the fcgi packages:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;yum install fcgi-devel spawn-fcgi&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let’s see if we can compile a simple file. Create a file named example.c and copy and paste the following code in it:&lt;/p&gt;</description>
    </item>
    <item>
      <title>A simple C&#43;&#43;/Wt (Witty) skeleton for starting an application</title>
      <link>https://andres.jaimes.net/808/a-simple-cwt-witty-skeleton-for-starting-an-application/</link>
      <pubDate>Thu, 11 Oct 2012 18:33:06 +0000</pubDate>
      <guid>https://andres.jaimes.net/808/a-simple-cwt-witty-skeleton-for-starting-an-application/</guid>
      <description>&lt;p&gt;The objective of this lesson is to show you how to make a simple web page navigation using Wt. Before starting you have to remember that Wt can be used to create 1 URL applications. That means you can have a full application that runs using just one URL. However it is also useful to give your users different URL’s to take advantage of some browser features like bookmarks or the back and forward buttons.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to use a WComboBox with C&#43;&#43;/Wt (Witty)</title>
      <link>https://andres.jaimes.net/799/how-to-use-a-combobox-with-cwt-witty/</link>
      <pubDate>Wed, 10 Oct 2012 21:00:31 +0000</pubDate>
      <guid>https://andres.jaimes.net/799/how-to-use-a-combobox-with-cwt-witty/</guid>
      <description>&lt;p&gt;In this entry I’m going to create a simple form that shows how to add items to WComboBox in two different ways. The first one is useful for static combo items while the second one might be used to populate a combo from a database.&lt;/p&gt;&#xA;&lt;p&gt;The code is based on our previous &lt;a href=&#34;https://andres.jaimes.net/780/how-to-create-a-first-application-using-wt-witty/&#34; title=&#34;Two ways to create a Hello World application with Wt (Witty)&#34;&gt;Hello World application&lt;/a&gt;. There are few lines that changed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating a simple form using C&#43;&#43;/Wt (Witty)</title>
      <link>https://andres.jaimes.net/791/how-to-simple-form-with-c-witty/</link>
      <pubDate>Wed, 10 Oct 2012 20:12:55 +0000</pubDate>
      <guid>https://andres.jaimes.net/791/how-to-simple-form-with-c-witty/</guid>
      <description>&lt;p&gt;In this entry I’m going to create a simple form. This form will show you how to use controls and events in a very simple way.&lt;/p&gt;&#xA;&lt;p&gt;A couple things you have to notice before we start:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;I’m going to inherit from WContainerWidget. As you now know, I could have inherited from WApplication too.&lt;/li&gt;&#xA;&lt;li&gt;Most controls like, WLabel, WLineEdit and WPushButton include a “parent” parameter in their constructors. But you can also create them and add them later to any WContainerWidget. I’m doing this to our &lt;strong&gt;text&lt;/strong&gt; control. To add it to a container you have to call the WContainerWidget::&lt;strong&gt;addWidget&lt;/strong&gt; method.&lt;/li&gt;&#xA;&lt;li&gt;The code is based on our previous &lt;a href=&#34;https://andres.jaimes.net/780/how-to-create-a-first-application-using-wt-witty/&#34; title=&#34;Two ways to create a Hello World application with Wt (Witty)&#34;&gt;Hello World application&lt;/a&gt;. There are few lines that changed.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;So, here it is:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Two ways to create a Hello World application with Wt (Witty)</title>
      <link>https://andres.jaimes.net/780/how-to-create-a-first-application-using-wt-witty/</link>
      <pubDate>Tue, 09 Oct 2012 17:49:19 +0000</pubDate>
      <guid>https://andres.jaimes.net/780/how-to-create-a-first-application-using-wt-witty/</guid>
      <description>&lt;p&gt;Let’s start by talking a little bit about some elements and methods you will find in the code.&lt;/p&gt;&#xA;&lt;p&gt;Inheriting from WApplication or WContainerWidget are the most common ways to start an application using Wt. A WApplication instance will be in charge of creating your html, head and body tags. A WContainerWidget is usually a div tag (it can also be turned into a ul or ol by using its setList method). If you want to add items to your body tag, you have to ask your application for the root element by using the &lt;strong&gt;root()&lt;/strong&gt; method – the root element does not really correspond to the body tag but it is close to it… it is a div.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Steve Jobs</title>
      <link>https://andres.jaimes.net/778/steve-jobs/</link>
      <pubDate>Fri, 05 Oct 2012 14:50:35 +0000</pubDate>
      <guid>https://andres.jaimes.net/778/steve-jobs/</guid>
      <description>&lt;p&gt;Steve, we are still hungry… we are still foolish…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Where does Windows Live Writer store themes</title>
      <link>https://andres.jaimes.net/773/customize-windows-live-writer-themes/</link>
      <pubDate>Wed, 03 Oct 2012 05:28:49 +0000</pubDate>
      <guid>https://andres.jaimes.net/773/customize-windows-live-writer-themes/</guid>
      <description>&lt;p&gt;Windows Live Writer makes a local copy of your website images and style sheets everytime you click on the &lt;em&gt;Update Theme&lt;/em&gt; button located in the &lt;em&gt;Blog Account&lt;/em&gt; ribbon.&lt;/p&gt;&#xA;&lt;p&gt;You can find your local CSS file(s) in the following folder on Windows 7:&lt;/p&gt;&#xA;&lt;p&gt;C:UsersYour NameAppDataRoamingWindows Live Writerblogtemplates&lt;/p&gt;&#xA;&lt;p&gt;If you only have one blog, you are lucky. Get into the only folder you find there. If you have many blogs it will be a trial and error process to find out the right folder where your CSS files are located. You can ease this task by updating your theme from Windows Live Writer and then sorting these folders by date. Once you get into the right folder, look for your CSS. There might be more than one copy of it in these folders, so be sure to update them all.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to install Wt (Witty) on Windows</title>
      <link>https://andres.jaimes.net/761/how-to-compile-wt-witty-on-windows/</link>
      <pubDate>Tue, 02 Oct 2012 20:11:32 +0000</pubDate>
      <guid>https://andres.jaimes.net/761/how-to-compile-wt-witty-on-windows/</guid>
      <description>&lt;p&gt;Installing Wt can be a challenging task if you don’t have the right tools. I spent many days trying to make it work with MinGW and Visual Studio 2005. No luck. Here are some of my results:&lt;/p&gt;&#xA;&lt;h3 id=&#34;mingw&#34;&gt;MinGW&lt;/h3&gt;&#xA;&lt;p&gt;I was never able to make a full compile. It was interrupted by this or that reason. I could never get any of the examples to work.&lt;/p&gt;&#xA;&lt;h3 id=&#34;visual-c-express-2005&#34;&gt;Visual C++ Express 2005&lt;/h3&gt;&#xA;&lt;p&gt;Some of the examples worked, however only in “Release” mode. They never worked in debug mode, even though they compiled and linked successfuly. The INSTALL project didn’t work ethier.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Child memories…</title>
      <link>https://andres.jaimes.net/730/child-memories/</link>
      <pubDate>Mon, 01 Oct 2012 23:14:26 +0000</pubDate>
      <guid>https://andres.jaimes.net/730/child-memories/</guid>
      <description>&lt;p&gt;We were so nerds…&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;C:&amp;gt;debug&#xA;a&#xA;mov ah,9&#xA;mov dx,108&#xA;int 21&#xA;ret&#xA;db &amp;#39;hello world$&amp;#39;&#xA;&#xA;r cx&#xA;14&#xA;n hello.com&#xA;w&#xA;q&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>How to install the C&#43;&#43; Boost Libraries on Windows</title>
      <link>https://andres.jaimes.net/718/how-to-install-the-c-boost-libraries-on-windows/</link>
      <pubDate>Thu, 27 Sep 2012 23:34:27 +0000</pubDate>
      <guid>https://andres.jaimes.net/718/how-to-install-the-c-boost-libraries-on-windows/</guid>
      <description>&lt;p&gt;Boost is a set of high-quality libraries that speed up C++ development. They are included in most linux distributions and some of them are already part of the C++ Standard Library. In the Windows environment, you have to install them in order to take advantage of them.&lt;/p&gt;&#xA;&lt;p&gt;If you are using Microsoft Visual Studio, you can avoid the following steps by downloading a binary version from &lt;!-- raw HTML omitted --&gt;&lt;a href=&#34;http://www.boostpro.com/download/&#34;&gt;http://www.boostpro.com/download/&lt;/a&gt;&lt;!-- raw HTML omitted --&gt; and skip to the &lt;strong&gt;Testing&lt;/strong&gt; section in this document.&lt;/p&gt;</description>
    </item>
    <item>
      <title>One-liner to minimize your CSS files</title>
      <link>https://andres.jaimes.net/716/reduce-css-files-sed-one-liner/</link>
      <pubDate>Thu, 27 Sep 2012 17:37:05 +0000</pubDate>
      <guid>https://andres.jaimes.net/716/reduce-css-files-sed-one-liner/</guid>
      <description>&lt;p&gt;The following one-liner will help you remove comments, spaces, and more from your CSS files. Suggestions are always welcomed.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: Before running this command, create a copy of your original file. Try the resulting CSS in a test environment before releasing it.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;cat style.css | sed -e &amp;#39;&#xA;s/^[ t]*//g;         # leading spaces&#xA;s/[ t]*$//g;         # trailing spaces&#xA;s/([:{;,]) /1/g;   # spaces after a colon, brace, semicolon, or comma&#xA;s/ {/{/g;             # spaces before a brace&#xA;/^$/d                 # blank lines&#xA;&amp;#39; | sed -e :a -e &amp;#39;$!N; s/n(.)/1/; ta # newlines&#xA;&amp;#39; | sed -e &amp;#39;s//*[^*]**///g;&amp;#39;         # comments&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt; &lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing gcc/g&#43;&#43; using MinGW and NetBeans in Windows</title>
      <link>https://andres.jaimes.net/698/use-c-with-mingw-and-netbeans-in-windows/</link>
      <pubDate>Thu, 27 Sep 2012 16:44:07 +0000</pubDate>
      <guid>https://andres.jaimes.net/698/use-c-with-mingw-and-netbeans-in-windows/</guid>
      <description>&lt;p&gt;C and C++ languages are everywhere. All operating systems use them. People usually choose them because of their limitless power, velocity of execution, great portability and much more. In this tutorial I will show you how to install a C/C++ development environment under Windows. By the way, MinGW includes other compilers for languages like c, c++, objective c fortran and ada.&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;h2 id=&#34;install-mingw&#34;&gt;Install MinGW&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Go to the &lt;!-- raw HTML omitted --&gt;MinGW website&lt;!-- raw HTML omitted --&gt; and look for the download link. You can get it directly from &lt;!-- raw HTML omitted --&gt;SourceForge&lt;!-- raw HTML omitted --&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Start the installation.&lt;/li&gt;&#xA;&lt;li&gt;Under &lt;strong&gt;Repository Catalogues&lt;/strong&gt;, select &lt;strong&gt;Download&lt;/strong&gt; latest repository catalogues. You can also keep the &lt;strong&gt;Use pre-packaged repository catalogues&lt;/strong&gt; if your package includes a recent snapshot.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Select your installation path. Try to select one that is easily accesible from the command line.&lt;br&gt;&#xA;&lt;strong&gt;Note&lt;/strong&gt;: I have changed my default installation directory to C:optMinGW. This is completely optional.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Select C, C++ and other languages you want to install, plus the &lt;strong&gt;MSYS Basic System&lt;/strong&gt;. MSYS includes several handy shell tools like bash, make and grep that will allow you to build applications that depend on UNIX tools to be present.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Continue through the wizard screens and press &lt;strong&gt;Install&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;If you chose the option to download the latest repositories, it will take a little bit more.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;!-- raw HTML omitted --&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;In order to access your compilers from any directory in your system you now have to add the following directories to your &lt;strong&gt;PATH environment variable&lt;/strong&gt;:&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt; &lt;/p&gt;</description>
    </item>
    <item>
      <title>Switch from Debug to Release build options in Delphi</title>
      <link>https://andres.jaimes.net/694/how-to-change-from-debug-to-release-version-in-delphi/</link>
      <pubDate>Wed, 26 Sep 2012 19:26:52 +0000</pubDate>
      <guid>https://andres.jaimes.net/694/how-to-change-from-debug-to-release-version-in-delphi/</guid>
      <description>&lt;p&gt;Unlike Microsoft’s Visual Studio, the option to switch from Debug to Release in Delphi is kind of hidden. However, it is very easy to use.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Go to the &lt;strong&gt;Project&lt;/strong&gt; menu and select &lt;strong&gt;Configuration Manager&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Now select your project,&lt;/li&gt;&#xA;&lt;li&gt;Choose a new configuration and&lt;/li&gt;&#xA;&lt;li&gt;Press the “play” button.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;p&gt;The following picture shows you how the Configuration Manager looks:&#xA;&lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2012/09/delphi-configuration-manager.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;By default, the difference between the &lt;strong&gt;Debug&lt;/strong&gt; and the &lt;strong&gt;Release&lt;/strong&gt; options include:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Local Symbols creation (Debug: On, Release: Off)&lt;/li&gt;&#xA;&lt;li&gt;Symbol Reference Info (Debug: Include, Release: None)&lt;/li&gt;&#xA;&lt;li&gt;Debug Information (Debug: On, Release: Off)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;If you want to make further configurations, go to the &lt;strong&gt;Project&lt;/strong&gt; menu and select &lt;strong&gt;Options&lt;/strong&gt;. The options below &lt;strong&gt;Delphi Compiler&lt;/strong&gt; and &lt;strong&gt;Resource Compiler&lt;/strong&gt; will let you adjust every little nut.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to create high definition images for the iPad Retina display</title>
      <link>https://andres.jaimes.net/688/display-gorgeous-images-on-the-ipad-retina-display/</link>
      <pubDate>Tue, 18 Sep 2012 22:30:23 +0000</pubDate>
      <guid>https://andres.jaimes.net/688/display-gorgeous-images-on-the-ipad-retina-display/</guid>
      <description>&lt;p&gt;So you got a new iPad and realized your images do not look as good as they do on your computer, right? Don’t worry, there is a very simple way to achieve good looking images on this device:&lt;/p&gt;&#xA;&lt;p&gt;If you want to create a 500 x 500 px on a Retina display, create an image at 1000 x 1000 and then use CSS to control the image size down to 500 x 500:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Working with dynamic arrays in Delphi</title>
      <link>https://andres.jaimes.net/684/how-to-create-dynamic-array-in-delphi/</link>
      <pubDate>Tue, 18 Sep 2012 00:02:17 +0000</pubDate>
      <guid>https://andres.jaimes.net/684/how-to-create-dynamic-array-in-delphi/</guid>
      <description>&lt;p&gt;One advantage of Delphi’s dynamic arrays is that they are automatically freed once they go out of scope. That simplifies memory management and gives you more flexibility on your applications.&lt;/p&gt;&#xA;&lt;p&gt;You can declare a dynamic array like this:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Customers: array of string;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt; &lt;/p&gt;&#xA;&lt;p&gt;Before adding an element, you have to call the &lt;strong&gt;SetLength&lt;/strong&gt; function to specify the number of elements you are going to use (3 in this case):&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;SetLength(Customers, 3);&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt; &lt;/p&gt;</description>
    </item>
    <item>
      <title>Tips to help you deal with Delphi Threads</title>
      <link>https://andres.jaimes.net/203/how-to-use-threads-on-delphi/</link>
      <pubDate>Mon, 17 Sep 2012 20:10:46 +0000</pubDate>
      <guid>https://andres.jaimes.net/203/how-to-use-threads-on-delphi/</guid>
      <description>&lt;p&gt;Multithreading is one of those operating systems feaures that make your programs work in a more efficient way and give your users a better interactive interface. However they are not used by all developers.&lt;/p&gt;&#xA;&lt;p&gt;In this article I will focus on some important points you must have in mind when using threads on Delphi.&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;h2 id=&#34;how-to-create-them&#34;&gt;How to create them&lt;/h2&gt;&#xA;&lt;p&gt;There are two simple steps to accomplish it:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Create a new class that inherits from &lt;strong&gt;TThread&lt;/strong&gt; and&lt;/li&gt;&#xA;&lt;li&gt;Override the &lt;strong&gt;Execute&lt;/strong&gt; method.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;TMyThread = class(TThread)&#xA;public&#xA;  procedure Execute; override;&#xA;end;&#xA;&#xA;procedure TMyThread.Execute;&#xA;begin&#xA;   DoSomeWork();&#xA;  //When the procedure ends, the thread ends.&#xA;end;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt; &lt;/p&gt;</description>
    </item>
    <item>
      <title>Minor changes</title>
      <link>https://andres.jaimes.net/651/minor-changes/</link>
      <pubDate>Tue, 04 Sep 2012 21:04:44 +0000</pubDate>
      <guid>https://andres.jaimes.net/651/minor-changes/</guid>
      <description>&lt;p&gt;I have applied some minor changes to this website: caching – to improve performance – and micro-blogging entries. Later I will add some style to the micro-entries.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to manage local or remote services from command line</title>
      <link>https://andres.jaimes.net/640/start-stop-services-remotely-locally-on-servers-computers-windows/</link>
      <pubDate>Tue, 04 Sep 2012 15:19:06 +0000</pubDate>
      <guid>https://andres.jaimes.net/640/start-stop-services-remotely-locally-on-servers-computers-windows/</guid>
      <description>&lt;p&gt;Starting or stopping services on Windows is a task commonly performed by using the Services snap-in on the MMC console. From time to time you want to perform such tasks from the command line. A possible reason for this is when you are creating scripts (batch files).&lt;/p&gt;&#xA;&lt;p&gt;To achieve this, you have two options: &lt;strong&gt;net&lt;/strong&gt; for managing local services and &lt;strong&gt;sc.exe&lt;/strong&gt; for remote ones.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;strong&gt;net&lt;/strong&gt; command is included in your default Windows installation. The &lt;strong&gt;sc.exe&lt;/strong&gt; is installed as part of the Windows Resource Kit Tools. You can download it directly from &lt;a href=&#34;https://andres.jaimes.net/apps/rktools.exe&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exchange: The database files in this storage are inconsistent</title>
      <link>https://andres.jaimes.net/615/exchange-server-error-database-files-are-inconsistent/</link>
      <pubDate>Wed, 29 Aug 2012 18:10:30 +0000</pubDate>
      <guid>https://andres.jaimes.net/615/exchange-server-error-database-files-are-inconsistent/</guid>
      <description>&lt;p&gt;This morning I got a new surprise from my Exchange server. Outlook clients could not connect to the servers, however the server seemed to be working pretty normal. After some research I found out the Exchange databases were corrupted. But, how did this happen? Well, they can get corrupted when Windows is not shutdown in a proper way, or a service or process misbehavior leaves them in an inconsistent state or when there are physical errors on your hard disk. In my case it was caused by an improper behavior of the VSS service generated by BackupExec.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Creating Shortcodes in WordPress</title>
      <link>https://andres.jaimes.net/264/how-to-do-shortcode-in-wordpress/</link>
      <pubDate>Mon, 27 Aug 2012 01:58:45 +0000</pubDate>
      <guid>https://andres.jaimes.net/264/how-to-do-shortcode-in-wordpress/</guid>
      <description>&lt;p&gt;Shortcodes enable developers to create special kinds of content, following the idea of macros. One very famous short code is “gallery” needed to insert a gallery of images into a post.&lt;/p&gt;&#xA;&lt;p&gt;The good thing about shortcode’s is that final users are free to decide where to insert them.&lt;/p&gt;&#xA;&lt;p&gt;WordPress’s Shortcode API handles all the tricky parsing, making developers life much easier. The following is a snippet for a Shortcode – in order to make it work you have to add it to your functions.php file in your theme’s directory.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Add a Thumbnail to Admin Post Columns in WordPress</title>
      <link>https://andres.jaimes.net/257/how-to-add-featured-thumbail-to-admin-post-columns/</link>
      <pubDate>Mon, 27 Aug 2012 00:40:32 +0000</pubDate>
      <guid>https://andres.jaimes.net/257/how-to-add-featured-thumbail-to-admin-post-columns/</guid>
      <description>&lt;p&gt;Here is a snippet to add 64×64 images to the Admin Post Columns in WordPress. Having thumbnails may result extremely helpful, specially if you have hundreds of posts.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2012/08/thumbnails-wordpress.gif&#34; alt=&#34;Thumbnails wordpress&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;You have to copy and paste the following code into the functions.php file of your theme.&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;function posts_columns($defaults){&#xA;    $defaults[&amp;#39;the_post_thumbs&amp;#39;] = __(&amp;#39;Thumbs&amp;#39;);&#xA;    return $defaults;&#xA;}&#xA;&#xA;function posts_custom_columns($column_name, $id){&#xA;        if($column_name === &amp;#39;the_post_thumbs&amp;#39;){&#xA;        echo the_post_thumbnail( array(64, 64) );&#xA;    }&#xA;}&#xA;&#xA;add_filter(&amp;#39;manage_posts_columns&amp;#39;, &amp;#39;posts_columns&amp;#39;);&#xA;add_action(&amp;#39;manage_posts_custom_column&amp;#39;, &amp;#39;posts_custom_columns&amp;#39;, 10, 2);&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt; &lt;/p&gt;</description>
    </item>
    <item>
      <title>How I made my HP LaserJet P1102w work with my iPad</title>
      <link>https://andres.jaimes.net/244/configure-hp-laserjet-p1102w-to-work-with-iphone/</link>
      <pubDate>Wed, 15 Aug 2012 05:00:33 +0000</pubDate>
      <guid>https://andres.jaimes.net/244/configure-hp-laserjet-p1102w-to-work-with-iphone/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2012/08/p1102w.jpg&#34; alt=&#34;HP LaserJet P1102w&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;I got an HP LaserJet P1102w about a year ago, so long before I thought I was going to get an Apple’s iOS device. I purchased it just because I thought it would be useful to have a printer that could work wirelessly.&lt;/p&gt;&#xA;&lt;p&gt;At that time I made it work using wireless, but for some reason it stopped working. I didn’t care because it was very simple to connect it via USB to my computer and get my stuff done.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Download YouTube videos using Java</title>
      <link>https://andres.jaimes.net/227/how-to-youtube-video-downloader-using-java/</link>
      <pubDate>Thu, 02 Aug 2012 18:40:00 +0000</pubDate>
      <guid>https://andres.jaimes.net/227/how-to-youtube-video-downloader-using-java/</guid>
      <description>&lt;p&gt;From time to time we all have needed to show a YouTube video where no Internet connection is available.&lt;/p&gt;&#xA;&lt;p&gt;This program will allow you to download a video from YouTube for later playback. It is important to say that YouTube constantly changes its video URL, so someday it may need some rework. The following code was tested on Aug 12, 2012 and it works.&lt;/p&gt;&#xA;&lt;p&gt;Have a good day.&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/**&#xA; * YouTubeDownloader&#xA; *&#xA; * Modified by Andres Jaimes https://andres.jaimes.net&#xA; * Updated on Aug 02 2012&#xA; * Based on http://stackoverflow.com/users/568438/pinkteddybear888&#xA; *&#xA; * Dependencies: HttpComponents (http://hc.apache.org/index.html)&#xA; *&#xA; * -classpath .httpcomponents-client-4.2.1libhttpcore-4.2.1.jar;&#xA; *            .httpcomponents-client-4.2.1libhttpclient-4.2.1.jar;&#xA; *            .httpcomponents-client-4.2.1libcommons-logging-1.1.1.jar;&#xA; */&#xA;&#xA;import java.io.BufferedReader;&#xA;import java.io.File;&#xA;import java.io.FileOutputStream;&#xA;import java.io.IOException;&#xA;import java.io.InputStream;&#xA;import java.io.InputStreamReader;&#xA;import java.io.Reader;&#xA;import java.io.StringWriter;&#xA;import java.io.UnsupportedEncodingException;&#xA;import java.io.Writer;&#xA;import java.net.URI;&#xA;import java.net.URISyntaxException;&#xA;import java.net.URLDecoder;&#xA;import java.util.ArrayList;&#xA;import java.util.List;&#xA;import java.util.Scanner;&#xA;import java.util.logging.Formatter;&#xA;import java.util.logging.Handler;&#xA;import java.util.logging.Level;&#xA;import java.util.logging.LogRecord;&#xA;import java.util.logging.Logger;&#xA;import java.util.regex.Pattern;&#xA;&#xA;import org.apache.http.HttpEntity;&#xA;import org.apache.http.HttpResponse;&#xA;import org.apache.http.NameValuePair;&#xA;import org.apache.http.client.CookieStore;&#xA;import org.apache.http.client.HttpClient;&#xA;import org.apache.http.client.methods.HttpGet;&#xA;import org.apache.http.client.protocol.ClientContext;&#xA;import org.apache.http.client.utils.URIUtils;&#xA;import org.apache.http.client.utils.URLEncodedUtils;&#xA;import org.apache.http.impl.client.BasicCookieStore;&#xA;import org.apache.http.impl.client.DefaultHttpClient;&#xA;import org.apache.http.message.BasicNameValuePair;&#xA;import org.apache.http.protocol.BasicHttpContext;&#xA;import org.apache.http.protocol.HttpContext;&#xA;&#xA;public class YouTubeDownloader {&#xA;&#xA;    public static String newline = System.getProperty(&amp;#34;line.separator&amp;#34;);&#xA;    private static final Logger log = Logger.getLogger(JavaYoutubeDownloader.class.getCanonicalName());&#xA;    private static final Level defaultLogLevelSelf = Level.FINER;&#xA;    private static final Level defaultLogLevel = Level.WARNING;&#xA;    private static final Logger rootlog = Logger.getLogger(&amp;#34;&amp;#34;);&#xA;    private static final String scheme = &amp;#34;http&amp;#34;;&#xA;    private static final String host = &amp;#34;www.youtube.com&amp;#34;;&#xA;    private static final Pattern commaPattern = Pattern.compile(&amp;#34;,&amp;#34;);&#xA;    private static final Pattern pipePattern = Pattern.compile(&amp;#34;|&amp;#34;);&#xA;    private static final char[] ILLEGAL_FILENAME_CHARACTERS = { &amp;#39;/&amp;#39;, &amp;#39;n&amp;#39;, &amp;#39;r&amp;#39;, &amp;#39;t&amp;#39;, &amp;#39;&amp;#39;, &amp;#39;f&amp;#39;, &amp;#39;`&amp;#39;, &amp;#39;?&amp;#39;, &amp;#39;*&amp;#39;, &amp;#39;&amp;#39;, &amp;#39;&amp;lt;&amp;#39;, &amp;#39;&amp;gt;&amp;#39;, &amp;#39;|&amp;#39;, &amp;#39;&amp;#34;&amp;#39;, &amp;#39;:&amp;#39; };&#xA;&#xA;    private static void usage(String error) {&#xA;        if (error != null) {&#xA;            System.err.println(&amp;#34;Error: &amp;#34; + error);&#xA;        }&#xA;        System.err.println(&amp;#34;usage: YouTubeDownloader VIDEO_ID DESTINATION_DIRECTORY&amp;#34;);&#xA;        System.exit(-1);&#xA;    }&#xA;&#xA;    public static void main(String[] args) {&#xA;        if (args == null || args.length == 0) {&#xA;            usage(&amp;#34;Missing video id. Extract from http://www.youtube.com/watch?v=VIDEO_ID&amp;#34;);&#xA;        }&#xA;        try {&#xA;            setupLogging();&#xA;&#xA;            log.fine(&amp;#34;Starting&amp;#34;);&#xA;            String videoId = null;&#xA;            String outdir = &amp;#34;.&amp;#34;;&#xA;            // TODO Ghetto command line parsing&#xA;            if (args.length == 1) {&#xA;                videoId = args[0];&#xA;            } else if (args.length == 2) {&#xA;                videoId = args[0];&#xA;                outdir = args[1];&#xA;            }&#xA;&#xA;            int format = 18; // http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs&#xA;            String encoding = &amp;#34;UTF-8&amp;#34;;&#xA;            String userAgent = &amp;#34;Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13&amp;#34;;&#xA;            File outputDir = new File(outdir);&#xA;            String extension = getExtension(format);&#xA;&#xA;            play(videoId, format, encoding, userAgent, outputDir, extension);&#xA;&#xA;        } catch (Throwable t) {&#xA;            t.printStackTrace();&#xA;        }&#xA;        log.fine(&amp;#34;Finished&amp;#34;);&#xA;    }&#xA;&#xA;    private static String getExtension(int format) {&#xA;        // TODO: See reference http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs&#xA;        return &amp;#34;mp4&amp;#34;;&#xA;    }&#xA;&#xA;    private static void play(String videoId, int format, String encoding, String userAgent, File outputdir, String extension) throws Throwable {&#xA;        log.fine(&amp;#34;Retrieving &amp;#34; + videoId);&#xA;        List&amp;lt;NameValuePair&amp;gt; qparams = new ArrayList&amp;lt;NameValuePair&amp;gt;();&#xA;        qparams.add(new BasicNameValuePair(&amp;#34;video_id&amp;#34;, videoId));&#xA;        qparams.add(new BasicNameValuePair(&amp;#34;fmt&amp;#34;, &amp;#34;&amp;#34; + format));&#xA;        URI uri = getUri(&amp;#34;get_video_info&amp;#34;, qparams);&#xA;&#xA;        CookieStore cookieStore = new BasicCookieStore();&#xA;        HttpContext localContext = new BasicHttpContext();&#xA;        localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);&#xA;&#xA;        HttpClient httpclient = new DefaultHttpClient();&#xA;        HttpGet httpget = new HttpGet(uri);&#xA;        httpget.setHeader(&amp;#34;User-Agent&amp;#34;, userAgent);&#xA;&#xA;        log.finer(&amp;#34;Executing &amp;#34; + uri);&#xA;        HttpResponse response = httpclient.execute(httpget, localContext);&#xA;        HttpEntity entity = response.getEntity();&#xA;        if (entity != null &amp;amp;&amp;amp; response.getStatusLine().getStatusCode() == 200) {&#xA;            InputStream instream = entity.getContent();&#xA;            String videoInfo = getStringFromInputStream(encoding, instream);&#xA;            if (videoInfo != null &amp;amp;&amp;amp; videoInfo.length() &amp;gt; 0) {&#xA;                List&amp;lt;NameValuePair&amp;gt; infoMap = new ArrayList&amp;lt;NameValuePair&amp;gt;();&#xA;                URLEncodedUtils.parse(infoMap, new Scanner(videoInfo), encoding);&#xA;                String token = null;&#xA;                String downloadUrl = null;&#xA;                String filename = videoId;&#xA;&#xA;                for (NameValuePair pair : infoMap) {&#xA;                    String key = pair.getName();&#xA;                    String val = pair.getValue();&#xA;                    log.finest(key + &amp;#34;=&amp;#34; + val);&#xA;                    if (key.equals(&amp;#34;token&amp;#34;)) {&#xA;                        token = val;&#xA;                    }&#xA;                    else if (key.equals(&amp;#34;title&amp;#34;)) {&#xA;                        filename = val;&#xA;                    }&#xA;                    else if (key.equals(&amp;#34;url_encoded_fmt_stream_map&amp;#34;)) {&#xA;                        downloadUrl = URLDecoder.decode(&#xA;                            val.substring(val.indexOf(&amp;#34;http&amp;#34;),&#xA;                            val.indexOf(&amp;#34;&amp;amp;&amp;#34;)), &amp;#34;UTF-8&amp;#34;);&#xA;                    }&#xA;                }&#xA;&#xA;                filename = cleanFilename(filename);&#xA;                if (filename.length() == 0) {&#xA;                    filename = videoId;&#xA;                }&#xA;                else {&#xA;                    filename += &amp;#34;_&amp;#34; + videoId;&#xA;                }&#xA;                filename += &amp;#34;.&amp;#34; + extension;&#xA;                File outputfile = new File(outputdir, filename);&#xA;&#xA;                log.finer(&amp;#34;Saving to &amp;#34; + outputfile);&#xA;                log.finer(&amp;#34;From &amp;#34; + downloadUrl);&#xA;&#xA;                if (downloadUrl != null) {&#xA;                    downloadWithHttpClient(userAgent, downloadUrl, outputfile);&#xA;                }&#xA;            }&#xA;        }&#xA;    }&#xA;&#xA;    private static void downloadWithHttpClient(String userAgent, String downloadUrl, File outputfile) throws Throwable {&#xA;        HttpGet httpget2 = new HttpGet(downloadUrl);&#xA;        httpget2.setHeader(&amp;#34;User-Agent&amp;#34;, userAgent);&#xA;&#xA;        log.finer(&amp;#34;Executing &amp;#34; + httpget2.getURI());&#xA;        HttpClient httpclient2 = new DefaultHttpClient();&#xA;        HttpResponse response2 = httpclient2.execute(httpget2);&#xA;        HttpEntity entity2 = response2.getEntity();&#xA;        if (entity2 != null &amp;amp;&amp;amp; response2.getStatusLine().getStatusCode() == 200) {&#xA;            long length = entity2.getContentLength();&#xA;            InputStream instream2 = entity2.getContent();&#xA;            log.finer(&amp;#34;Writing &amp;#34; + length + &amp;#34; bytes to &amp;#34; + outputfile);&#xA;            if (outputfile.exists()) {&#xA;                outputfile.delete();&#xA;            }&#xA;            FileOutputStream outstream = new FileOutputStream(outputfile);&#xA;            try {&#xA;                byte[] buffer = new byte[2048];&#xA;                int count = -1;&#xA;                while ((count = instream2.read(buffer)) != -1) {&#xA;                    outstream.write(buffer, 0, count);&#xA;                }&#xA;                outstream.flush();&#xA;            } finally {&#xA;                outstream.close();&#xA;            }&#xA;        }&#xA;    }&#xA;&#xA;    private static String cleanFilename(String filename) {&#xA;        for (char c : ILLEGAL_FILENAME_CHARACTERS) {&#xA;            filename = filename.replace(c, &amp;#39;_&amp;#39;);&#xA;        }&#xA;        return filename;&#xA;    }&#xA;&#xA;    private static URI getUri(String path, List&amp;lt;NameValuePair&amp;gt; qparams) throws URISyntaxException {&#xA;        URI uri = URIUtils.createURI(scheme, host, -1, &amp;#34;/&amp;#34; + path, URLEncodedUtils.format(qparams, &amp;#34;UTF-8&amp;#34;), null);&#xA;        return uri;&#xA;    }&#xA;&#xA;    private static void setupLogging() {&#xA;        changeFormatter(new Formatter() {&#xA;            @Override&#xA;            public String format(LogRecord arg0) {&#xA;                return arg0.getMessage() + newline;&#xA;            }&#xA;            });&#xA;        explicitlySetAllLogging(Level.FINER);&#xA;    }&#xA;&#xA;    private static void changeFormatter(Formatter formatter) {&#xA;        Handler[] handlers = rootlog.getHandlers();&#xA;        for (Handler handler : handlers) {&#xA;            handler.setFormatter(formatter);&#xA;        }&#xA;    }&#xA;&#xA;    private static void explicitlySetAllLogging(Level level) {&#xA;        rootlog.setLevel(Level.ALL);&#xA;        for (Handler handler : rootlog.getHandlers()) {&#xA;            handler.setLevel(defaultLogLevelSelf);&#xA;        }&#xA;        log.setLevel(level);&#xA;        rootlog.setLevel(defaultLogLevel);&#xA;    }&#xA;&#xA;    private static String getStringFromInputStream(String encoding, InputStream instream) throws UnsupportedEncodingException, IOException {&#xA;        Writer writer = new StringWriter();&#xA;&#xA;        char[] buffer = new char[1024];&#xA;        try {&#xA;            Reader reader = new BufferedReader(new InputStreamReader(instream, encoding));&#xA;            int n;&#xA;            while ((n = reader.read(buffer)) != -1) {&#xA;                writer.write(buffer, 0, n);&#xA;            }&#xA;        } finally {&#xA;            instream.close();&#xA;        }&#xA;        String result = writer.toString();&#xA;        return result;&#xA;    }&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Free Image Resizer for Windows</title>
      <link>https://andres.jaimes.net/219/download-free-image-resizer-for-windows/</link>
      <pubDate>Tue, 31 Jul 2012 21:40:18 +0000</pubDate>
      <guid>https://andres.jaimes.net/219/download-free-image-resizer-for-windows/</guid>
      <description>&lt;p&gt;This time I want to share with you a Windows application for image resizing. It’s a fact, size matters. That is why Image Resizer can be very useful for sharing pictures through email, uploading images to websites or posting them to social networks. If your images are smaller, then it will take you less time to share them.&lt;/p&gt;&#xA;&lt;p&gt;This application can load a list of jpeg, gif, png or bmp files, resize them and then put them on a selected folder. All this without modifying your original files. This application uses a smooth image resizing algorithm to get better and softer images. This application does not need an installer; it just runs from whatever folder you put it in. If someday you want to “uninstall” this application, just delete this file and that’s it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to avoid spam on Android&#39;s message bar</title>
      <link>https://andres.jaimes.net/209/how-to-avoid-ads-on-the-message-bar-on-android/</link>
      <pubDate>Tue, 24 Jul 2012 18:05:04 +0000</pubDate>
      <guid>https://andres.jaimes.net/209/how-to-avoid-ads-on-the-message-bar-on-android/</guid>
      <description>&lt;p&gt;Recently, I started to get some really anoying spam messages from an unknown application on my phone’s message bar. Different icons were showing like stars, plus signs, check marks and so on. When you select any of this messages your browser opens and takes you to the leadbolt website. These ads started to become something annoying and I started to wonder if they were messing with my personal information.&lt;/p&gt;&#xA;&lt;p&gt; &lt;/p&gt;&#xA;&lt;h2 id=&#34;how-to-proceed&#34;&gt;How to proceed&lt;/h2&gt;&#xA;&lt;p&gt;In order to identify the offender app, you have to install AirPush Detector (free app) written by Dan Bjorge from the &lt;a href=&#34;http://play.google.com/&#34;&gt;Play Store&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>10 WordPress plugins you should have</title>
      <link>https://andres.jaimes.net/186/10-recommended-wordpress-plugins/</link>
      <pubDate>Tue, 12 Jun 2012 21:49:00 +0000</pubDate>
      <guid>https://andres.jaimes.net/186/10-recommended-wordpress-plugins/</guid>
      <description>&lt;p&gt;This time I would like to make a list of recommended WordPress plugins. They are alphabetically sorted and have many different purposes. The descriptions shown were taken right from the WordPress description.&lt;/p&gt;&#xA;&lt;p&gt;Here we go:&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-comment-rating&#34;&gt;1. Comment Rating&lt;/h2&gt;&#xA;&lt;p&gt;By Bob King&lt;br&gt;&#xA;Description: Allows visitors to rate comments in a Like vs. Dislike fashion with clickable images. Poorly-rated &amp;amp; highly-rated comments can be displayed differently. This plugin is simple and light-weight.&lt;/p&gt;</description>
    </item>
    <item>
      <title>5 tips to get good pictures in low light conditions</title>
      <link>https://andres.jaimes.net/168/how-to-get-good-pictures-in-dark-places/</link>
      <pubDate>Sun, 03 Jun 2012 22:51:23 +0000</pubDate>
      <guid>https://andres.jaimes.net/168/how-to-get-good-pictures-in-dark-places/</guid>
      <description>&lt;p&gt;I recently got an assignment to cover a music school’s annual concert. But it was not as easy I thought it was going to be.&lt;/p&gt;&#xA;&lt;p&gt;First of all, the concert took place in a very dark auditorium. There was just one working spot light pointing to the right side of the stage. The sun was bright outside and there some windows right behind the stage. For some reason, that I did not understand, they didn’t allow me to use a flash. With musicians moving over and over from light to darkness and back, that was a good challenge.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Useful vim commands</title>
      <link>https://andres.jaimes.net/153/useful-vi-commands/</link>
      <pubDate>Fri, 25 May 2012 16:44:13 +0000</pubDate>
      <guid>https://andres.jaimes.net/153/useful-vi-commands/</guid>
      <description>&lt;p&gt;Even though we have many sophisticated GUI text editors, there is one that has passed all time tests: vi.&lt;/p&gt;&#xA;&lt;p&gt;vi is a text editor created originally for Unix in 1976. Are you kidding? 1976? Why should I even bother to know it exists? Because that is the only text editor you will find for sure in any Unix like command line environment, that includes any Unix flavor, Linux and Macs. Believe me, there are many times when you have no other way to edit files (like webpages, php’s, css’s) but from the command line. Also your customer will be very impressed when he looks at you doing all this stuff. Really.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A basic .vimrc configuration file for vim users</title>
      <link>https://andres.jaimes.net/151/vimrc/</link>
      <pubDate>Fri, 25 May 2012 15:56:57 +0000</pubDate>
      <guid>https://andres.jaimes.net/151/vimrc/</guid>
      <description>&lt;p&gt;&lt;code&gt;.vimrc&lt;/code&gt; is the configuration file for vim. Upon execution vim will read the contents of this file setting up a customized environment. You have to save this file in your home directory. It is important to notice that the commands &lt;strong&gt;should not include&lt;/strong&gt; the initial colon (:).&lt;/p&gt;&#xA;&lt;p&gt;Here are some useful commands:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;syntax on          &amp;#34; syntax highlighing&#xA;set number         &amp;#34; show line numbers&#xA;set ruler          &amp;#34; show the cursor position all the time&#xA;set ignorecase     &amp;#34; ignore case when searching&#xA;set hlsearch       &amp;#34; highlight searches&#xA;set tabstop=4      &amp;#34; number of spaces of tab character&#xA;set shiftwidth=4   &amp;#34; number of spaces to (auto)indent&#xA;set autoindent     &amp;#34; always set auto indenting on&#xA;set smartindent    &amp;#34; smart indent&#xA;set cindent        &amp;#34; cindent&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you are using vi instead of vim, then save your configuration to &lt;code&gt;~/.exrc&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>About Me</title>
      <link>https://andres.jaimes.net/about/</link>
      <pubDate>Wed, 14 Mar 2012 23:04:50 +0000</pubDate>
      <guid>https://andres.jaimes.net/about/</guid>
      <description>&lt;p&gt;I am a Cloud, REST API, and microservices back-end/full-stack developer, fluent in Scala, Java, C#, JavaScript, SQL, NoSQL, and ElasticSearch, who loves FreeBSD, Linux, Docker and AWS.&lt;/p&gt;&#xA;&lt;p&gt;I started programming web pages when bright-colored-blinking gifs dominated the internet. That new place where Geocities ruled. Those were the times when creating a simple contact form required a CGI program using C or C++, Boutell&amp;rsquo;s CGIC library, and the Netscape Composer.&lt;/p&gt;&#xA;&lt;p&gt;I am a big fan of the &lt;em&gt;Mario Bros&lt;/em&gt; saga and an avid player of &lt;em&gt;The Legend of Zelda: Breath of the Wild&lt;/em&gt;. I&amp;rsquo;m a piano and guitar player and enjoy road cycling and playing tennis.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Multi-Device Layout Patterns</title>
      <link>https://andres.jaimes.net/128/multi-device-layout-patterns/</link>
      <pubDate>Wed, 14 Mar 2012 22:51:43 +0000</pubDate>
      <guid>https://andres.jaimes.net/128/multi-device-layout-patterns/</guid>
      <description>&lt;p&gt;Through fluid grids and media query adjustments, responsive design enables Web page layouts to adapt to a variety of screen sizes. As more designers embrace this technique, we’re not only seeing a lot of innovation but the emergence of clear patterns as well. I cataloged what seem to be the most popular of these patterns for adaptable multi-device layouts.&lt;/p&gt;&#xA;&lt;p&gt;To get a sense of emerging responsive design layout patterns, I combed through all the examples curated on the Media Queries gallery site several times. I looked for what high-level patterns showed up most frequently and tried to avoid defining separate patterns where there were only small differences.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Old school: Use xcopy to back up your stuff</title>
      <link>https://andres.jaimes.net/125/old-school-use-xcopy-to-back-up-your-stuff/</link>
      <pubDate>Thu, 08 Mar 2012 22:24:18 +0000</pubDate>
      <guid>https://andres.jaimes.net/125/old-school-use-xcopy-to-back-up-your-stuff/</guid>
      <description>&lt;p&gt;Need an easy way to back up your files, but don’t feel like monkeying with expensive or complicated software? Using the xcopy command and a simple text file, you can accomplish this rather easily. Here’s what I do.&lt;/p&gt;&#xA;&lt;p&gt;First, make sure that file extensions are &lt;strong&gt;not&lt;/strong&gt; hidden by going to &lt;strong&gt;My Computer &amp;gt; Tools &amp;gt; Folder Options &amp;gt; View&lt;/strong&gt;. Uncheck &lt;strong&gt;Hide Extensions for Known File Types&lt;/strong&gt; and click OK (if it’s already unchecked, don’t worry about it).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ten Laws to Design By</title>
      <link>https://andres.jaimes.net/115/ten-laws-to-design-by/</link>
      <pubDate>Fri, 02 Mar 2012 07:54:40 +0000</pubDate>
      <guid>https://andres.jaimes.net/115/ten-laws-to-design-by/</guid>
      <description>&lt;p&gt;As designers we have to be aware of the function of our work and design as much as we care about the aesthetics and visuals. There are a lot of terms for the design of how the site functions and works, from “usability design” to “user experience,” what remains constant is that if we want to become better designers we have to pair these two concepts together.&lt;/p&gt;&#xA;&lt;p&gt;Using clear and effective design laws as guides we can use proven formulas for better design. These laws both assist in the usability / experience of our design as well as the aesthetic values. Furthermore being able to refer and cite these laws when presenting or discussing design you can further establish yourself as a expert with justified reasons for your design choices.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Desprotegido…</title>
      <link>https://andres.jaimes.net/113/desprotegido/</link>
      <pubDate>Mon, 27 Feb 2012 19:28:07 +0000</pubDate>
      <guid>https://andres.jaimes.net/113/desprotegido/</guid>
      <description>&lt;p&gt;No fue hasta que un señor de cincuenta y tantos años, cuyo padre recientemente falleció, que entendí la importancia de sentirnos cerca de nuestros padres, pues me dijo “ahora sí me siento desprotegido”…&lt;/p&gt;</description>
    </item>
    <item>
      <title>Coding An HTML 5 Layout From Scratch</title>
      <link>https://andres.jaimes.net/110/designing-a-html-5-layout-from-scratch/</link>
      <pubDate>Sat, 25 Feb 2012 22:03:15 +0000</pubDate>
      <guid>https://andres.jaimes.net/110/designing-a-html-5-layout-from-scratch/</guid>
      <description>&lt;p&gt;&lt;strong&gt;HTML5&lt;/strong&gt; and &lt;strong&gt;CSS3&lt;/strong&gt; have just arrived (kinda), and with them a whole new battle for the ‘best markup’ trophy has begun. Truth to be told, all these technologies are mere tools waiting for a skilled developer to work on the right project. As developers we shouldn’t get into pointless discussions of which markup is the best. They all lead to nowhere. Rather, we must get a brand new ideology and modify our coding habits to keep the web accessible.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redistribute your webpage contents to fit your browser width</title>
      <link>https://andres.jaimes.net/97/how-to-reorganize-your-webpage-according-to-window-size/</link>
      <pubDate>Wed, 22 Feb 2012 04:37:22 +0000</pubDate>
      <guid>https://andres.jaimes.net/97/how-to-reorganize-your-webpage-according-to-window-size/</guid>
      <description>&lt;p&gt;Are you tired of dealing with different screen sizes for your web pages? Well, this information is for you.&lt;/p&gt;&#xA;&lt;p&gt;I will show you some CSS tricks to help you reorganize a webpage depending on your browser window width.&lt;/p&gt;&#xA;&lt;p&gt;We will start with a simple HTML 5 skeleton that includes a contents and a navigation section:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 2&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;html&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;lang&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;en&amp;#34;&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 3&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;head&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 4&lt;/span&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;style&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 5&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#75715e&#34;&gt;/* we will add our style here on the next step */&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 6&lt;/span&gt;&lt;span&gt;  &amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;style&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 7&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;head&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 8&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;body&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt; 9&lt;/span&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;role&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;main&amp;#34;&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;10&lt;/span&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;h1&lt;/span&gt;&amp;gt;This is the contents&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;h1&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;11&lt;/span&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;p&lt;/span&gt;&amp;gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;12&lt;/span&gt;&lt;span&gt;       Nunc venenatis ante sed augue porttitor at volutpat felis&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;13&lt;/span&gt;&lt;span&gt;       consequat. Pellentesque eget neque vel erat cursus&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;14&lt;/span&gt;&lt;span&gt;       fermentum. Cras convallis eros malesuada lectus condimentum&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;15&lt;/span&gt;&lt;span&gt;       a semper eros sollicitudin. Phasellus bibendum, elit in&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;16&lt;/span&gt;&lt;span&gt;       facilisis volutpat, felis nisl venenatis mauris, non&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;17&lt;/span&gt;&lt;span&gt;       vestibulum diam urna id eros. Proin augue mauris, aliquam&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;18&lt;/span&gt;&lt;span&gt;       condimentum suscipit vel, semper sit amet orci. Pellentesque&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;19&lt;/span&gt;&lt;span&gt;       eleifend, sem in feugiat ultrices, lacus diam luctus turpis,&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;20&lt;/span&gt;&lt;span&gt;       quis malesuada dui risus et magna. Donec egestas, ligula in&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;21&lt;/span&gt;&lt;span&gt;       faucibus accumsan, lacus nibh condimentum urna, vel pulvinar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;22&lt;/span&gt;&lt;span&gt;       nulla mi quis turpis. &amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;p&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;23&lt;/span&gt;&lt;span&gt;  &amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;24&lt;/span&gt;&lt;span&gt;  &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;nav&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;role&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;navigation&amp;#34;&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;25&lt;/span&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;h2&lt;/span&gt;&amp;gt;This is the navigation.&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;h2&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;26&lt;/span&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;ol&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;27&lt;/span&gt;&lt;span&gt;      &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&amp;gt;Option 1&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;28&lt;/span&gt;&lt;span&gt;      &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&amp;gt;Option 2&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;29&lt;/span&gt;&lt;span&gt;      &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#&amp;#34;&lt;/span&gt;&amp;gt;Option 3&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;30&lt;/span&gt;&lt;span&gt;    &amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;ol&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;31&lt;/span&gt;&lt;span&gt;  &amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;nav&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;32&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;body&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;33&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;html&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pretty simple uh? Now, we will add some &lt;strong&gt;CSS&lt;/strong&gt; between the &lt;strong&gt;style&lt;/strong&gt; tags in the head section. This CSS will do the magic depending on our window width.&lt;/p&gt;</description>
    </item>
    <item>
      <title>An easy way to do a CSS Horizontal Menu</title>
      <link>https://andres.jaimes.net/93/how-to-css-horizontal-menu/</link>
      <pubDate>Wed, 22 Feb 2012 03:27:23 +0000</pubDate>
      <guid>https://andres.jaimes.net/93/how-to-css-horizontal-menu/</guid>
      <description>&lt;p&gt;Here it is. Start with a conventional item list like the following:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;ul&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;hmenu&amp;#34;&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&amp;gt;Option 1&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&amp;gt;Option 2&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&amp;gt;Option 3&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;5&lt;/span&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&amp;gt;Option 4&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;6&lt;/span&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;href&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&amp;gt;Option 5&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;a&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;li&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;7&lt;/span&gt;&lt;span&gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;ul&lt;/span&gt;&amp;gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Don&amp;rsquo;t forget to add the &lt;strong&gt;class&lt;/strong&gt; parameter to the &lt;strong&gt;ul&lt;/strong&gt; tag – that will help us do the magic. The previous list is rendered in a regular browser like the following:&#xA;&lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2012/02/list.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>CSS – Attribute selectors</title>
      <link>https://andres.jaimes.net/104/css-attribute-selectors/</link>
      <pubDate>Tue, 21 Feb 2012 23:06:55 +0000</pubDate>
      <guid>https://andres.jaimes.net/104/css-attribute-selectors/</guid>
      <description>&lt;p&gt;Attribute selectors allow you to select CSS elements based on their attributes or values.&lt;/p&gt;&#xA;&lt;p&gt;For example, if you want to select an image named “great.gif” you can do it by using the following rule:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;img&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;src&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;great.gif&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; { &lt;span style=&#34;color:#66d9ef&#34;&gt;border&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;solid&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;#000&lt;/span&gt;; } &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;There are four types of selectors.&lt;/p&gt;&#xA;&lt;p&gt;By &lt;strong&gt;attribute&lt;/strong&gt;. The following example will select all the images that contain the given attribute:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;img&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;title&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; { &lt;span style=&#34;color:#66d9ef&#34;&gt;border&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;solid&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;#000&lt;/span&gt;; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;img&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;width&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; { &lt;span style=&#34;color:#66d9ef&#34;&gt;border&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;solid&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;#000&lt;/span&gt;; }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;img&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;alt&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; { &lt;span style=&#34;color:#66d9ef&#34;&gt;border&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;px&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;solid&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;#000&lt;/span&gt;; } &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;By &lt;strong&gt;value&lt;/strong&gt;. This will look for all elements that have a “src” attribute with the given value:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create a DNS zone file</title>
      <link>https://andres.jaimes.net/90/how-to-create-a-dns-zone-file/</link>
      <pubDate>Tue, 21 Feb 2012 21:45:20 +0000</pubDate>
      <guid>https://andres.jaimes.net/90/how-to-create-a-dns-zone-file/</guid>
      <description>&lt;p&gt;by &lt;!-- raw HTML omitted --&gt;FreeBSD.org&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;&#xA;&lt;p&gt;An example master zone file for &lt;!-- raw HTML omitted --&gt;example.org&lt;!-- raw HTML omitted --&gt; (existing within &lt;!-- raw HTML omitted --&gt;/etc/namedb/master/example.org&lt;!-- raw HTML omitted --&gt;) is as follows:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$TTL 3600        ; 1 hour default TTL&#xA;example.org.    IN      SOA      ns1.example.org. admin.example.org. (&#xA;                                2006051501      ; Serial&#xA;                                10800           ; Refresh&#xA;                                3600            ; Retry&#xA;                                604800          ; Expire&#xA;                                300             ; Negative Response TTL&#xA;                        )&#xA;&#xA;; DNS Servers&#xA;                IN      NS      ns1.example.org.&#xA;                IN      NS      ns2.example.org.&#xA;&#xA;; MX Records&#xA;                IN      MX 10   mx.example.org.&#xA;                IN      MX 20   mail.example.org.&#xA;&#xA;                IN      A       192.168.1.1&#xA;&#xA;; Machine Names&#xA;localhost       IN      A       127.0.0.1&#xA;ns1             IN      A       192.168.1.2&#xA;ns2             IN      A       192.168.1.3&#xA;mx              IN      A       192.168.1.4&#xA;mail            IN      A       192.168.1.5&#xA;&#xA;; Aliases&#xA;www             IN      CNAME   example.org.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Note that every hostname ending in a “.” is an exact hostname, whereas everything without a trailing “.” is relative to the origin. For example, &lt;!-- raw HTML omitted --&gt;ns1&lt;!-- raw HTML omitted --&gt; is translated into &lt;!-- raw HTML omitted --&gt;ns1.&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;example.org.&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>CentOS useful commands</title>
      <link>https://andres.jaimes.net/82/centos-useful-commands/</link>
      <pubDate>Tue, 21 Feb 2012 00:15:36 +0000</pubDate>
      <guid>https://andres.jaimes.net/82/centos-useful-commands/</guid>
      <description>&lt;p&gt;To get your CentOS version type:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;cat /etc/redhat-release&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To update all your CentOS packages at once:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;yum update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To install nslookup, dig and other network utilities:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;yum install bind-utils -y&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Show User Library Directory in Mac OS X Lion</title>
      <link>https://andres.jaimes.net/80/how-to-show-user-library-directory-in-mac-lion/</link>
      <pubDate>Sat, 18 Feb 2012 21:31:14 +0000</pubDate>
      <guid>https://andres.jaimes.net/80/how-to-show-user-library-directory-in-mac-lion/</guid>
      <description>&lt;h2 id=&#34;show-user-library-in-os-x-lion&#34;&gt;Show User ~/Library in OS X Lion&lt;/h2&gt;&#xA;&lt;p&gt;Launch Terminal from Spotlight or Launchpad &amp;gt; Utilities, and enter the following command to show the directory:&lt;br&gt;&#xA;``&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;chflags nohidden ~/Library/&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The users &lt;strong&gt;Library&lt;/strong&gt; folder will immediately become visible. Reverting this back to the standard Lion setting is simple too:&lt;/p&gt;&#xA;&lt;h2 id=&#34;hide-user-library-in-os-x-lion-default-setting&#34;&gt;Hide User ~/Library in OS X Lion (default setting)&lt;/h2&gt;&#xA;&lt;p&gt;This returns to the default setting of hiding the user Library directory:&lt;br&gt;&#xA;``&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to create a simple gradient in C#</title>
      <link>https://andres.jaimes.net/77/create-a-simple-gradient-in-c-sharp/</link>
      <pubDate>Sat, 18 Feb 2012 01:02:51 +0000</pubDate>
      <guid>https://andres.jaimes.net/77/create-a-simple-gradient-in-c-sharp/</guid>
      <description>&lt;p&gt;Creating a simple gradient using two colors is very simple:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;Rectangle rect = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; Rectangle(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;LinearGradientBrush lgb = &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; LinearGradientBrush(rect, Color.White, Color.Blue, &lt;span style=&#34;color:#ae81ff&#34;&gt;90&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;e.Graphics.FillRectangle(lgb, rect);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This code will generate a gradient in the given rectangle that goes from white to blue in a vertical way (see last parameter in constructor). In this case, &lt;strong&gt;e&lt;/strong&gt;, is any class that encapsulates the &lt;strong&gt;System.Drawing.Graphics&lt;/strong&gt; class. Once the gradient is ready, well, you have to actually draw it by calling the &lt;strong&gt;FillRectangle&lt;/strong&gt; function.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Printing in C# – The easy way</title>
      <link>https://andres.jaimes.net/71/printing-in-csharp-the-easy-way/</link>
      <pubDate>Sat, 18 Feb 2012 00:25:11 +0000</pubDate>
      <guid>https://andres.jaimes.net/71/printing-in-csharp-the-easy-way/</guid>
      <description>&lt;p&gt;Believe me, it is easy. As with any class, before we can use any of the Classes, Events and Objects available to us in the .Net Framework we need to import the Namespaces we need. For this we need 3 namespaces. VB.Net users only required 2 because VB.Net assumes the System Namespace, whereas C# isn’t so kind:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;!-- raw HTML omitted --&gt;System&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;!-- raw HTML omitted --&gt;System.Drawing&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;!-- raw HTML omitted --&gt;System.Drawing.Printing&lt;!-- raw HTML omitted --&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;These 3 Namespaces contain everything we need for this class, so you will need to add the following lines to the top of your class file:&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to know if a hex color is light or dark</title>
      <link>https://andres.jaimes.net/67/how-to-know-if-you-have-a-light-or-a-dark-color/</link>
      <pubDate>Fri, 17 Feb 2012 23:12:23 +0000</pubDate>
      <guid>https://andres.jaimes.net/67/how-to-know-if-you-have-a-light-or-a-dark-color/</guid>
      <description>&lt;p&gt;There is a simple way to know this. The following code takes white (#ffffff) divided it by two as our reference color. If the comparing color is lower than the reference color, then the given color is dark, otherwise it&amp;rsquo;s light color.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;isLightOrDark&lt;/span&gt;($hexcolor) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;     &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;hexdec&lt;/span&gt;($hexcolor) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0xffffff&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;?&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;light color&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;dark color&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>How to choose a printer using C#</title>
      <link>https://andres.jaimes.net/65/how-to-choose-a-printer-using-c-sharp/</link>
      <pubDate>Fri, 17 Feb 2012 23:01:45 +0000</pubDate>
      <guid>https://andres.jaimes.net/65/how-to-choose-a-printer-using-c-sharp/</guid>
      <description>&lt;p&gt;You can assign a printer and other settings by using the basic PrintDocument and PrintDialog controls properties. Look at the next example:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-csharp&#34; data-lang=&#34;csharp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (printDialog.ShowDialog() == DialogResult.OK) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;    printDocument.PrinterSettings.PrinterName = printDialog.PrinterSettings.PrinterName;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;3&lt;/span&gt;&lt;span&gt;    printDocument.PrinterSettings.Copies = printDialog.PrinterSettings.Copies;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;4&lt;/span&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>How to Move a WordPress Blog to a New Domain or Location</title>
      <link>https://andres.jaimes.net/59/how-to-move-wordpress-blog-to-new-domain-or-location/</link>
      <pubDate>Tue, 14 Feb 2012 01:24:27 +0000</pubDate>
      <guid>https://andres.jaimes.net/59/how-to-move-wordpress-blog-to-new-domain-or-location/</guid>
      <description>&lt;p&gt;Before trying the queries in this page, I recommend you to read this &lt;a href=&#34;http://www.mydigitallife.info/how-to-move-wordpress-blog-to-new-domain-or-location&#34;&gt;full article&lt;/a&gt; to learn more about the process.&lt;/p&gt;&#xA;&lt;p&gt;To update WordPress options with the new blog location, use the following SQL command:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UPDATE&lt;/span&gt; wp_options &lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; option_value &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;replace&lt;/span&gt;(option_value, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;http://www.old-domain.com&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;http://www.new-domain.com&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; option_name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;home&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;OR&lt;/span&gt; option_name &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;siteurl&amp;#39;&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After that you will need to fix URLs of the WordPress posts and pages, which translated from post slug, and stored in database wp_posts table as guid field. The URL values in this field are stored as absolute URLs instead of relative URLs, so it needs to be changed with the following SQL query:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kiwi!</title>
      <link>https://andres.jaimes.net/57/kiwi/</link>
      <pubDate>Sat, 14 Jan 2012 18:25:42 +0000</pubDate>
      <guid>https://andres.jaimes.net/57/kiwi/</guid>
      <description>&lt;p&gt;Worth watching&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;      &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/sdUUx5FdySs?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;</description>
    </item>
    <item>
      <title>How to install Papyrus on Eclipse Indigo</title>
      <link>https://andres.jaimes.net/46/setup-eclipse-papyrus/</link>
      <pubDate>Tue, 10 Jan 2012 23:10:46 +0000</pubDate>
      <guid>https://andres.jaimes.net/46/setup-eclipse-papyrus/</guid>
      <description>&lt;p&gt;Papyrus is a UML designer plugin for the eclipse development environment. Installing it on the Indigo version is very easy:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Go to &lt;strong&gt;Help&lt;/strong&gt; &amp;gt; &lt;strong&gt;Install New Software&lt;/strong&gt;…  &lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2012/01/papyrus-01.gif&#34; alt=&#34;&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;Under &lt;strong&gt;Work with&lt;/strong&gt;, select &lt;strong&gt;All Available Sites&lt;/strong&gt; and look for &lt;strong&gt;Modeling&lt;/strong&gt; on the tree view.  &lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2012/01/papyrus-02.gif&#34; alt=&#34;&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;Under &lt;strong&gt;Modeling&lt;/strong&gt;, look for &lt;strong&gt;MDT Papyrus – SDK&lt;/strong&gt; and press the &lt;strong&gt;Next&lt;/strong&gt; button  &lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2012/01/papyrus-03.gif&#34; alt=&#34;&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;Press &lt;strong&gt;Next&lt;/strong&gt; again  &lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2012/01/papyrus-04.gif&#34; alt=&#34;&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Accept&lt;/strong&gt; the Licence and press &lt;strong&gt;Finish&lt;/strong&gt;  &lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2012/01/papyrus-05.gif&#34; alt=&#34;&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;You will be asked to restart Eclipse, so go ahead…  &lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2012/01/papyrus-06.gif&#34; alt=&#34;&#34;&gt;&lt;/li&gt;&#xA;&lt;li&gt;Next time you create a project, you will see the Papyrus project listed.  &lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2012/01/papyrus-07.gif&#34; alt=&#34;&#34;&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Happy modeling!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reocities, a web time traveller…</title>
      <link>https://andres.jaimes.net/42/reocities-a-web-time-traveller/</link>
      <pubDate>Tue, 25 Oct 2011 19:26:03 +0000</pubDate>
      <guid>https://andres.jaimes.net/42/reocities-a-web-time-traveller/</guid>
      <description>&lt;p&gt;If you are one of those who started surfing and creating the web in the 90’s, Reocities will take you back in time to the beginning of an era. Blue text on green or yellow wallpapers and animated gif’s overloaded the pages during the last decade of last century.&lt;/p&gt;&#xA;&lt;p&gt;After Geocities closed in 2009, Reocities started saving a lot of websites stored on mentioned website trying to keep the history alive. A real virtual museum.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hombres G vs Jason Paradise</title>
      <link>https://andres.jaimes.net/38/hombres-g-vs-jason-paradise/</link>
      <pubDate>Tue, 25 Oct 2011 18:33:09 +0000</pubDate>
      <guid>https://andres.jaimes.net/38/hombres-g-vs-jason-paradise/</guid>
      <description>&lt;p&gt;A quick note for Hombres G fans… on this video they discuss about Jason’s like on iPad’s. Enjoy it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cómo agregar la fecha al nombre de un fichero en linux o mac</title>
      <link>https://andres.jaimes.net/26/agregar-fecha-al-nombre-de-archivo-en-mac/</link>
      <pubDate>Fri, 05 Aug 2011 00:34:48 +0000</pubDate>
      <guid>https://andres.jaimes.net/26/agregar-fecha-al-nombre-de-archivo-en-mac/</guid>
      <description>&lt;p&gt;Agregar la fecha a un nombre de un fichero desde un script es muy útil, pues te permitirá generar nombres únicos para, por ejemplo, crear una lista de respaldos.&lt;/p&gt;&#xA;&lt;p&gt;Aquí os dejo un script muy sencillo que ejemplifica cómo hacerlo:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/sh&#xA;&#xA;dt=`date +%y%m%d`&#xA;touch ./archivo-$dt&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Este es un programa muy sencillo el cual asigna a la variable “dt” el resultado de ejecutar el comando &lt;code&gt;date +%y%m%d&lt;/code&gt;, el cual devuelve la fecha en formato año, mes y día. Es importante que veais el uso del acento grave (`) para que funcione.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Google&#43;</title>
      <link>https://andres.jaimes.net/10/google-plus/</link>
      <pubDate>Thu, 21 Jul 2011 17:40:00 +0000</pubDate>
      <guid>https://andres.jaimes.net/10/google-plus/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://andres.jaimes.net/wp-content/uploads/sites/2/2011/07/google-plus-logo.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;El día de hoy obtuve una de las codiciadas cuentas en Google+. A primera vista pareciera que estamos tratando con una copia de FaceBook, pues tiene cosas como los mensajes de estado y las fotografías… pero esconde muchas otras más.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Categories</title>
      <link>https://andres.jaimes.net/cats-nav/</link>
      <pubDate>Fri, 10 Jun 2011 12:00:50 +0000</pubDate>
      <guid>https://andres.jaimes.net/cats-nav/</guid>
      <description>&lt;nav class=&#34;cats-nav&#34;&gt;&#xA;  &lt;ul&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/android&#34;&gt;Android &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/apps&#34;&gt;Apps &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/architecture&#34;&gt;Architecture &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/c-plus-plus&#34;&gt;C plus plus &lt;small&gt;(5)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/c-sharp&#34;&gt;C sharp &lt;small&gt;(5)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/c/c&amp;#43;&amp;#43;&#34;&gt;C c &lt;small&gt;(13)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/command-line&#34;&gt;Command line &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/database&#34;&gt;Database &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/databases&#34;&gt;Databases &lt;small&gt;(5)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/delphi&#34;&gt;Delphi &lt;small&gt;(4)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/docker&#34;&gt;Docker &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/dot-net&#34;&gt;Dot net &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/forex&#34;&gt;Forex &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/freebies&#34;&gt;Freebies &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/freebsd&#34;&gt;Freebsd &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/graphic-design&#34;&gt;Graphic design &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/html-/-css&#34;&gt;HTML css &lt;small&gt;(5)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/hugo&#34;&gt;Hugo &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/ios&#34;&gt;Ios &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/it-management&#34;&gt;It management &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/java&#34;&gt;Java &lt;small&gt;(17)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/javascript&#34;&gt;Javascript &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/linux&#34;&gt;Linux &lt;small&gt;(23)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/mac&#34;&gt;MAC &lt;small&gt;(7)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/macos&#34;&gt;Macos &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/microentry&#34;&gt;Microentry &lt;small&gt;(6)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/mobile&#34;&gt;Mobile &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/mql&#34;&gt;Mql &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/music&#34;&gt;Music &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/mysql&#34;&gt;Mysql &lt;small&gt;(4)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/operating-systems&#34;&gt;Operating systems &lt;small&gt;(15)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/oracle-xe&#34;&gt;Oracle xe &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/other&#34;&gt;Other &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/patterns&#34;&gt;Patterns &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/photography&#34;&gt;Photography &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/php&#34;&gt;Php &lt;small&gt;(5)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/postgresql&#34;&gt;Postgresql &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/programming&#34;&gt;Programming &lt;small&gt;(33)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/quotes&#34;&gt;Quotes &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/scala&#34;&gt;Scala &lt;small&gt;(24)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/sin-categor%C3%ADa&#34;&gt;Sin categoría &lt;small&gt;(26)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/uml&#34;&gt;Uml &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/uncategorized&#34;&gt;Uncategorized &lt;small&gt;(5)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/web&#34;&gt;Web &lt;small&gt;(7)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/windows&#34;&gt;Windows &lt;small&gt;(5)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/categories/wordpress&#34;&gt;Wordpress &lt;small&gt;(5)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;  &lt;/ul&gt;&#xA;&lt;/nav&gt;</description>
    </item>
    <item>
      <title>Tags</title>
      <link>https://andres.jaimes.net/tags-nav/</link>
      <pubDate>Fri, 10 Jun 2011 12:00:50 +0000</pubDate>
      <guid>https://andres.jaimes.net/tags-nav/</guid>
      <description>&lt;nav class=&#34;cats-nav&#34;&gt;&#xA;  &lt;ul&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/.net&#34;&gt;.net &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/administration&#34;&gt;Administration &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/ads&#34;&gt;Ads &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/advertisement&#34;&gt;Advertisement &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/akka&#34;&gt;Akka &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/android&#34;&gt;Android &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/api&#34;&gt;API &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/apple&#34;&gt;Apple &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/architecture&#34;&gt;Architecture &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/array&#34;&gt;Array &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/bash&#34;&gt;Bash &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/best-practices&#34;&gt;Best practices &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/blog&#34;&gt;Blog &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/blogging&#34;&gt;Blogging &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/bloop&#34;&gt;Bloop &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/c&#34;&gt;C &lt;small&gt;(8)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/c&amp;#43;&amp;#43;&#34;&gt;C &lt;small&gt;(13)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/c-plus-plus&#34;&gt;C plus plus &lt;small&gt;(6)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/c-sharp&#34;&gt;C sharp &lt;small&gt;(6)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/calvin&#34;&gt;Calvin &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/cartoons&#34;&gt;Cartoons &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/cellphone&#34;&gt;Cellphone &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/cellular&#34;&gt;Cellular &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/centos&#34;&gt;Centos &lt;small&gt;(7)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/command-line&#34;&gt;Command line &lt;small&gt;(13)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/console&#34;&gt;Console &lt;small&gt;(7)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/coursier&#34;&gt;Coursier &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/css&#34;&gt;Css &lt;small&gt;(7)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/css3&#34;&gt;Css3 &lt;small&gt;(5)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/database&#34;&gt;Database &lt;small&gt;(8)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/debian&#34;&gt;Debian &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/debug&#34;&gt;Debug &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/delphi&#34;&gt;Delphi &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/design&#34;&gt;Design &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/dns&#34;&gt;DNS &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/docker&#34;&gt;Docker &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/dos&#34;&gt;Dos &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/download&#34;&gt;Download &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/dynamodb&#34;&gt;Dynamodb &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/error&#34;&gt;Error &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/exchange&#34;&gt;Exchange &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/finance&#34;&gt;Finance &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/finder&#34;&gt;Finder &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/firefox&#34;&gt;Firefox &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/forex&#34;&gt;Forex &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/formats&#34;&gt;Formats &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/freebsd&#34;&gt;Freebsd &lt;small&gt;(4)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/functional-programming&#34;&gt;Functional programming &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/git&#34;&gt;Git &lt;small&gt;(5)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/google&#34;&gt;Google &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/graphic-design&#34;&gt;Graphic design &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/graphics&#34;&gt;Graphics &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/hibernate&#34;&gt;Hibernate &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/hobbes&#34;&gt;Hobbes &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/how-to&#34;&gt;How to &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/howto&#34;&gt;Howto &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/hp&#34;&gt;Hp &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/html&#34;&gt;HTML &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/html5&#34;&gt;Html5 &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/hugo&#34;&gt;Hugo &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/image&#34;&gt;Image &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/install&#34;&gt;Install &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/ios&#34;&gt;Ios &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/ios7&#34;&gt;Ios7 &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/ipad&#34;&gt;Ipad &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/iphone&#34;&gt;Iphone &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/iptables&#34;&gt;Iptables &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/it-management&#34;&gt;It management &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/java&#34;&gt;Java &lt;small&gt;(20)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/javascript&#34;&gt;Javascript &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/jpa&#34;&gt;Jpa &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/jquery&#34;&gt;Jquery &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/laserjet&#34;&gt;Laserjet &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/laws&#34;&gt;Laws &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/linux&#34;&gt;Linux &lt;small&gt;(28)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/low-light&#34;&gt;Low light &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/mac&#34;&gt;MAC &lt;small&gt;(6)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/macos&#34;&gt;Macos &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/metals&#34;&gt;Metals &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/metatrader&#34;&gt;Metatrader &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/mingw&#34;&gt;Mingw &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/mobile&#34;&gt;Mobile &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/module&#34;&gt;Module &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/mongo&#34;&gt;Mongo &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/mongodb&#34;&gt;Mongodb &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/mountain-lion&#34;&gt;Mountain lion &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/mql&#34;&gt;Mql &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/mssql&#34;&gt;Mssql &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/music&#34;&gt;Music &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/mysql&#34;&gt;Mysql &lt;small&gt;(7)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/netbeans&#34;&gt;Netbeans &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/openjdk&#34;&gt;Openjdk &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/oracle&#34;&gt;Oracle &lt;small&gt;(4)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/oracle-xe&#34;&gt;Oracle xe &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/osx&#34;&gt;Osx &lt;small&gt;(11)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/p1102w&#34;&gt;P1102w &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/patterns&#34;&gt;Patterns &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/phone&#34;&gt;Phone &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/photography&#34;&gt;Photography &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/php&#34;&gt;Php &lt;small&gt;(8)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/play-framework&#34;&gt;Play framework &lt;small&gt;(4)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/plugins&#34;&gt;Plugins &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/postgresql&#34;&gt;Postgresql &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/printing&#34;&gt;Printing &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/program&#34;&gt;Program &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/programming&#34;&gt;Programming &lt;small&gt;(26)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/rancher&#34;&gt;Rancher &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/release&#34;&gt;Release &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/resizer&#34;&gt;Resizer &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/rest&#34;&gt;Rest &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/retina-display&#34;&gt;Retina display &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/rules&#34;&gt;Rules &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/scala&#34;&gt;Scala &lt;small&gt;(22)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/scala-basics&#34;&gt;Scala basics &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/server&#34;&gt;Server &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/services&#34;&gt;Services &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/setup&#34;&gt;Setup &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/snippet&#34;&gt;Snippet &lt;small&gt;(7)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/software-architecture&#34;&gt;Software architecture &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/solr&#34;&gt;Solr &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/spam&#34;&gt;Spam &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/sql&#34;&gt;SQL &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/sway&#34;&gt;Sway &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/terminal&#34;&gt;Terminal &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/text-search&#34;&gt;Text search &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/threads&#34;&gt;Threads &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/tips&#34;&gt;Tips &lt;small&gt;(4)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/tomcat&#34;&gt;Tomcat &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/tricks&#34;&gt;Tricks &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/tutorial&#34;&gt;Tutorial &lt;small&gt;(6)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/ubuntu&#34;&gt;Ubuntu &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/unix&#34;&gt;Unix &lt;small&gt;(9)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/vi&#34;&gt;Vi &lt;small&gt;(2)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/video&#34;&gt;Video &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/visual-c&amp;#43;&amp;#43;&#34;&gt;Visual c &lt;small&gt;(3)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/visual-studio&#34;&gt;Visual studio &lt;small&gt;(5)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/web&#34;&gt;Web &lt;small&gt;(15)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/windows&#34;&gt;Windows &lt;small&gt;(17)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/witty&#34;&gt;Witty &lt;small&gt;(5)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/wordpress&#34;&gt;Wordpress &lt;small&gt;(7)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/wt&#34;&gt;Wt &lt;small&gt;(5)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/xcode&#34;&gt;Xcode &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;    &lt;li&gt;&lt;a href=&#34;https://andres.jaimes.net/tags/youtube&#34;&gt;Youtube &lt;small&gt;(1)&lt;/small&gt;&lt;/a&gt;&lt;/li&gt;&#xA;    &#xA;  &lt;/ul&gt;&#xA;&lt;/nav&gt;</description>
    </item>
    <item>
      <title>No more spam…</title>
      <link>https://andres.jaimes.net/5/no-more-spam/</link>
      <pubDate>Tue, 07 Jun 2011 17:02:53 +0000</pubDate>
      <guid>https://andres.jaimes.net/5/no-more-spam/</guid>
      <description>&lt;p&gt;Ok spammers, I’m tired.&lt;/p&gt;&#xA;&lt;p&gt;During the last weeks  I was getting about 100 spam messages per hour. That was very difficult to control. So I decided to take that as an opportunity to upgrade my server. Now my website runs on the latest WordPress engine and I have also installed some new antispam plugins.&lt;/p&gt;&#xA;&lt;p&gt;All the website contents will be updated and uploaded during this month.&lt;/p&gt;&#xA;&lt;p&gt;I appreciate your patience while I finish applying this upgrade.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Comments have been temporarly disabled…</title>
      <link>https://andres.jaimes.net/173/comments-have-been-temporarly-disabled/</link>
      <pubDate>Fri, 13 May 2011 19:45:32 +0000</pubDate>
      <guid>https://andres.jaimes.net/173/comments-have-been-temporarly-disabled/</guid>
      <description>&lt;p&gt;Sorry everyone, but I was getting the incredible quantity of 60 spam comments per hour… I will reopen them as soon as I get a good tool to fight spam…&lt;/p&gt;&#xA;&lt;p&gt;Thanks!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java, brigther than ever</title>
      <link>https://andres.jaimes.net/600/java-brigther-than-ever/</link>
      <pubDate>Thu, 16 Dec 2010 02:38:34 +0000</pubDate>
      <guid>https://andres.jaimes.net/600/java-brigther-than-ever/</guid>
      <description>&lt;p&gt;Java, the programming language for many of us, is shinning more than ever! Just see how Android (Google’s operating system) uses it for its applications:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Android_%28operating_system%29&#34; title=&#34;http://en.wikipedia.org/wiki/Android_%28operating_system%29&#34;&gt;http://en.wikipedia.org/wiki/Android_%28operating_system%29&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows Live Writer? nah… Adobe Contribute</title>
      <link>https://andres.jaimes.net/594/windows-live-writer-nah-adobe-contribute/</link>
      <pubDate>Sat, 20 Nov 2010 16:38:38 +0000</pubDate>
      <guid>https://andres.jaimes.net/594/windows-live-writer-nah-adobe-contribute/</guid>
      <description>&lt;p&gt;Obsesed with looking for a good blogging tool on the web and reading a big list of complaints for the lack of a good tool for mac users, I didn’t realize I had had one for a long time on my computer: &lt;strong&gt;Adobe Contribute&lt;/strong&gt;. Most people talk about Microsoft’s Windows Live Writer and how to run it on a Mac, but forget about this good option that runs natively on it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to access a Web service from a C# Desktop Application</title>
      <link>https://andres.jaimes.net/581/how-to-access-a-web-service-from-a-c-desktop-application/</link>
      <pubDate>Tue, 09 Feb 2010 19:56:17 +0000</pubDate>
      <guid>https://andres.jaimes.net/581/how-to-access-a-web-service-from-a-c-desktop-application/</guid>
      <description>&lt;p&gt;This project will teach you how to create a C# Desktop Application that uses a Web Service as its backend. You will need &lt;!-- raw HTML omitted --&gt;Visual Web Developer Express and Visual C# Express&lt;!-- raw HTML omitted --&gt;.&#xA;&lt;img src=&#34;https://andres.jaimes.net/files/2010/02/ws8-thumb.png&#34; alt=&#34;ws8&#34;&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;step-1-creating-the-web-service&#34;&gt;Step 1: Creating the Web Service&lt;/h2&gt;&#xA;&lt;p&gt;Open &lt;strong&gt;Visual Web Developer&lt;/strong&gt; and go to &lt;strong&gt;File&lt;/strong&gt; &amp;gt; &lt;strong&gt;New Project&lt;/strong&gt;. Under &lt;strong&gt;Project Types&lt;/strong&gt; select &lt;strong&gt;Visual C#&lt;/strong&gt; &amp;gt; &lt;strong&gt;Web&lt;/strong&gt;. Under Templates select &lt;strong&gt;ASP.NET Web Service Application&lt;/strong&gt;. Press the &lt;strong&gt;Ok&lt;/strong&gt; button.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ASP.NET Tips &amp; Tricks</title>
      <link>https://andres.jaimes.net/aspnet-tips-tricks/</link>
      <pubDate>Tue, 18 Aug 2009 14:50:51 +0000</pubDate>
      <guid>https://andres.jaimes.net/aspnet-tips-tricks/</guid>
      <description>&lt;p&gt;&lt;strong&gt;How to get the user name in a web app&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Four steps to achieve it:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Use the following code to get the user name in your application:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;string user = User.Identity.Name.ToString();&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;Modify your web.config file to include the &lt;em&gt;identity&lt;/em&gt; and the &lt;em&gt;authentication&lt;/em&gt; tags:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;system.web&amp;gt;        &#xA;        &amp;lt;identity impersonate=&amp;#34;true&amp;#34; /&amp;gt;&#xA;        &amp;lt;authentication mode=&amp;#34;Windows&amp;#34;/&amp;gt;&#xA;&amp;lt;/system.web&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;In IIS right click your application and select &lt;em&gt;Properties&lt;/em&gt;. Go to the &lt;em&gt;Directory Security&lt;/em&gt; tab. Click &lt;em&gt;Edit&lt;/em&gt; under &lt;em&gt;Authentication and Access Control&lt;/em&gt;. &lt;strong&gt;Uncheck&lt;/strong&gt; &lt;em&gt;Enable anonymous access&lt;/em&gt; and &lt;strong&gt;check&lt;/strong&gt; &lt;em&gt;Integrated Windows authentication&lt;/em&gt;. Click Ok to save your changes.&lt;/li&gt;&#xA;&lt;li&gt;Open Windows Explorer, go to your application folder and modify permissions to allow your users (and not the IIS anonymous user) access your application.&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>asp.net tips and tricks</title>
      <link>https://andres.jaimes.net/549/aspnet-tips-and-tricks/</link>
      <pubDate>Tue, 18 Aug 2009 14:49:24 +0000</pubDate>
      <guid>https://andres.jaimes.net/549/aspnet-tips-and-tricks/</guid>
      <description>&lt;p&gt;&lt;strong&gt;How to get the username in a web app&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Four steps to achieve it:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Use the following code to get the username in your application:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;string user = User.Identity.Name.ToString();&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;2&#34;&gt;&#xA;&lt;li&gt;Modify your web.config file to include the &lt;em&gt;identity&lt;/em&gt; and the &lt;em&gt;authentication&lt;/em&gt; tags:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;system.web&amp;gt;        &#xA;        &amp;lt;identity impersonate=&amp;#34;true&amp;#34; /&amp;gt;&#xA;        &amp;lt;authentication mode=&amp;#34;Windows&amp;#34;/&amp;gt;&#xA;&amp;lt;/system.web&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;In IIS right click your application and select &lt;em&gt;Properties&lt;/em&gt;. Go to the &lt;em&gt;Directory Security&lt;/em&gt; tab. Click &lt;em&gt;Edit&lt;/em&gt; under &lt;em&gt;Authentication and Access Control&lt;/em&gt;. &lt;strong&gt;Uncheck&lt;/strong&gt; &lt;em&gt;Enable anonymous access&lt;/em&gt; and &lt;strong&gt;check&lt;/strong&gt; &lt;em&gt;Integrated Windows authentication&lt;/em&gt;. Click Ok to save your changes.&lt;/li&gt;&#xA;&lt;li&gt;Open Windows Explorer, go to your application folder and modify permissions to allow your users (and not the IIS anonymous user) access your application.&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Is beauty better than functional?</title>
      <link>https://andres.jaimes.net/540/is-beauty-better-than-functional/</link>
      <pubDate>Sun, 08 Mar 2009 04:42:13 +0000</pubDate>
      <guid>https://andres.jaimes.net/540/is-beauty-better-than-functional/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://andres.jaimes.net/files/2009/03/stripprint.jpg&#34; alt=&#34;Dilbert&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;what do you think?&lt;/p&gt;&#xA;&lt;p&gt;how many times we find ourselves trying to sell a good project that, because of its ugly look, ends in the garbage bin? Do you think an engineer should have some lessons on aesthetics? art? or leave that right minded work to the guy who used to be in ballet lessons at the university?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tabs, Shortcuts and Internet Explorer</title>
      <link>https://andres.jaimes.net/531/tabs-shortcuts-and-internet-explorer/</link>
      <pubDate>Thu, 05 Feb 2009 21:34:50 +0000</pubDate>
      <guid>https://andres.jaimes.net/531/tabs-shortcuts-and-internet-explorer/</guid>
      <description>&lt;p&gt;Have you read the information that shows up when you click the “new tab” button in IE? I think I did it once when I tried for the first time this tabbed IE, and never took a look at it again. Until yesterday. I just read it and surprised me because it contains a useful list of shortcuts for managing tabs. Many of them remind me the way &lt;!-- raw HTML omitted --&gt;Opera&lt;!-- raw HTML omitted --&gt; works, but there are a few new.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About this new year…</title>
      <link>https://andres.jaimes.net/528/year2009/</link>
      <pubDate>Mon, 12 Jan 2009 18:26:21 +0000</pubDate>
      <guid>https://andres.jaimes.net/528/year2009/</guid>
      <description>&lt;p&gt;Hello all.&lt;/p&gt;&#xA;&lt;p&gt;Since November I have been using the Microsoft 2008 Express Suite. Nice suite, but a big change since these last months I was only on the Java side. C# is one of those languages you can easily fall in love with.&lt;/p&gt;&#xA;&lt;p&gt;Most of the applications I’m developing are for web, and it has been a great opportunity to use some of the DHTML libraries I’ve found on the web to create those new fancy interfaces. From accordions to drag and drop everything seemed so nice… until I faced the challenge to create a full Outlook-like calendar. I have been three or four days testing different libraries, and I’m afraid I will have to create it from the ground up. I’m very lazy for JavaScript programming… and specially if I have to integrate it with an existing library, including objects and events and all that stuff… uff, anyway… I think it’s time to start programming… or pushing the creative neuron further… 😛&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dilbert</title>
      <link>https://andres.jaimes.net/526/dilbert/</link>
      <pubDate>Fri, 17 Oct 2008 16:04:11 +0000</pubDate>
      <guid>https://andres.jaimes.net/526/dilbert/</guid>
      <description>&lt;p&gt;I love Dilbert!&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://andres.jaimes.net/files/2008/10/28236_strip_print.gif&#34;&gt;&lt;img src=&#34;https://andres.jaimes.net/files/2008/10/28236_strip_print.gif&#34; alt=&#34;Dilbert&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Firefox cannot load &#34;localhost&#34;, while IE can</title>
      <link>https://andres.jaimes.net/525/firefox-cannot-load-localhost-while-ie-can/</link>
      <pubDate>Sun, 24 Aug 2008 17:56:55 +0000</pubDate>
      <guid>https://andres.jaimes.net/525/firefox-cannot-load-localhost-while-ie-can/</guid>
      <description>&lt;p&gt;I installed IIS on a reformatted computer and when trying to access the home page using Firefox I was asked for my username and password. After many tries and permission checkings (check this first!) I used IE and it worked€¦ I googled a little bit and found this solution:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Open up Firefox and type &lt;strong&gt;about:config&lt;/strong&gt; in the url field&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;In the Filter Type in &lt;strong&gt;ntlm&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Double click €œ&lt;strong&gt;network.automatic-ntlm-auth.trusted-uris&lt;/strong&gt;€ and type in &lt;strong&gt;localhost&lt;/strong&gt; and hit enter&lt;/p&gt;</description>
    </item>
    <item>
      <title>Windows Tips</title>
      <link>https://andres.jaimes.net/windows-tips/</link>
      <pubDate>Sat, 23 Aug 2008 22:01:23 +0000</pubDate>
      <guid>https://andres.jaimes.net/windows-tips/</guid>
      <description>&lt;h1 id=&#34;security-tips-8211-how-to-turn-off-autoplay&#34;&gt;Security Tips – How to turn off autoplay&lt;/h1&gt;&#xA;&lt;p&gt;Disc autoplay is a Windows feature that lets you execute a disc’s content when you insert it. Though this can be comfy, it presents a security threat for our systems since computer viri may reside in discs infecting all computers as they are inserted. To turn off the autoplay feature:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Go to Start &amp;gt; Run and type:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;gpedit.msc&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;Press the Run button.&amp;lt;/li&amp;gt; &#xA;&#xA;  * A window will pop-up. Go to Computer Configuration &amp;gt; Administrative Templates &amp;gt; System and change to Enable the _Turn off Autoplay_ option: &#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://andres.jaimes.net/files/2008/08/autoplayoff.png&#34; alt=&#34;Autoplay off&#34;&gt; &lt;!-- raw HTML omitted --&gt; &lt;!-- raw HTML omitted --&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing a PDF print server on Ubuntu Server</title>
      <link>https://andres.jaimes.net/1334/installing-pdf-print-server-on-ubuntu/</link>
      <pubDate>Sat, 09 Aug 2008 03:09:03 +0000</pubDate>
      <guid>https://andres.jaimes.net/1334/installing-pdf-print-server-on-ubuntu/</guid>
      <description>&lt;p&gt;This article was originally written for Ubuntu 7, but we now know it works for Ubuntu 10 as well. Thanks Shooda!&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;To start, install the CUPS service and CUPS-PDF files:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre&gt;&lt;code&gt;sudo apt-get install cupsys sudo apt-get install cups-pdf&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Now configure CUPS to allow remote administration: &lt;code&gt;sudo nano /etc/cups/cupsd.conf&lt;/code&gt; Modify the port where CUPS listens from:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre&gt;&lt;code&gt;Listen localhost:631&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;to:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;Listen 631&#xA;Listen /var/run/cups/cups.sock&#xA;Listen 192.168.1.1:9100&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The 192.168.1.1:9100 address allows you to connect to CUPS using the server’s network interface (192.168.1.1) on port 9100. I chose that port because that is the default port for HP printers (you can use the default port 631). Also modify these options to match the ones here:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Server Upgrade</title>
      <link>https://andres.jaimes.net/457/server-upgrade/</link>
      <pubDate>Mon, 26 May 2008 21:46:56 +0000</pubDate>
      <guid>https://andres.jaimes.net/457/server-upgrade/</guid>
      <description>&lt;p&gt;Last sunday I upgraded my website software… phew!, It was a long task, but final result was very pleasant :-). Right now it’s running on WordPress 1.5. Very nice. One major change was the use of subdomains instead of subdirectories. I pretend to keep all blogs cleaner by putting each one in its own subdomain space. The price is some broken links on the net ;-)…&lt;/p&gt;</description>
    </item>
    <item>
      <title>My papaya tree</title>
      <link>https://andres.jaimes.net/488/my-papaya-tree/</link>
      <pubDate>Sun, 04 May 2008 22:28:06 +0000</pubDate>
      <guid>https://andres.jaimes.net/488/my-papaya-tree/</guid>
      <description>&lt;p&gt;This tree is in my garden… yummi, yummi&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://andres.jaimes.net/files/2008/05/papaya-tree.jpg&#34; alt=&#34;Papaya tree&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Logo contest and Xara</title>
      <link>https://andres.jaimes.net/487/a-logo-using-xara/</link>
      <pubDate>Sun, 04 May 2008 22:22:14 +0000</pubDate>
      <guid>https://andres.jaimes.net/487/a-logo-using-xara/</guid>
      <description>&lt;p&gt;Two months ago I designed this logo for an internal company product contest. I didn’t win, but I learned a lot. Xara made the work very simple, and well… hope you like it as much as I do…&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://andres.jaimes.net/files/2008/05/magellan.png&#34; alt=&#34;Magellan Logo&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu 8.04</title>
      <link>https://andres.jaimes.net/486/ubuntu-804/</link>
      <pubDate>Sun, 04 May 2008 22:05:31 +0000</pubDate>
      <guid>https://andres.jaimes.net/486/ubuntu-804/</guid>
      <description>&lt;p&gt;Ubuntu 8.04 was released last week. This release includes features like:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Firefox 3 Beta 5: Web browser&lt;/li&gt;&#xA;&lt;li&gt;Desktop Effects enabled by default: Window shadows, wobbling, animations, desktop on a 3D cube, transparency and a lot more.&lt;/li&gt;&#xA;&lt;li&gt;Gnome 2.22: Window manager&lt;/li&gt;&#xA;&lt;li&gt;Open Office 2.4: Office productivity suite.&lt;/li&gt;&#xA;&lt;li&gt;PDF printer… and a lot more.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://andres.jaimes.net/files/2008/05/ubuntu8.png&#34;&gt;&lt;img src=&#34;https://andres.jaimes.net/files/2008/05/ubuntu8.png&#34; alt=&#34;Ubuntu 8 Desktop&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;More information on &lt;a href=&#34;http://ubuntu.com&#34;&gt;ubuntu.com&lt;/a&gt; and &lt;a href=&#34;http://library.gnome.org/misc/release-notes/2.22/&#34;&gt;gnome.org&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>On Polyominoes</title>
      <link>https://andres.jaimes.net/485/on-polyominoes/</link>
      <pubDate>Sun, 04 May 2008 21:17:48 +0000</pubDate>
      <guid>https://andres.jaimes.net/485/on-polyominoes/</guid>
      <description>&lt;p&gt;Three weeks ago I had to work on polyominoes for a final project. Since I had to program an enumeration quickly, I wanted to find a simple algorithm to do it. Well, my search was hard. I barely found information on enumeration algorithms and read the work of many people including Redelmeier, Knuth and Ares RibÃ³. I chose to go the Redelmeier way because of the short time to complete the task. Here you can find part of my work, as well as some documents that explain more on this topic.&lt;/p&gt;</description>
    </item>
    <item>
      <title>It’s official…</title>
      <link>https://andres.jaimes.net/1209/its-official/</link>
      <pubDate>Sun, 27 Apr 2008 19:04:25 +0000</pubDate>
      <guid>https://andres.jaimes.net/1209/its-official/</guid>
      <description>&lt;p&gt;Ok, first time was fun, but now I hate it… I have deleted about 1000 spam comments in about a week… suggestions accepted…&lt;/p&gt;</description>
    </item>
    <item>
      <title>117 comments…</title>
      <link>https://andres.jaimes.net/1208/117-comments/</link>
      <pubDate>Mon, 21 Apr 2008 19:39:34 +0000</pubDate>
      <guid>https://andres.jaimes.net/1208/117-comments/</guid>
      <description>&lt;p&gt;Hey!, today while checking the comments for my site I found the amazing quantity of 117 comments… all of them spam! hahaha… this is a new record!&lt;/p&gt;</description>
    </item>
    <item>
      <title>First rain since september</title>
      <link>https://andres.jaimes.net/1207/first-rain-since-september/</link>
      <pubDate>Mon, 14 Apr 2008 14:42:15 +0000</pubDate>
      <guid>https://andres.jaimes.net/1207/first-rain-since-september/</guid>
      <description>&lt;p&gt;Finally, after six months it was so heavy. This is my garden covered by hail.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://andres.jaimes.net/files/2008/06/firstrain.jpg&#34; alt=&#34;First Rain&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Solaris</title>
      <link>https://andres.jaimes.net/solaris/</link>
      <pubDate>Tue, 26 Feb 2008 04:18:36 +0000</pubDate>
      <guid>https://andres.jaimes.net/solaris/</guid>
      <description>&lt;h1 id=&#34;how-to-change-the-screen-resolution-of-solaris-10-running-in-vmware&#34;&gt;How to change the screen resolution of Solaris 10 running in vmware&lt;/h1&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;First you must install the vmware tools on your virtual machine.&lt;/li&gt;&#xA;&lt;li&gt;Edit your xorg.conf file:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;vi /etc/X11/xorg.conf&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;3&#34;&gt;&#xA;&lt;li&gt;Under the section “Monitor” put a number sign (#) in front of all those screen resolutions you don’t want.&lt;/li&gt;&#xA;&lt;li&gt;Save your file, log off and log on again.&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>What The GIMP needs</title>
      <link>https://andres.jaimes.net/479/what-the-gimp-needs/</link>
      <pubDate>Sun, 10 Feb 2008 21:55:03 +0000</pubDate>
      <guid>https://andres.jaimes.net/479/what-the-gimp-needs/</guid>
      <description>&lt;p&gt;Photoshop is one of those so popular applications often missed in the Linux world. Ok, ok, the GIMP is there, but you have to learn to use it. Even moving a simple selection around becomes a hard to accomplish task. This makes me think, about all that people who has spent so many hours learning Photoshop. The solution: programming an interface very similar to Photoshop. And I mean, get the same keyboard shortcuts, menus, get an MDI interface, arrange tools in a similar way, etc.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Oracle XE on Ubuntu</title>
      <link>https://andres.jaimes.net/478/oracle-xe-on-ubuntu/</link>
      <pubDate>Sat, 09 Feb 2008 02:33:15 +0000</pubDate>
      <guid>https://andres.jaimes.net/478/oracle-xe-on-ubuntu/</guid>
      <description>&lt;p&gt;Do you want to know how to set up Oracle? It is pretty simple and this tutorial will take you step by step through the installation process.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://andres.jaimes.net/oracle-xe/&#34;&gt;Installing Oracle XE on Ubuntu&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Installing Oracle XE on Ubuntu</title>
      <link>https://andres.jaimes.net/oracle-xe/</link>
      <pubDate>Sat, 09 Feb 2008 02:24:06 +0000</pubDate>
      <guid>https://andres.jaimes.net/oracle-xe/</guid>
      <description>&lt;p&gt;My first encounter with Oracle was back in 2001. It was installed on a Windows 2k test server. We worked in a one year long project and I had enough time to learn about it. I just remember having encountered feelings. SQL was very pleasant: the CASE keyword was not part of my daily queries so I found it extremely useful to do rows to columns conversions. Text functions helped us implement all our crazy ideas for a search engine. And migration to production (a Solaris server) was completely painless. On the other side, it was a resource hog: running Oracle was the only thing test server could execute at a time and getting a working TNS configuration was a hard task. After that, I never considered again Oracle for my personal projects, because of its high price and hardware requirements. Until now.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Back from the hospital…</title>
      <link>https://andres.jaimes.net/476/back-from-the-hospital/</link>
      <pubDate>Sun, 03 Feb 2008 17:13:58 +0000</pubDate>
      <guid>https://andres.jaimes.net/476/back-from-the-hospital/</guid>
      <description>&lt;p&gt;Hey there!, I’m back after a week in the hospital. Must say I really missed the Internet. My recommendation: don’t skip any meal! Always make time to eat and enjoy every food. According to some Japanese ideals, you should enjoy each bite and let your body shake to the flavors mix. After all, this week was just a reminder to keep my life in balance…&lt;/p&gt;</description>
    </item>
    <item>
      <title>WebDAV Server is up and running!</title>
      <link>https://andres.jaimes.net/475/webdav-server-is-up-and-running/</link>
      <pubDate>Wed, 16 Jan 2008 00:49:04 +0000</pubDate>
      <guid>https://andres.jaimes.net/475/webdav-server-is-up-and-running/</guid>
      <description>&lt;p&gt;I’m really excited about WebDAV! It just works! This is a tutorial I wrote:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://andres.jaimes.net/setting-up-a-webdav-server/&#34;&gt;https://andres.jaimes.net/setting-up-a-webdav-server/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Some minor issues are pending, but I’ll keep you posted. &lt;/p&gt;&#xA;&lt;p&gt;Happy new year!!!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up a WebDAV server</title>
      <link>https://andres.jaimes.net/setting-up-a-webdav-server/</link>
      <pubDate>Wed, 16 Jan 2008 00:18:37 +0000</pubDate>
      <guid>https://andres.jaimes.net/setting-up-a-webdav-server/</guid>
      <description>&lt;p&gt;Do you want to install a WevDAV server? This article is for you.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-is-webdav&#34;&gt;What is WebDAV?&lt;/h2&gt;&#xA;&lt;p&gt;WebDAV is a protocol that lets you read and write files on the web almost as if you were accessing local files. You can create folders and files, as well as rename them, delete them and perform most common operations on them.&lt;/p&gt;&#xA;&lt;p&gt;It stands for Web-based Distributed Authoring and Versioning. Since WebDAV is an extension to the HTTP protocol, you can still use features like security during file transfers (via HTTPS) or password protection on files and folders on the server.&lt;/p&gt;</description>
    </item>
    <item>
      <title>UML: Association, Aggregation and Composition</title>
      <link>https://andres.jaimes.net/474/uml-association-aggregation-and-composition/</link>
      <pubDate>Tue, 11 Dec 2007 03:33:19 +0000</pubDate>
      <guid>https://andres.jaimes.net/474/uml-association-aggregation-and-composition/</guid>
      <description>&lt;p&gt;This seems like the neverending story, and because I’m tired of it I want to share my understanding:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Association&lt;/strong&gt;: Used when one instance should send a message to another instance. There’s no a whole / part relationship. In Java this can be an instance calling another instance’s methods. Examples of this can be a Customer and its persistance mechanism (DAO – data access object). They just send messages between each other.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Aggregation&lt;/strong&gt;: Used to represent a whole / part relationship. The creation and destruction of child objects is not controlled by their parent. For example, a Binder and its sheets. You can destroy your binder and save your sheets for later usage… or for another binder.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Composition&lt;/strong&gt;: Like an aggregation but the life span of child objects is controlled by their parent. For example, a Notebook and its sheets… If you create a notebook, you need to create sheets to fill it with. If you destroy your notebook you will destroy all your sheets. You know you have a composition when you no longer need the child objects once the parent has been destroyed.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Quotes…</title>
      <link>https://andres.jaimes.net/quotes/</link>
      <pubDate>Fri, 07 Dec 2007 20:26:28 +0000</pubDate>
      <guid>https://andres.jaimes.net/quotes/</guid>
      <description>&lt;p&gt;The following are some nice quotes I’ve got from fortune cookies or my mind:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;You can have, do or be whatever you want&lt;/li&gt;&#xA;&lt;li&gt;Good sense is the master of human life&lt;/li&gt;&#xA;&lt;li&gt;All decisions you make today will be most fortunate&lt;/li&gt;&#xA;&lt;li&gt;You will be fortunate in everything you put your hands to&lt;/li&gt;&#xA;&lt;li&gt;Today&amp;rsquo;s hardship leads to rewards in later life&lt;/li&gt;&#xA;&lt;li&gt;Make a wish, it might come true&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;and for my spanish readers, here they are:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Oracle XE &amp; PHP</title>
      <link>https://andres.jaimes.net/472/oracle-xe-php/</link>
      <pubDate>Tue, 04 Dec 2007 23:44:52 +0000</pubDate>
      <guid>https://andres.jaimes.net/472/oracle-xe-php/</guid>
      <description>&lt;p&gt;Have you ever tried to access an Oracle database from PHP? Well, if you are a newbie (like me) this is a great manual that will take you from PHP compilation to XML generated results:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Download&lt;/strong&gt;: &lt;a href=&#34;http://jaimes.net/morefiles/oracle-php-manual.pdf&#34; title=&#34;The Underground PHP and Oracle Manual&#34;&gt;The Underground PHP and Oracle Manual&lt;/a&gt;&lt;br&gt;&#xA;By Christopher Jones and Alison Holloway&lt;/p&gt;&#xA;&lt;p&gt;The book includes:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;PHP Oracle Extensions&lt;/li&gt;&#xA;&lt;li&gt;Installing Oracle Database 10g Express Edition&lt;/li&gt;&#xA;&lt;li&gt;Using Oracle Database 10g&lt;/li&gt;&#xA;&lt;li&gt;Installing Apache HTTP Server&lt;/li&gt;&#xA;&lt;li&gt;Installing PHP&lt;/li&gt;&#xA;&lt;li&gt;Connecting to Oracle Using OCI8&lt;/li&gt;&#xA;&lt;li&gt;Executing SQL Statements with OCI8&lt;/li&gt;&#xA;&lt;li&gt;Using PL/SQL with OCI8&lt;/li&gt;&#xA;&lt;li&gt;and much more…&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>PHP</title>
      <link>https://andres.jaimes.net/php/</link>
      <pubDate>Fri, 30 Nov 2007 22:36:58 +0000</pubDate>
      <guid>https://andres.jaimes.net/php/</guid>
      <description>&lt;h1 id=&#34;connecting-to-a-local-oracle-database&#34;&gt;Connecting to a Local Oracle Database&lt;/h1&gt;&#xA;&lt;p&gt;This is a small but useful example:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;?php&#xA;$c = oci_connect(&amp;#39;hr&amp;#39;, &amp;#39;hr&amp;#39;, &amp;#39;//localhost/XE&amp;#39;);&#xA;$s = oci_parse($c, &amp;#39;select city from locations&amp;#39;);&#xA;oci_execute($s);&#xA;while ($res = oci_fetch_array($s)) {&#xA;    echo $res[&amp;#39;CITY&amp;#39;] . &amp;#34;&amp;lt;br&amp;gt;&amp;#34;;&#xA;}&#xA;oci_close($c);&#xA;?&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Prior to use this example you must enable the &lt;strong&gt;hr&lt;/strong&gt; user. To learn how to configure PHP to access Oracle databases check my &lt;a href=&#34;https://andres.jaimes.net/linux-console/&#34; title=&#34;Linux Console Page&#34;&gt;Linux Console page&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Source: &lt;a href=&#34;http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf&#34;&gt;http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu 7.10 Released</title>
      <link>https://andres.jaimes.net/470/ubuntu-710-released/</link>
      <pubDate>Tue, 06 Nov 2007 22:11:53 +0000</pubDate>
      <guid>https://andres.jaimes.net/470/ubuntu-710-released/</guid>
      <description>&lt;p&gt;Among others, this new release of Ubuntu features:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;3D Screen effects enabled by default: This is soooo cool! Plus, right click on your desktop, select Change Desktop Background, select Visual Effects and click on Extra, now go move a Window.&lt;/li&gt;&#xA;&lt;li&gt;Themes, backgrounds, fonts, toolbars and visual effects have all been consolidated into a single form.&lt;/li&gt;&#xA;&lt;li&gt;Desktop search: Quick search all your files, web, email, etc.&lt;/li&gt;&#xA;&lt;li&gt;Pidgin: New name for the Gaim Internet Messenger, it features more icons 😉 and MSN icons are now shown for all your contacts.&lt;/li&gt;&#xA;&lt;li&gt;User Switch button: Just click on it and switch among mom, dad or kids!&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Got Web 2.0?</title>
      <link>https://andres.jaimes.net/469/got-web-20/</link>
      <pubDate>Wed, 22 Aug 2007 23:03:47 +0000</pubDate>
      <guid>https://andres.jaimes.net/469/got-web-20/</guid>
      <description>&lt;p&gt;Ajax Hacks takes you step by step through an 80 tips journey going from the very basics – how to GET or POST – to advanced topics like performance tuning, caching and web services interaction.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://andres.jaimes.net/files/2008/06/book1.jpg&#34; alt=&#34;Ajax Hacks&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;AJAX Hacks by Bruce Perry&lt;br&gt;&#xA;ISBN: 0-596-10169-4&lt;/p&gt;</description>
    </item>
    <item>
      <title>Raise your hand!</title>
      <link>https://andres.jaimes.net/468/raise-your-hand/</link>
      <pubDate>Mon, 20 Aug 2007 19:34:15 +0000</pubDate>
      <guid>https://andres.jaimes.net/468/raise-your-hand/</guid>
      <description>&lt;p&gt;Two days ago, while surfing a gov’s page, I got stuck at the very last step of a report generator. I right clicked the page, looked for a link and see the problem: an &lt;!-- raw HTML omitted --&gt; tag with a &lt;em&gt;classid&lt;/em&gt; parameter. That object referenced a PDF file. And because the problem could be fixed by adding a simple link, I decided to give them a call. A lady answered the phone and listened carefully to my request. Kindly accepted to pass my suggestion to the IT department, where an IT Specialist would call me back. Very easy huh? So, why I had not tried that before? How many websites in the world, eager to get fixed, to attract new viewers, are just wating for a call? I’m sure many people do it, but from now on, guys count on me. I want to add my vote so all my favorite websites work on my favorite operating system. The more we are, the easier things will change. We’re just waiting for you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Skype</title>
      <link>https://andres.jaimes.net/skype/</link>
      <pubDate>Tue, 07 Aug 2007 17:23:07 +0000</pubDate>
      <guid>https://andres.jaimes.net/skype/</guid>
      <description>&lt;h1 id=&#34;how-to-install-skype-in-ubuntu&#34;&gt;How to Install Skype in Ubuntu&lt;/h1&gt;&#xA;&lt;p&gt;I just downloaded it and have to tell you it works great.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Download installer from Skype website&lt;/li&gt;&#xA;&lt;li&gt;Double click and install downloaded file (you will need admin privileges)&lt;/li&gt;&#xA;&lt;li&gt;Once installed you will find it under Applications -&amp;gt; Internet&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;If you get a “Problem with Audio Playback” message when doing a Test Call:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;In Skype, go to Options -&amp;gt; Sound Devices and change “Sound Out” to something else than “Default device”, in my case I selected VIA 8237. &lt;strong&gt;Important&lt;/strong&gt;: before changing this option when I pushed the “Make a test sound” button I could hear the test sound, after changing to VIA 8237 that button stopped working, but Skype calls got fixed.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Something else you might want to check are your audio settings. The Volume Control located on the upper right corner of the screen by default controls master volume. If you want to adjust you microphone’s volume from there do this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Interesting Facts</title>
      <link>https://andres.jaimes.net/interesting-facts/</link>
      <pubDate>Mon, 23 Jul 2007 20:13:41 +0000</pubDate>
      <guid>https://andres.jaimes.net/interesting-facts/</guid>
      <description>&lt;h3 id=&#34;lastname-jaimes&#34;&gt;Lastname: Jaimes&lt;/h3&gt;&#xA;&lt;p&gt;Did you know…&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Jaimes is patronymic from the spanish personal name Jaime?&lt;/li&gt;&#xA;&lt;li&gt;Most Jaimes in the U.S. live in Texas?&lt;/li&gt;&#xA;&lt;li&gt;Top five departure places to the U.S. are Germany, Sweden, Venezuela, Preussen and Ireland?&lt;/li&gt;&#xA;&lt;li&gt;Oldest immigration record dates from Aug 20, 1872 and belongs to Marie C. Jaimes, who was born in Germany and departed to the U.S. from Liverpool, England?&lt;/li&gt;&#xA;&lt;li&gt;Life expectancy for Jaimes is 50 years? (20 less than the average)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Source: &lt;a href=&#34;http://www.ancestry.com/learn/facts/Fact.aspx?&amp;amp;fid=7&amp;amp;ln=jaimes&amp;amp;fn=&#34; title=&#34;Source&#34;&gt;http://www.ancestry.com/learn/facts/Fact.aspx?&amp;amp;fid=7&amp;amp;ln=jaimes&amp;amp;fn=&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux Console</title>
      <link>https://andres.jaimes.net/linux-console/</link>
      <pubDate>Mon, 23 Jul 2007 19:45:18 +0000</pubDate>
      <guid>https://andres.jaimes.net/linux-console/</guid>
      <description>&lt;h1 id=&#34;update-your-computer&#34;&gt;Update your computer&lt;/h1&gt;&#xA;&lt;p&gt;You can update your computer from the console by executing the following commands:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;apt-get update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;2&lt;/span&gt;&lt;span&gt;apt-get upgrade&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;installing-a-pdf-print-server-on-ubuntu-7-server&#34;&gt;Installing a PDF print server on Ubuntu 7 Server&lt;/h1&gt;&#xA;&lt;p&gt;This document is too long to be here, so I moved it here: &lt;a href=&#34;https://andres.jaimes.net/1334/installing-pdf-print-server-on-ubuntu/&#34;&gt;Installing a PDF print server on Ubuntu 7 Server&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;iso-images&#34;&gt;ISO images&lt;/h1&gt;&#xA;&lt;p&gt;How to create an iso image:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:2;-o-tab-size:2;tab-size:2;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34;&gt;1&lt;/span&gt;&lt;span&gt;mkisofs -r -l -o dvd.iso source-folder/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;How to burn a dvd image:  &lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu Feisty Fawn (7.04) desktop</title>
      <link>https://andres.jaimes.net/462/ubuntu-desktop/</link>
      <pubDate>Mon, 23 Jul 2007 19:20:08 +0000</pubDate>
      <guid>https://andres.jaimes.net/462/ubuntu-desktop/</guid>
      <description>&lt;p&gt;Sweet…&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://andres.jaimes.net/files/2008/06/ubuntu-desktop.jpg&#34;&gt;&lt;img src=&#34;https://andres.jaimes.net/files/2008/06/ubuntu-desktop.jpg&#34; alt=&#34;Ubuntu Desktop&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Ubuntu Feisty Fawn 7.04&lt;br&gt;&#xA;Controls: Clearlooks&lt;br&gt;&#xA;Window Border: Clearlooks Alternative&lt;br&gt;&#xA;Icons: Dropline Neu!&lt;/p&gt;</description>
    </item>
    <item>
      <title>IIS tips and tricks</title>
      <link>https://andres.jaimes.net/622/windows-iis-tips/</link>
      <pubDate>Mon, 23 Jul 2007 18:35:20 +0000</pubDate>
      <guid>https://andres.jaimes.net/622/windows-iis-tips/</guid>
      <description>&lt;h2 id=&#34;running-multiple-versions-of-the-net-framework-in-iis&#34;&gt;Running multiple versions of the .NET framework in IIS&lt;/h2&gt;&#xA;&lt;p&gt;When you install a new .NET framework in your IIS server some applications can stop working showing you the following error:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Server Application Unavailable&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In the event viewer you will find this:&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-It&#34; data-lang=&#34;It&#34;&gt;the same IIS process. Please use the IIS Administration Tool to&#xA;reconfigure your server to run the application in a separate process.&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This happens because different .NET frameworks can run in the same server, but cannot share the same application pool, so, to solve this:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Recipes</title>
      <link>https://andres.jaimes.net/recipes/</link>
      <pubDate>Mon, 23 Jul 2007 17:50:28 +0000</pubDate>
      <guid>https://andres.jaimes.net/recipes/</guid>
      <description>&lt;h2 id=&#34;pizza&#34;&gt;Pizza&lt;/h2&gt;&#xA;&lt;p&gt;&lt;img src=&#34;pizza.jpg&#34; alt=&#34;Pizza&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Pizza requires 67% hydration.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;825g flour&lt;/li&gt;&#xA;&lt;li&gt;7g yeast&lt;/li&gt;&#xA;&lt;li&gt;17g sea salt - try 12g next time.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;mix&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;495g hot water&lt;/li&gt;&#xA;&lt;li&gt;50g milk&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;heat to 40C degrees&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;30g olive oil&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;mix all previous ingredients&lt;/p&gt;&#xA;&lt;h2 id=&#34;pasta-con-brócoli&#34;&gt;Pasta con brócoli&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Ingredientes&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Pasta&lt;/li&gt;&#xA;&lt;li&gt;Brócoli&lt;/li&gt;&#xA;&lt;li&gt;Ajo, finamente picado&lt;/li&gt;&#xA;&lt;li&gt;Aceite de oliva&lt;/li&gt;&#xA;&lt;li&gt;Queso parmesano&lt;/li&gt;&#xA;&lt;li&gt;Sal, pimienta, guindilla triturada (hojuelas de chile)&lt;/li&gt;&#xA;&lt;li&gt;Salmón u otra proteína (opcional)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Preparación&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Cocer la pasta y el brócoli;&lt;/li&gt;&#xA;&lt;li&gt;Sazonar el ajo con la guindilla en el aceite de oliva; agregar la proteína y cocer.&lt;/li&gt;&#xA;&lt;li&gt;Una vez que todo esté cocido, picar el brócoli muy fino y verter junto con la pasta en el aceite de oliva; no descartar el agua de la pasta aún.&lt;/li&gt;&#xA;&lt;li&gt;Agregar el queso, rayándolo finamente, y revolver; verificar la sazón;&lt;/li&gt;&#xA;&lt;li&gt;Opcionalmente agregar una o más cucharadas de agua de la pasta para que no quede muy seco.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;spinach-and-mandarin-salad-2-servings&#34;&gt;Spinach and Mandarin Salad (2 servings)&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;1/2 cup chopped peanuts&lt;/li&gt;&#xA;&lt;li&gt;2 mandarines&lt;/li&gt;&#xA;&lt;li&gt;2 cups deinfected and sliced spinach&lt;/li&gt;&#xA;&lt;li&gt;1/2 cup de granos de elote cocidos&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Dressing:&lt;/p&gt;</description>
    </item>
    <item>
      <title>C# Tips and Tricks</title>
      <link>https://andres.jaimes.net/c-sharp/c-sharp-tips-and-tricks/</link>
      <pubDate>Sun, 22 Jul 2007 18:23:01 +0000</pubDate>
      <guid>https://andres.jaimes.net/c-sharp/c-sharp-tips-and-tricks/</guid>
      <description>&lt;h2 id=&#34;reading-outlook-contacts&#34;&gt;Reading Outlook Contacts&lt;/h2&gt;&#xA;&lt;p&gt;Have you ever realized all you can do if Outlook contacts information were located into a database? If you have, this tip is for you. The first step is to take all that information out from Outlook so we can transform it into series of insert/update statements.&lt;/p&gt;&#xA;&lt;p&gt;Start Microsoft Visual C# Express (you can download it for free from Microsoft’s site &lt;em&gt;pending link&lt;/em&gt;).&lt;br&gt;&#xA;Once downloaded and installed, create a new project and add Outlook’s library to it:&lt;br&gt;&#xA;Go to &lt;em&gt;Project&lt;/em&gt; -&amp;gt; &lt;em&gt;Add Reference&lt;/em&gt; -&amp;gt; &lt;em&gt;COM&lt;/em&gt; and select &lt;em&gt;Microsoft Outlook 11.0 Object Library&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Some words on Java, C# and C&#43;&#43;</title>
      <link>https://andres.jaimes.net/458/some-words-on-java-c-and-c/</link>
      <pubDate>Sun, 22 Jul 2007 18:14:58 +0000</pubDate>
      <guid>https://andres.jaimes.net/458/some-words-on-java-c-and-c/</guid>
      <description>&lt;p&gt;I have always considered myself a C++ guy. That was one of the first languages I learned. But, life has taken me through many different paths, and I have needed to learn others. It was seven years ago, when I tried my first cup of Java and I realized objects were a must: Why did I need to create an additional class to return a compound value? another file?, I could do a “one-liner” in C++. As time went by, I stopped thinking on certain optimizations like inline and char arrays and started thinking more seriously on blueprints. After all that time, I look back and realize those blueprints let me build lots of great projects. And market is not really interested on optimizations but on quick and effective development. So blueprints came into my life. Java gave me for many years what I needed but always had the feeling that it was not good enough for desktop applications. Then, SWT appeared. Finally a framework that felt rock solid… but only in Windows.&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://andres.jaimes.net/wp-content/uploads/2018/05/password-validation-demo/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://andres.jaimes.net/wp-content/uploads/2018/05/password-validation-demo/</guid>
      <description>&lt;!DOCTYPE html&gt;&#xA;&lt;html&gt;&#xA;&lt;head&gt;&#xA;    &lt;title&gt;&lt;/title&gt;&#xA;    &lt;meta charset=&#34;utf-8&#34;&gt;&#xA;    &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1, shrink-to-fit=no&#34;&gt;&#xA;&#xA;    &lt;link rel=&#34;stylesheet&#34; href=&#34;https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css&#34; integrity=&#34;sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB&#34; crossorigin=&#34;anonymous&#34;&gt;&#xA;&#xA;    &lt;style&gt;&#xA;        .pwd-restrictions {&#xA;            list-style: none;&#xA;        }&#xA;        .pwd-restrictions li {&#xA;            line-height: 2.3em;&#xA;        }&#xA;        .pwd-restriction-checked {&#xA;            list-style-image: url(&#39;checkmark.png&#39;);&#xA;        }&#xA;    &lt;/style&gt;&#xA;&lt;/head&gt;&#xA;&lt;body&gt;&#xA;    &lt;br&gt;&#xA;    &lt;div class=&#34;container&#34;&gt;&#xA;        &lt;div class=&#34;row&#34;&gt;&#xA;            &lt;div class=&#34;col-md-6&#34;&gt;&#xA;                &lt;form&gt;&#xA;                    &lt;div class=&#34;form-group&#34;&gt;&#xA;                        &lt;label for=&#34;email&#34;&gt;Email address&lt;/label&gt;&#xA;                        &lt;input type=&#34;email&#34; class=&#34;form-control&#34; id=&#34;email&#34; placeholder=&#34;Email address&#34;&gt;&#xA;                    &lt;/div&gt;&#xA;                    &lt;div class=&#34;form-group&#34;&gt;&#xA;                        &lt;label for=&#34;password&#34;&gt;Password&lt;/label&gt;&#xA;                        &lt;input type=&#34;password&#34; class=&#34;form-control&#34; id=&#34;password&#34; placeholder=&#34;Password&#34; maxlength=&#34;16&#34;&gt;&#xA;                    &lt;/div&gt;&#xA;                    &lt;div class=&#34;form-group&#34;&gt;&#xA;                        &lt;label for=&#34;confirm-password&#34;&gt;Confirm Password&lt;/label&gt;&#xA;                        &lt;input type=&#34;password&#34; class=&#34;form-control&#34; id=&#34;confirm-password&#34; placeholder=&#34;Confirm password&#34; maxlength=&#34;16&#34;&gt;&#xA;                        &lt;small id=&#34;password-match-label&#34; class=&#34;form-text text-muted&#34;&gt;&lt;/small&gt;&#xA;                    &lt;/div&gt;&#xA;                    &lt;button type=&#34;submit&#34; class=&#34;btn btn-primary&#34;&gt;Submit&lt;/button&gt;&#xA;                &lt;/form&gt;&#xA;            &lt;/div&gt;&#xA;            &lt;div class=&#34;col-md-6&#34;&gt;&#xA;                &lt;p&gt;Your password must:&lt;/p&gt;&#xA;                &lt;ul class=&#34;pwd-restrictions&#34;&gt;&#xA;                    &lt;li id=&#34;pwd-restriction-length&#34;&gt;Be between 10-16 characters in length&lt;/li&gt;&#xA;                    &lt;li id=&#34;pwd-restriction-upperlower&#34;&gt;Contain at least 1 lowercase and 1 uppercase letter&lt;/li&gt;&#xA;                    &lt;li id=&#34;pwd-restriction-number&#34;&gt;Contain at least 1 number (0–9)&lt;/li&gt;&#xA;                    &lt;li id=&#34;pwd-restriction-special&#34;&gt;Contain at least 1 special character (!@#$%^&amp;()&#39;[]&#34;?+-/*)&lt;/li&gt;&#xA;                &lt;/ul&gt;&#xA;            &lt;/div&gt;&#xA;        &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;    &lt;script src=&#34;https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js&#34;&gt;&lt;/script&gt;&#xA;    &lt;script&gt;&#xA;        $(document).ready(function() {&#xA;            function updatePasswordsMatchLabel() {&#xA;                if ($(&#39;#password&#39;).val() == $(&#39;#confirm-password&#39;).val()) {&#xA;                    $(&#39;#password-match-label&#39;).text(&#39;Super! Your passwords match&#39;);&#xA;                } else {&#xA;                    $(&#39;#password-match-label&#39;).text(&#39;Your passwords do not match&#39;);&#xA;                }&#xA;            }&#xA;&#xA;            $(&#39;#password&#39;).keyup(function () {&#xA;                var pwdLength = /^.{10,16}$/;&#xA;                var pwdUpper = /[A-Z]+/;&#xA;                var pwdLower = /[a-z]+/;&#xA;                var pwdNumber = /[0-9]+/;&#xA;                var pwdSpecial = /[!@#$%^&amp;()&#39;[\]&#34;?+-/*={}.,;:_ &lt;&gt;]+/;&#xA;&#xA;                var pwd = $(&#39;#password&#39;).val();&#xA;&#xA;                if (pwdLength.test(pwd)) {&#xA;                    $(&#39;#pwd-restriction-length&#39;).addClass(&#39;pwd-restriction-checked&#39;);&#xA;                } else {&#xA;                    $(&#39;#pwd-restriction-length&#39;).removeClass(&#39;pwd-restriction-checked&#39;);&#xA;                }&#xA;                if (pwdUpper.test(pwd) &amp;&amp; pwdLower.test(pwd)) {&#xA;                    $(&#39;#pwd-restriction-upperlower&#39;).addClass(&#39;pwd-restriction-checked&#39;);&#xA;                } else {&#xA;                    $(&#39;#pwd-restriction-upperlower&#39;).removeClass(&#39;pwd-restriction-checked&#39;);&#xA;                }&#xA;                if (pwdNumber.test(pwd)) {&#xA;                    $(&#39;#pwd-restriction-number&#39;).addClass(&#39;pwd-restriction-checked&#39;);&#xA;                } else {&#xA;                    $(&#39;#pwd-restriction-number&#39;).removeClass(&#39;pwd-restriction-checked&#39;);&#xA;                }&#xA;                if (pwdSpecial.test(pwd)) {&#xA;                    $(&#39;#pwd-restriction-special&#39;).addClass(&#39;pwd-restriction-checked&#39;);&#xA;                } else {&#xA;                    $(&#39;#pwd-restriction-special&#39;).removeClass(&#39;pwd-restriction-checked&#39;);&#xA;                }&#xA;                // If we are already displaying some text, then we have to update it&#xA;                if ($(&#39;#password-match-label&#39;).text().length &gt; 0) {&#xA;                    updatePasswordsMatchLabel();&#xA;                }&#xA;            });&#xA;&#xA;            $(&#39;#confirm-password&#39;).keyup(function () {&#xA;                updatePasswordsMatchLabel();&#xA;            });&#xA;        });&#xA;    &lt;/script&gt;&#xA;&lt;/body&gt;&#xA;&lt;/html&gt;</description>
    </item>
  </channel>
</rss>
