Hace unas semanas logré montar mi mesa de trabajo de acuerdo todo lo que quería. Como trabajo de forma remota para varios clientes, necesitaba un buen lugar con el equipo necesario para mis trabajos. Luego de mudarme de país y contar con un mejor servicio eléctrico. Decidí en invertir en mejorar mis equipos y adquirir unos accesorios para mejorar mi productividad.

Mesa de trabajo de Skatox
La mesa de trabajo que uso diariamente

Lo primero que notarán es que tengo una Mac mini y una portátil. Esto es debido a que como desarrollador web tengo que tener acceso a Safari para macOS (mi principal cliente utiliza este navegador)

Mac Mini

Fue un regalo de mi principal cliente, la estoy utilizando como computadora para realizar toda la parte de administración de ser freelancer. Con el teclado y trackpad inalámbrico, siento que es mas fácil escribir. La redacción de presupuestos, comunicaciones, videollamadas (por esto tengo conectada una webcam arriba del monitor). Las aplicación nativa de correo de macOS me parece chévere y pues me siento mas cómodo hacer estas tareas acá.

Fuera de estas tareas, solo trabajo en la elaboración de proyectos pequeños. Pruebas en Safari o edición de vídeo. Cuando quiero hacer contribuciones a Firefox, las realizo aquí porque es mas fácil compilar las cosas en macOS que Arch Linux (por las versiones de las dependencias)

A esta Mac mini le cambié el disco duro y compre el teclado oficial y trackpad por la calidad de las baterías.

Mi portátil

Ésta portátil la tengo desde 2014 (6 años) y corre sobre Linux. La uso principalmente para desarrollo web de proyectos grandes. Porque a veces debo moverme de lugar por viajes a conferencias, visita a mis padres o simplemente me muevo a un coworking. También la uso para cuando debo realizar tareas de administración de servidores, porque como es el mismo Sistema Operativo y me siento cómodo.

La coloco sobre una base con un ventilador para refrigerlarla un poco (vivo en un lugar caliente). También me permite que esté a una altura para evitar dolor de cuello (cuando no usaba la base me empezaba a doler luego de varias horas) y le conecto un teclado USB para escribir mas cómodo. A la portátil le conecto el monitor como pantalla secundaria cuando no estoy usando la Mac.

En el transcurso de los años le he aumentado la RAM a 16GB, le cambié la batería y probablemente este año el disco duro, o tal vez migre a una nueva.

Accesorios de mi mesa de trabajo

Debido a que estoy viviendo en una zona caliente, utilizo un ventilador USB. Tengo unos audífonos NIN para realizar llamadas, escuchar audio y con supresión de sonido para evitar molestias ambientales cuando necesito concentrarme. En la foto no se vé pero tengo una silla profesional para evitar problemas de la columna y poder trabajar durante muchas horas.

Inversión

Llevar la inversión me llevó varios años, pero fui comprando las cosas poco a poco. Lo importante es invertir en un bueno monitor, mesa y silla porque te permitirán estar una buena pose por muchas horas. La salud es lo más importante porque sin ella no puedes trabajar. También es importante los equipos de trabajo, en mi caso me interesa que tengan mucha RAM para poder tener abierta muchas aplicaciones al mismo tiempo.

En fin, solo quería compartirles mi mesa de trabajo, espero que les sirva de inspiración. Me gustaría ver o leer como son las suyas o que consejos me dan.

Hace unos días me tocó actualizar mi computadora de escritorio que tenía 4 años sin actualizarse debido a que había migrado a una MacMini. Entonces procedí a realizar una actualización de todo el sistema usando:

pacman -Suyy // la doble Y actualiza toda la información de los repositorios

A pesar de tanto tiempo sin actualizarse, la actualización fue de 1.7 GB y prácticamente fue reinstalar todo. Revisé en las noticias de Archlinux y vi que las intervenciones manuales no eran necesarias para este equipo. Pero se quejó de dos cosas:

  • Habían muchos archivos del xproto y kde-l10n-es que estaban en el sistema. Mi proceso fue moverlos a una carpeta de respaldo y funcionó (pues la opción para forzar escritura fue removida).
  • No podía actualizar el kernel CK (Utilizo la variante de CK porque está diseñada para computadoras de escritorio) porque no podía descomprimir paquetes en formato XZ.

Como dañé PacMan

Para resolver el último problema, intenté actualizar el Package Manager a la última versión. Pero solo actualicé ese paquete y no las dependencias. Algo que en Archlinux es pecado porque debes hacer actualizaciones completas para evitar el problema que ocurrió.

Al hacer ese proceso, el nuevo pacman dependía de una nueva versión de libc y no podía actualizar la librería porque no funcionaba pacman.

Pacman-Static

Descubrí el paquete PacMan-Static. Es una versión de pacman en formato binario, cuyas liberías requeridas están enlazadas. Entonces puedes ejecutar el gestor de paquetes sin ninguna dependencia adicional.

Una vez descargado el binario, le di permisos de ejecución y actualicé el sistema:

chmod +x pacman-static  ## Permisos de ejecución
pacman-static -Su ## Para actualizar el sistema

Luego de eso pude actualizar todo y reiniciar sin problemas.

Archlinux y las instalaciones largas

Pensé que iba a tener mas problemas al actualizar Archlinux. Pero no tuve mas problemas aparte de archivos existentes que podía mover antes de actualizar. El otro problema lo hubiese podido evitar si no hubiese hecho actualización parcial.

Por eso es que me gusta esta distribución de Linux.

El pasado 19 y 20 de Octubre se realizó en la ciudad de Panamá, el primer WordCamp Panama. WordCamp es un evento oficial de WordPress organizado por la comunidad local donde se reúnen entusiastas de esta tecnología para compartir sus conocimientos.

En la edición de este año tuve la oportunidad de participar en el evento como ponente representando a Mozilla Tech Speakers. Era mi primer viaje real a Panamá, ya que sólo estuve unas horas anteriormente.

1er día del WordCamp Panamá

Al llegar a la entrada del evento, comenzaba el proceso de registro. Allí me dieron el swag del evento y procedí al teatro principal. El formato del WordCamp Panamá consistía en tres charlas simultáneas en distintos lugares: teatro principal y aulas de la universidad. Generalmente las charlas de dividían en desarrollo, mercadeo y diseño. Atendí principalmente a las de desarrollo y algunas de mercadeo.

El evento comenzó con unas palabras de Ernesto Morales hablando sobre el esfuerzo para realizar evento y como fue la organización del mismo. De ahí fui a la charla de Miguel Díaz sobre como debes vender tu producto en la Web y los complementos de WordPress que facilitan este proceso. Roberto Rubio nos mostró como hacer sitios estáticos en WordPress y unos hacks para hospedar nuestros sitios en servicios de forma gratuita.

Las charlas de Andrea Navarro, Pedro Rosillo y Félix Bellido estaban dirigidas a como mejorar nuestro negocio en Internet, utilizando mercado, estrategias digitales, Google Adsense, Google Business entre otros. Obviamente no faltó mencionar los plugins que nos permiten implementar estas funcionalidades fácilmente. De ahí fui a una charla de Jose Jiménez Vega sobre como crear tu marca personal.

En el siguiente turno asistí a las charlas de desarrollo, un taller de Roberto Rubio sobre optimización de sitios en WordPress. Y finalmente la ponencia de Joaquín Vargas sobre como usar Programación Orientada a Objectos en WordPress.

El evento contaba con recesos entre los turnos para el networking, comida gratuita (incluyendo almuerzo) para los asistentes. Ademas de casillas de los patrocinadores para obtener información de los servicios.

2do día del WordCamp Panamá

En el segundo día, solo pude asistir a las charlas de la tarde (tuve un fuerte vuelo y debía descansar). Entre esas la de Rafael Lara sobre seguridad en WordPress. Estuvo genial porque explicó los conceptos de seguridad pero enfocados en este CMS.

Luego de él era mi turno. En esta ocasión hablé sobre las Herramientas de Desarrollo de Firefox orientadas al desarrollo de WordPress. Mostré como se pueden usar las herramientas para usar las últimas tecnologías de CSS en temas de WordPress: CSS Grids, Flexbox, Variable fonts. También comenté sobre las herramientas de JS, Chrome Logger para mostrar los logs de PHP en el navegador, herramientas para el rendimiento, entre otros. (Agradezco a Alcibiades Guevara por tomar las fotos de mi charla)

Luego procedimos al cierre donde se tomó la foto grupal, los organizadores nos dieron la despedida y finalización formal del evento.

Resumen

El WordCamp Panamá fue un gran evento, con ponencias de todas las áreas que abarca WordPress: mercadeo, desarrollo, servidores, negocios, diseño, periodismo, entre otros.

La comunidad me pareció muy agradable, son personas cuya colaboración se nota que es por amor y no buscando reconocimiento, está compuesta por personas de distintos países, entre otros. Por eso te recomiendo asistir a un WordCamp Panamá, además el país ofrece lugares para turismo y vivir una experiencia caribeña.

Si tienen algún comentario del evento o de mi ponencia, no duden en escribir.

Happy blogging!

Muchas personas piensan que el correo electrónico es un medio obsoleto y antiguo y evitan aplicar mercadeo por correo. Pero actualmente es el mejor medio de comunicación personal. Toda persona en Internet tiene un correo, pues es necesario para identificar nuestra identidad en muchos servicios. De hecho, no podemos crear una cuenta en una red social sin tener una cuenta de correo.

Mercadeo por correo
El correo electrónico sigue siendo el mejor medio para la comunicación personal

El mercadeo por correo

El mercadeo por correo consiste en comunicarse con posibles clientes de tu servicio o producto para transformarlos en clientes. Para esto, dependes de un buen mensaje y de establecer una comunicación directa con el posible cliente.

Lo mas importante es el asunto del correo. Es la primera parte del correo que se lee y probablemente la que incite a la persona a abrir el mensaje. Debe ser un mensaje directo, no muy largo y llamando a una acción. No recomendaría colocar el nombre del producto porque inmediatamente lo relacionan con publicidad y pueden ignorar o borrar el correo. Sería excelente crear un intriga que llame a una acción, como una pregunta al receptor del correo.

Después crea un saludo a la persona, es importante establecer una relación con el lector. Si puedes presentarte como una persona y no compañía es probable tener mayor atención, pues el receptor cree que hay otra persona detrás del correo y no es algo automatizado (aunque en realidad lo sea).

Evitar llenar el mensaje con una imagen pesada que puede lucir bien en un planfleto pero se ve mal o ilegible en un dispositivo móvil. Evita imágenes pesadas con mucho tiempo de descargar. La mayoría de personas revisan el correo en su teléfono y si le haces gastar megas y batería, van a borrar rápidamente el correo.

Crea varias pruebas y revisa los resultados. Así poco a poco vas mejorando el contenido hasta obtener las metas deseadas.

¿Por qué hacerlo?

Es muy importante aplicar estrategias de marketing digital en tus servicios y productos. De esta forma podrás llegar a una audiencia mayor y aumentar las ventas. Evita pensar en el correo como un medio limitado y obsoleto, es el mejor medio para comunicarte con una persona sin distracciones. En redes sociales, por ejemplo, tienes el riesgo de que los usuarios es tan acostumbrados a recibir mensajes de publicidad que automáticamente ignoran cualquier mensaje, también es posible que las plataformas eliminen tus mensajes al ser considerados SPAM y te bloqueen la cuenta.

Espero que te sirva de ayuda estos consejos y empieces a realizar mercadeo por correo. Si este artículo te gustó, no dudes en compartirlo y comentar tu opinión.

Este año tuve la oportunidad de participar en el BrazilJS Conf del 2019. Para quienes no la conocen es la conferencia de JavaScript mas grande del mundo. Había enviado ponencia en las últimas 3 ediciones pero finalmente este año fui aceptado. Mis expectativas era que el evento iba a estar genial pero no sabía como era.

Cuando fui al escenario a realizar la prueba de sonido. Me sorprendí porque no sabía la magnitud del evento. El lugar contaba con puestos para 2000 asistentes y con 4 pantallas gigantes para mostrar la conferencia. Ademas que contaba con excelente organización para entretener a la audiencia y contar con 2 tarimas para no perder tiempo entre ponentes.

El formato de BrazilJS Conf 2019

El evento constaba de 3 días: el primero era de puros talleres y para los ponentes era el día de realizar pruebas. aquí tuve la oportunidad de ver un taller de Matías Johanson sobre el uso de redes neuronales en JavaScript, unas charlas de NIC Brazil y W3C sobre la des-centralización de la web. Pude entrar a una charla de marketing usando datos éticos, es decir, no obtenidos sin permisos de los usuarios o comprados a redes sociales. Me llamó la atención esta última porque no había pensado en que ahora el marketing se hace con datos robados de los usuarios.

El segundo día era el inicio real del evento. Me encantó que habían 2 tarimas, así cuando un ponente estaba por terminar el otro se preparaba y el cambio se hacía sin perder tiempo. También entre cada ponencia un grupo acústico tocaba la canción favorita del ponente entreteniendo la gente. El evento comenzó con un video introductorio de los organizadores, muy emotivo. Luego unas palabras de Jaydson Gomes sobre el trabajo realizado y lo que se esperaba allí. Pude entrar a varias charlas, todas muy buenas y algunas en inglés. Luego de finalizar el evento, varias asistentes organizaron una salida para compartir y conocernos mejor.

El último día seguía el mismo formato del anterior. Llegué un poco tarde por estar practicando mi charla y tenia que hacer una visita. Pero luego de dar mi charla pude disfrutar de todo el evento. En la sala de patrocinantes había un puesto para comprar camisetas donde aproveche y adquirí de VueJS y del evento. También habían unas barajitas con fotos de los ponentes del evento y podías pegarlos en un albúm. En los stands de patrocinios podías conversar con la gente de proyectos y ofertas laborales.

Mi ponencia sobre WebAssemby

Siempre que doy esta charla debo agregar contenido nuevo. Para este evento había agregado cosas nuevas como un demo de Doom 3, Google Keep, entre otros. Por eso no estaba preocupado por la calidad del contenido sino porque debía darla en inglés y no estoy acostumbrado a ello.

Traducí las láminas a portugués usando un traductor en línea. Posteriormente me ayudaron a acomodar algunos detalles. Me gustó ver a las personas emocionadas porque disfrutar el contenido escrito de mi conferencia en portugués. Recibí buenos comentarios en redes sociales sobre ello.

Miguel Useche hablando de Webassembly en el BrazilJS Conf del 2019
Mi auto-retrato antes de comenzar la ponencia. Noten la cantidad de gente, es la mitad porque del otro lado había más.

Creo que me fue bien. Estaba un poco nervioso por tener que hablar en inglés, ver las notas en español pero las láminas en portugués. Respecto a la cantidad de gente, era tanta que no era posible enfocarse en todos, así que no era un problema.

Miguel Useche hablando de Webassembly en el BrazilJS Conf del 2019
Miguel Useche hablando de Webassembly en el BrazilJS Conf del 2019

Palabras finales

BrazilJS Conf fue uno de los mejores evento que he estado. Una organización increíble, excelentes temas y conferencistas. El lugar estaba equipado con todo. La ciudad de Porto Alegre es muy bonita, la gente es demasiado amigable. La comida es excelente, sobre todo las carnes. Buenos dulces y chévere para conocer.

Si alguna vez les llama la atención ir a un BrazilJS Conf, no duden e ir.

Si están utilizando Vuetify y desean un componente para mostrar notificaciones en vue.js. Verán que existe una llamado Snackbar que permite implementarlos. El problema de este componente es que requiere definirse en cada vista que hagamos en Vue (por la naturaleza de esta librería) y debemos crear un método para mostrarlo.

Esto es un problema en aplicaciones grandes, porque tendríamos código repetido y descentralizado. Gracias a Vuex podemos evitar este tipo de cosas. Por lo que te explicaré como crear notificaciones con vue.js con Vuex.

Definir opciones del Snackbar en Vuex

Primero vamos a definir en vuestro archivo store.js (o donde instancias Vuex.Store) un estado para tener la configuración por defecto del Snackbar. El estado permite almacenar los parámetros del Snackbar de forma global y poder ser accedida desde cualquier vista. Para ello en la sección de state agrega las siguientes opciones:

export default new Vuex.Store({
  state: {
    snackbar: {
      visible: false,
      color: "success",
      text: null,
      timeout: 10000,
      multiline: false
    },
    ...
    ...
  },

Luego en el mismo archivo, definimos una mutación. En Vuex las mutaciones son los métodos que nos permiten modificar un estado. Esta mutación la usaremos a lo largo de la aplicación para lanzar la notificación desde cualquier lado.

El primer parámetro siempre es el estado actual y el segundo el payload. Éste último es enviado cada vez que llamamos a la notificación con el fin de definir la apariencia. Por ejemplo, si ocurre un error podemos enviar los parámetros de que el tipo de notificación sea error y aparezca de color rojo.

En este ejemplo, agregué opciones para decidir si mostrarlo en multi-línea , elegir color, tiempo de duración, etc. Así que en la sección de mutaciones del store.js agrega:

mutations: {
    alert(state, payload) {
      state.snackbar.text = payload.text;
      state.snackbar.multiline = payload.text.length > 50;

      // Si es mas de 50 caracteres definirlo como multilinea
      if (payload.multiline) {
        state.snackbar.multiline = payload.multiline;
      }
   
      // Color para mensajes de error o éxito
      if (payload.color) {
        state.snackbar.color = payload.color;
      }

     // Tiempo de duración
      if (payload.timeout) {
        state.snackbar.timeout = payload.timeout;
      }
      state.snackbar.visible = true;
   },
   closeAlert(state) {
      state.snackbar.visible = false;
      state.snackbar.multiline = false;
      state.snackbar.text = null;
    },
}

También en esta sección de mutaciones agregué una mutación llamada closeAlert(state) para poder alterar la configuración del snackbar y hacer que se oculte.

Crear el componente de la notificación

Lo mas fácil es crear un componente para la notificaciones. Pues así no mezclas código y lo puedes ubicar en un sólo lugar para que se lance.

Este componente consta simplemente de un Snackbar cuyas opciones son extraídas de un dato llamado snackbar. Este dato es extraído del estado de Vuex definido previamente a través de una variable computada.

Aquí puedes ver el ejemplo de mi componente:

<template>
  <v -snackbar top="" v-model="snackbar.visible" :timeout="snackbar.timeout" :multi-line="snackbar.multiline === true" :color="snackbar.color">
    {{ snackbar.text }}
    </v><v -btn text="" dark="" @click="closeAlert">Close</v>
 
</template>
<script>
import { mapMutations } from "vuex";
export default {
  computed: {
    snackbar() {
      return this.$store.state.snackbar;
    }
  },
  methods: {
    ...mapMutations(["closeAlert"])
  }
};
</script>

Ahora, para implementar el cierre, importo las mutaciones de Vuex para tener acceso a la función closeAlert que definimos previamente. De esta forma al llamar a closeAlert (una mutación) modificará el estado de la variable visible, haciendo que se oculte.

Este component lo puedes colocar antes del cierre de tu v-app para que se pued mostrar en todas las páginas.

Crear las notificaciones en Vue.Js

Cada vez que desees mostrar una notificaciones en vuej.js, solo debes realizar un commit. El primer parámetro es el nombre de la mutación, en este caso alert y las opciones del snackbar la pasas como segundo parámetro.

Un ejemplo para una notificación de error sería algo como:

this.$store.commit("alert", {
  color: "error",
  text:
    "Could not load purchase order info. Status Code: " +
    response.status
});

¡Listo! Ahora podrás mostrar notificaciones con vue.js de forma centralizada a lo largo de tu aplicación.

Cuando ocurre un error de WordPress u obtenemos un error HTTP 500 en nuestra instalación (generalmente debido a un error de PHP). El primer paso para resolver el problema es leer el error para conocer que está ocurriendo. Sin embargo, muchos servicios de hosting desactivan mostrar los errores en pantalla para evitar mostrar errores en los sitios de los clientes (se ve mal visualmente). Otra razón para desactivarlo es para prevenir ataques debido a que el error muestre información oculta de la aplicación que pueda ser aprovechada para aprovechar vulnerabilidades.

En algunos casos, por motivos de rendimiento algunos servicios desactivan el almacenamiento de errores en segundo plano. Complicando la posibilidad de conocerlos y arreglarlos.

Cómo mostrar los errores de WordPress

WordPress posee un modo de depuración. Éste permite mostrar los errores de WordPress en la página o almacenarlos en un archivo.

Para activarlo, debes abrir el archivo /wp-config.php. Busca una sección donde puedes colocar constantes. Allí coloca las siguientes constantes:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', true);
@ini_set('display_errors', 0);

Ahora podrás ver los errores en pantalla, almacenados en el log e incluso forzando al servidor web a guardarlos. Simplemente chequea el error de WordPress. Soluciona y desactiva de nuevo el modo de depuración para volver la página a su estado original.

Espero que te sirva de ayuda. Si conoces otro método, no dudes en compartirlo. Y si deseas leer mas artículos de este tema. Puedes chequear mi categoría del blog dedicada a WordPress.