Lunes 21 de mayo de 2018

Javier Aroche

Javier Aroche
Javier Aroche

2018: Phones are mostly bezel-less so our cases can have big bezels

Essential Phone with Poetic case

Essential Phone with the Poetic case

This year most smartphone manufacturers have been pushing hard to reduce the size of the bezels on their phones (so called screen-to-body ratio); also using fragile premium materials of the back, instead of plastic, is cool. It funny because if you care about your phone, you’re going to use a case with it, and one with quite big bezels.

For a while I was tempted on getting one of the Caterpillar android phones, but the specs were kinda bad, so was the lack of software updates. Actually its becoming harder to find a flagship Android phone that doesn’t have a back made of glass or ceramic and tiny bezels in the front. But hey, that slippery back gotta feel premium!.

Looks like the future of smartphones is about wrapping their premium materials in Thermoplastic Polyurethane (TPU) cases 🙄

Jueves 26 de abril de 2018

De como nintendo se puede recuperar y tomar ventaja el reciente hack…

Bueno regrese a hacer un post de nuevo despues de tanto tiempo, ya mas viejo, aun metalero, con menos tiempo para escribir, y pero ironicamente regresando a mis costumbres infantiles de hace decadas, como jugar nintendo…  Y ya que bloguear ya no es tan cool ni mainstream, aprovechare. Para los que no viven bajo una […]

Miércoles 14 de marzo de 2018

Victor Orozco (Tuxtor)

Victor Orozco (Tuxtor)
The J*

Fixing missing data on Jasper Reports with community Linux distros

. . . or why my report is half empty in Centos 7.

One of the most common and least emotional tasks in any enterprise software is to produce reports. However after many years today I got my first "serious bug" in Jasper Reports.

The problem

My development team is composed by a mix of Ubuntu and Mac OS workstations, hence we could consider that we use user-friendly environments. Between many applications, we have in maintenance mode a not-so small accounting module which produces a considerable amount of reports. This applications is running (most of the times) on Openshift (Red Hat) platforms or on-premise (also Red Hat).

A recent deployment was carried over a headless(pure cli) CentOS 7 fresh install and after deploying application on the app server, all reports presented the following issue:

Good report, Red Hat, Mac Os, Ubuntu

Bad report, Centos 7

At first sight both reports are working and equal, however in the Centos 7 version, all quantities disappeared and the only "meaningful" log message related to fonts was:

[org.springframework.beans.factory.xml.XmlBeanDefinitionReader] (default task-1) Loading XML bean definitions from URL [vfs:/content/erp-ear.ear/core-web.war/WEB-INF/lib/DynamicJasper-core-fonts-1.0.jar/fonts

Fonts in Java

After many unsuccessful tests like deploying a new application server version, I learnt a little bit about fonts in the Java virtual machine and Jasper Reports.

According to Oracle official documentation, you basically have four rules while using fonts in Java, being:

  1. Java supports only TTF and Postscript type 1 fonts
  2. The only font family included in JDK is Lucida
  3. If not Lucida JDK will depend on operating system fonts
  4. Java applications will fallback to the sans/serif default font if the required font is not present on the system

And if you are a Jaspersoft Studio, it makes easy for you to pick Microsoft's True Type fonts

My CentOS 7 solution

Of course Jasper Reports has support for embedding fonts, however report's font was not Lato, Roboto or Sage, it was the omnipresent Verdana part of the "Core fonts for the web" from Microsoft, not included in most Unix variant due license restrictions.

Let's assume that nowadays MS Core Fonts are a gray area and you are actually able to install these by using repackaged versions, like mscorefonts2 at sourceforge.

In CentOS is easy as 1) install dependencies,

yum install curl cabextract xorg-x11-font-utils fontconfig

2) download the repackaged fonts


3) and install the already available rpm file

yum install msttcore-fonts-2.1-1.noarch.rpm

With this, all reports were fixed. I really hope that you were able to found this post before trying anything else.

Sábado 30 de diciembre de 2017

Victor Orozco (Tuxtor)

Victor Orozco (Tuxtor)
The J*

2017 My Java Community Year

Yup it's the time of the year when everybody writes about yearly adventures.

This year was one of the best for my wanderlust spirit, basically due opportunities that I received as member of the global Java community, hence I wanna do a little recap of my Java year in my academic and professional journey, so far Java has been the strongest community I've ever participated. This is probably the year where I made most Java-related friends.

As always Java community is awesome and I wanna start this post saying thank you to all the people that made this possible, I really hope that my presentations, tutorials and workshops were at least at the same level of your expectations, I'm always trying to improve the quality and any feedback is more than welcome.

Let's start with the highlights recap . . .


January was an interesting month, my first MOOC collaboration -Java Fundamentals for Android Development- was published in partnership with Galileo University. Hence I became an official Edx instructor, with Edx profile and everything.

I really think that course quality could be improved, however feedback was better than I expected. I hope to collaborate in another MOOC in the near future, the simple act to prepare a course in a foreign language for an Edx Micromaster was a truly learning experience that I wanna repeat.

Finally, MOOC will run again this year, motivated by good reception . . . I guess/hope :).


In February I discovered my second favorite Java conference. After being accepted I traveled to Atlanta to speak at DevNexus.

With the same quality of Java One speakers but in a more "friendly" atmosphere, DevNexus has a good balance between, speakers, price and quality, I had the opportunity to do a conference on Functional Programming and Functional Java libraries.

I did an interview with night hacking :).

I also met Coca Cola bear at World of Coca Cola, life achievement unlocked.

Finally I'll be speaking again in 2018, hope to see you there.


Not a conference but my company -Nabenik- became a Payara reseller and we helped one unit of "Ministerio Publico" (aka Guatemalan FBI) in the migration process from Glassfish to Payara.

This was a combination between training, analysis and of course partnership. Cheers to everyone involved in the process :).

I also repeated my DevNexus presentation for Peru JUG friends (in spanish).


After being invited by Jorge Vargas, I joined JEspañol as speaker and collaborator. In short words, JEspañol aims to work as the integration point between Java Community in spanish speaking countries, also as the first spanish Virtual JUG.

This year we created a two-leg conference. Being the first leg the "Primera conferencia virtual JEspañol". With speakers from Guatemala, Mexico, Peru, Colombia and Panama.


In a collaboration with other company we trained one unit of the "Nicaraguan Tax administration", my collaboration was focused on secure software development for JavaEE and Android.

A pretty good experience since this was my third visit to Nicaragua.


Taking advantage from Nicaraguan trip I did a joint presentation with Managua Google Developers Group, talking about Java Community, Duke's Choice Award, Consultancy and many Java related technologies. Sharing pizza, beer and of course code.

I also had the opportunity to say hi to old friends from free software community, remembering the good old times of unix hacktivism.


Busy month, not too much hacktivism :).


The second leg of the "JEspañol conference" was carried-on being named "Java Cloud Day Mexico". One of my favorite trips of the year since it took place on the historical "Universidad Nacional Autonoma de Mexico".

With 15 speakers this was my biggest spanish-speaking conference. On the near future we have the intention to take the JEspañol conference to other LATAM countries.

In this opportunity I did a presentation on functional microservices with Payara Micro.

Finally we closed this event with peers from Oracle Developers LA.

I also got a ticket for Wacken Open Air, not Java but still amazing :).


I did a joint presentation with Edson Yanaga at Java One 2017, with full room (mostly Yanaga's merit I must say) we discussed the issues of distributed data with microservices and some technology to attain better data distribution, microservices patterns and some tips and tricks.

Not my best presentation, but anyways feedback is appreciated.

JEspañol got a Duke's Choice Award :).


I received an invitation from peruvian Universidad Privada Antenor Orrego to participate in their Engineering Congress . . . yup in Latam Software Development is considered Engineering.

This was my first time in South America since 2014, the emotion for the travel was pretty obvious. I had the opportunity to do three presentations, being:

  • Getting started with Java community and development career
  • The state of the art with JavaEE
  • Creating functional microservices with Payara Micro

I also did a little trip to Chan Chan ruins, a UNESCO-Protected Site, mochicas where a non-Inca culture dominated by the Incas that I didn't know about.

On trip's last day I had a long layover on Lima, hence I met with Jose Diaz one of the PeruJUG Leaders to do a joint presentation in "Universidad Nacional Mayor de San Marcos" the oldest University in Latin America. Presenting in their systems engineering congress.

We did a panel about microservices on JavaEE vs Spring Boot.


After six years I returned to my "alma mater" to do a presentation on "Getting started with Java 8 and Java EE" for the "Guatemalan systems and computer science students congress". I felt like being at home.

I also took the opportunity to officially launch the partnership with CertificaTIC to introduce Oracle Workforce Development program at Guatemala. The program aims to train with official material but with a fraction of the cost the new generation of Java Architects in Guatemala.

Tip: We'll start classes on January, do not miss the opportunity :).

Finally I was an organizer, committee, waterboy, etc. on the Java Day Guatemala 2017, surprisingly this has been the best edition in attendance. Being a conference organizer is a huge amount of work. I know the huge space to make this conference better and I'm working on it.


December is probably the busiest month for any software contractor since it's the month when everyone goes on vacations and you have wider "maintenance windows" to update, replace and implement software systems.

However I took a day to do a presentation with MitoCode, one of the famous Java youtubers in Latin America. My presentation was focused on the state of the art in JavaEE and Microprofile.

I also got the opportunity to wrote a JavaEE article for my "alma mater" software magazine, the pre-print is available on my spanish blog.

Again thanks to God, friends, family and everyone who made this possible.

Jueves 28 de septiembre de 2017

Victor Orozco (Tuxtor)

Victor Orozco (Tuxtor)
The J*

[Quicktip] How to install Oracle Java 9 on Fedora 26

Yey! It's time to celebrate the general availability of Java 9.

Since I'm the guy in charge of breaking the things before everyone else in the company, I've been experimenting with JDK 9 and Fedora 26 Workstation, hence this quick guide about installing Oracle JDK 9 using the "Fedora Way".

Getting the JDK

As always when a JDK reaches general availability, you could download a Java Developer Kit from Oracle website.


Conveniently Oracle offers a .rpm package that it's supposed to work with any "Hat" distribution. This guide is focused on that installer.

Installing the new JDK

After downloading the rpm, you could install it as any other rpm, at the time of writing this tutorial, the rpm didn't required any other dependency (or any dependency not available in Fedora)

sudo rpm -ivh jdk-9_linux-x64_bin.rpm

This command was executed as super user.

Configuring the JDK

"Hat" distributions come with a handy tool called alternatives, as the name suggests it handles the alternatives for the system, in this case the default JVM and compiler.

First, set the alternative for the java command

sudo alternatives config --java

It will list the "Red Hat packaged" JVM's installed on the system, for instance this is the output in my system (Oracle JDK 8, Oracle JDK 9, OpenJDK 8):

Later, you should also pick a compiler alternative

sudo alternatives config --javac

Configuring JShell REPL

JShell is one of the coolest features in Java 9, being the first official REPL to be included. However and since it's the first time that the binary is available in the system, it cannot be selected as alternative unless you create it manually.

First, locate the JDK install directory, Oracle JDK is regularly located at /usr/java, being in my system.

As any other JVM binary program, JShell will be located at bin directory, hence to create an alternative (and consequently to be prepared for other Java 9 options . . . and to include the executable in the path):

sudo alternatives --install /usr/bin/jshell jshell /usr/java/jdk-9/bin/jshell

From now on you could use jshell on any regular shell, just see my first Java-9 hello world, it looks beautiful :-).

Lunes 26 de junio de 2017

¿Realmente te conoce? –AdsBlock

Este post nace a través de este enlace Dataselfie, conociendo al Algoritmo de Facebook y su Machine Learning. en el que hablan de como funciona el proceso de la publicidad que te sale en facebook,  a través del tiempo ya has dibujado tu perfil en facebook sea por búsqueda o por likes todo lo que hagas dentro de esa red social te va a salir, luego que ya saben que es lo que te gusta te empiezan a mandar publicidad acorde a ella, nunca se habían realizado esa pregunta ¿Por que me sale esto?. si quieren conocer que facebook sabe mas que ustedes tranquilamente, pueden abrir  este enlace Preferencias Ads en Facebook

El cual con la sesión abierta de facebook, desglosan en Intereses, y veras todo tus gusto, lo que por alguna razón buscaste o le diste por omisión. Ahí te conocerás realmente que es lo que te gusta.

Ya que donaste los datos, que puedo hacer.

Lo mas sensato es darse de baja de una red social donde juegan con tu información. si quieres seguir usándolo lo mas lógico seria usar AdsBlock  que lo puedes instalar en firefox y chrome, no vas a ver mas publicidad pero igual en cualquier momento que abras un enlace vas a empezar a crear nuevamente tu perfil.

Hace años 10 años una persona que respeto me compartió este video sigue vigente creemos que los servicios que usamos son gratis realmente.










Domingo 25 de junio de 2017

Activar/desactivar registro de usuarios en WordPress

Registro WordPress

La solución es de forma inmediata, dentro del Escritorio (al que accedas administración del WordPress), le vas hacer click en  a Ajustes, Generales y activas o desactiva el checkbox de: Cualquiera puede registrarse. depende para lo que requieras.

Si lo que tienes  problema con usuarios que se registran y en realidad son robots o personas spammers, usa el plugin que mencione anteriormente en el cual se hace ocultar la url de wp-admin  otra forma es usando .httpass dentro de los directorios y bloqueando su acceso, o en su momentos podrías saber cual es tu ip para indicarle desde donde te conectas por ejemplo algo así.

order allow,deny
deny from
deny from
allow from all

Sábado 24 de junio de 2017

Seguridad en WordPress , Garantizar el acceso a wp-admin

WordPress por ser un CMS mas usado pues tienes vulnerabilidades y necesitamos blindarlo en seguridad y que mejor usando plugins para que no tengas una mala experiencia.

Esta es una de esas en la cual la ruta  ../wp-admin/ la remplazas para evitar acceso a ella.

En el caso el plugin WPS Hide Login no vas a eliminar /wp-login.php o /wp-admin , pero si lo va remplazar para no sea visible y colocaremos una url que solo sabremos nosotros.

Lo buscamos  WPS Hide Login en plugins  haz clic en Instalar y posteriormente en Activar.

En el plugin accede a Ajustes, Generales y establece la palabra de paso que sustituirá al clásico:

wp-admin por no-vasaentrar guardas los cambios y pruebas.

Configuración del plugin

Cuando intentas acceder a
Te dará un 404 not found

De igual forma  también para  /wp-login.php no existen.


Prueba de acceso incorrecta

Si por el contrario pones la url de tu dominio con la palabra de paso establecida:

Te va a salir tu panel para acceder, que se busca con esto, evitar ataques de diccionario, evitar suscripciones y proteger tu CMS de la mejor manera.

si por casualidad no te acuerdas de la url, puedes borrar el plugin en la carpeta wp-content y vuelve a la ruta original


Miércoles 22 de marzo de 2017

Juan José Contreras

5 Novedades De Android Studio 2017

Anteriormente cuando querías compilar tu aplicación que desarrollaste en Android Studio, iniciabas un emulador que te ofrecía el mismo IDE, ibas a la cocina preparabas un licuado de frutas, regresabas a tu ordenador y aún seguía iniciando el emulador, te levantabas de nuevo porque olvidaste ponerle azúcar al licuado, regresabas y se encontraba en la misma pantalla como habías dejando el emulador. Esto y otras cosas más ya no suceden nunca más en la última versión que nos brindó Google con Android Studio 2.3.0. Te cuento 5 de sus mejores novedades.


Implementación Con La Nube

Hoy en día contamos con soluciones espectaculares para el backend como el asombroso Firebase que introdujo Google en 2014 y que ha tenido muy buena aceptación de parte de los desarrolladores.


Te puede interesar: ¿Qué es Firebase? Una Joya De Google

google-cloud-platform_from_netdna-cdnImagen de netdna-cdn

Android Studio sabe esto, por lo que ha decido incluir asistentes dentro del IDE para facilitar la implementación de librerías cómo Fabric, Volley, Google Cloud, Firebase entre otras. En el caso de Firebase solo nos colocamos en la pestaña de Tools (herramientas) y seleccionamos la opción de Firebase, listo ahora ya puedes implementar Firebase.


Emuladores Volando

Al inicio de este artículo te mencione un ejemplo del aburrimiento que provocaba los anteriores emuladores de Android Studio y esperar a que iniciaran sus operaciones. Para evitarnos ese asuntillo, descargabamos otros software como el buen Genymotion, ellos si que saben emular dispositivos móviles.

emuladores_volando_from_blogesImagen De

En fin, con la nueva actualización de Android Studio, los tiempos de espera para cargar un emulador son prácticamente nulos, es decir abres, inicias el emulador y en cuestión de uno o dos minutos ya tenemos nuestro emulador abierto (por supuesto, también dependerá de las características técnicas de tu ordenador).


Android Auto

Si te mantienes al tanto de lo último en el mundo Android, seguro que sabías sobre el soporte para crear apps en Android wear. Con esta versión de Android Studio de manera oficial podemos realizar apps móviles para Automóviles.

Me parece genial sobre todo porque, el mercado de los automóviles cada vez se vuelve más complejo y por esa razón, muchos fabricantes están optando por incorporar android en sus alucinantes automóviles. No he tenido la experiencia de subirme a un auto que tenga Android pero si los he visto y el concepto de tener conectado tu automóvil en tu vida personal como pasa con el celular, se me hace genial. Pero de un lado de seguridad, me pregunto ¿Que tan buena idea será? te recomiendo que te preguntes lo mismo.


Como Usar Android si tu automóvil tiene Andorid:


Si en caso tu automóvil no tiene Android, no te preocupes, también puedes utilizarlo:


Soporte Para Constraints

En la Google I/O 2016 se introdujo los Constraints Layout, una genial noticia que todos queríamos porque la verdad que ya se estaba haciendo tedioso tener que crear un xml normal, xlarge y un horizontal. Con las constraints se resuelve todo el tema de resoluciones y tamaños de pantalla.

constraints_android_studio_from_tutsplusImagen De TustPlus

Sobre todo en Android que es todo un mar de celulares con el robótico de Google.


Control De Versionado En Equipo

Android Studio fue potenciado por IntelliJ IDEA y por supuesto que ofrece lo mejor para el control de versionado con los servicios en la nube para el control de versionado como Git y Mercurial.

Entre los más populares para control de versionado en equipos masivos encontramos Github y BitBucket. Github probablemente es el más popular y te recomiendo que abras una cuenta del mismo, pues casi todo el mundo usa esta plataforma.

control_versionado_androidstudio_from_dartmoutheduControl de versionado De

Es decir que Android Studio te da lo mejor y los mejores estándares para el control de versionado y su documentación.


¿Que Mejoras Se Pueden Hacer?

En Google, principalmente el equipo de tecnologías Android están sacando sus mejores herramientas para construir el IDE más completo para crear apps en Android. Como desarrollador hay un tema que me preocupa…


Peso Y Requerimientos

Cada actualización de Android Studio trae consigo alrededor de unos 400 a 800 Mb. La última vez que fui a ver el peso de Android Studio fue como de 50 Gb con las SDK que he descargado con el tiempo.

Estas han sido las 5 nuevas funcionalidades más importantes que ha sacado Android Studio en los últimos meses. De repente habrán algunas que no hemos mencionado porque las hemos mencionado en un artículo anterior como las 5 Funcionalidades De Android Studio Que Debes Saber.
Espero te haya servido la información y estamos a días de la Google I/O 2017 para que nos revelen las buenas nuevas de las tecnologías Android.

Martes 21 de marzo de 2017

Juan José Contreras

5 Funcionalidades De Android Studio Que Necesitas Saber

Desde los inicios de Android hubo un IDE que sobresalió durante mucho tiempo, fue amado por la mayoría (Eclipse). Pero hoy en día contamos con la herramienta oficial de Google… Android Studio la herramienta de vanguardia para los desarrolladores de Android. Y te contaré 5 funcionalidades que seguramente no sabías de este espectacular IDE.

Compatibilidad con Android NDK (C++)

En el mundo del desarrollo móvil sabemos que no necesariamente por ser una aplicación nativa Android significa que haya sido escrito en código Java. Es el caso de Android NDK. Esta genial librería basta con implementarla desde el Android SDK y aplicar los cambios en tu proyecto.

android_ndk_from_androidcentralFoto de AndroidCentral


Bien, y eso ¿Para que me sirve?

Hay aplicaciones en Android en las cuales necesitarás utilizar demasiados recursos del dispositivo móvil y por ende, optimizar de la mejor manera posible los mismos. Esto es común en los juegos de video para móviles, por sus gráficos y motores de procesamiento necesitan utilizar gran parte del hardware que tiene el dispositivo móvil. Cosa que por sí solo, Java no nos puede ofrecer <<hasta cierto punto, por supuesto>>.

En resumen, puedes crear aplicaciones en Android con C++ o incluso hacer una mezcla de Java con C++.

Pruebas Unitarias Con JUnit

De las mejores prácticas que podemos realizar como desarrolladores, son las pruebas unitarias para comprobar que nuestro código funcionará cuando se encuentre en plan de producción.

Tal, como en otros frameworks y lenguajes, Android Studio nos ofrece las pruebas unitarias tanto para el código Java como para la experiencia de usuario en Android.

Si quieres saber ¿Cómo crear las pruebas unitarias en Android? puedes consultar en su documentación oficial.


Instant Run

Esta es de las funcionalidades introducidas recientemente. Para no esperar demasiado tiempos de carga cada vez que compilas nuestro código, Android Studio implementó esta nueva funcionalidad excelente para aplicar los cambios de código de una manera rápida.

Es decir que haces un cambio de 5 líneas de código, presionas el botón de instant run y de inmediato compilará el código y mostrará los cambios en el dispositivo móvil.

instant_run_from_netdna-cdnFoto de NetDNA-CDN

Claro, como todo en esta vida tiene sus ventajas y desventajas, desde mi experiencia en las últimas tres aplicaciones que he desarrollado (ElCaldo, NSEx iLifebelt y Semana Santa GT) te podría decir que hay momentos donde el instant run brilla por su ausencia, es decir que si compila los cambios pero aparece un mensaje tipo Toast para decir que debes reiniciar la actividad y entonces a la larga es como un tanto engorroso tener que reiniciar la actividad cada vez que utilizas instant run.


Editor De Código Inteligente

Ni siquiera has terminado de escribir el método y ya te esta autocompletando Android Studio, pero lo más curioso de todo esto es que a veces manejamos funciones, métodos, clases que incluso pueden llamarse igual en distintos paquetes, aún así Android Studio reconoce el contexto y me sugiere el más adecuado para la situación.

Es decir que es bastante inteligente el IDE para reconocer cuál será mi siguiente jugada dentro del código. También los que han visto las mejores del IDE, anteriormente cuando una línea de código te marcaba con error, te sugería cualquier ridícula solución para quitar la línea roja, pero ahora te ofrece soluciones con coherencia a resolver el error y no simplemente para quitar la fastidiosa línea roja debajo.

Traducciones A Distintos Idiomas

Android Studio es un abanderado para traducir las apps móviles a distintos idiomas, pues es sencillo, solamente se crea una carpeta con la terminación del idioma, luego creas un recurso tipo xml y agregas los strings con el id que contiene cada archivo de distinto idioma.

traductions_android_studio_from_stackoverflowFoto de StackOverflow

Te podría interesar: Descargar Android Studio


Estas son funcionalidades que caracterizan a nivel general a Android Studio, sin embargo han habido nuevas funcionalidades que en una próxima ocasión te compartiré para enterarnos de lo más actual del IDE por excelencia para desarrollar apps Android.

Viernes 17 de marzo de 2017

Juan José Contreras

Tutorial De Constraint Layout Android

Constraint Layout es la nueva tecnología de Android Studio para crear interfaces de usuario en distintos tamaños y resoluciones. Similar como pasa en xCode con los storyboards. Ahora bastará crear una vista e implementar los constraints para crear una interfaz de usuario de todos los tamaños de pantalla que existen en el mercado.

Empecemos Creando Nuestro Proyecto

Creamos un proyecto nuevo en Android Studio y le pondremos el nombre de TestingContraintLayout, puedes guardarlo donde quieras:


Ya sabes, escoges tu Api, Seleccionamos un EmptyActivity y dejamos que el resto lo haga el IDE por nosotros:


¿Cómo implementar Constraint Layout?

Para lograr esto iremos al SDK Manager y nos situaremos en la pestaña de SDK Tools:


Puedes ver: ¿Qué es y para que sirve Android SDK?


En el renglón de Support Repository, marcamos la casilla <<ConstraintLayout for Android>> y <<Solver for ConstraintLayout>>. Presiona en aplicar y acepta los términos para instalar las librerías. Por cierto, debes poner atención a que versión de librería estás descargando, así al momento de implementar la dependencia tenga coherencia con el SDK.

En mi caso tengo la versión 1.0.2 de Contraint Layout por lo cual implementaremos la siguiente dependencia dentro mi archivo app.gradle

compile ‘’

Luego presionas el boton de sincronizar y con eso ya tenemos implementado Constraint Layout en nuestro proyecto.


Convirtiendo nuestro Layout a Constraint

Convertir tu clásico Linear Layout o Relative Layout a un Constraint no es tan complicado, sin embargo yo recomiendo que Constraint Layout se implemente en nuevos proyecto.

En los proyectos que se encuentran desarrollados y muy bien optimizados, no es tan aconsejable implementar esta tecnología, por el simple motivo que tendrían que mover todas las vistas y rediseñar la app (llevaría mucho tiempo).

Ahora situémonos en res/layout/activity_main.xml y abrimos el archivo.


En <<Component Tree>> marcamos con clic derecho nuestro layout (sea Linear o Relative) y seleccionamos la opción Convert layout to ConstraintLayout.


Listo con eso hemos convertido nuestro layout a ConstraintLayout.

¿Cómo Agregar Una Constraint Android?

Los desarrolladores de Google quisieron implementar una nueva forma más intuitiva para interactuar con los constraints al estilo DRAG AND DROP, puedes crear tus constraints fácil y rápido.

Hay dos maneras de crear los contraint Layout, al igual que en muchos casos, puedes hacerlo de forma manual o de forma automatizada. En este tutorial te enseñare de manera manual, ya que para mí es más fiable que hacerlo de manera automática además que no es tan automático como lo vende Android Studio, tendremos que mover datos y hace que sea doble trabajo al final de cuentas.

Vamos a hacer que nuestro xml tenga los siguientes widgets y que se vean de esta manera:


Bueno ya sabés lo sencillo que es colocar los widgets de Android. Aquí viene la parte que todos queremos saber, cada widgets ahora tendrá una especie de chibolitas en cada uno de sus extremos.

Tan sencillo como presionar el círculo y jalar hacia donde quieres que tomen márgenes y listo. Lo sé es bastante simple y extraño, y con los demás widgets procedemos de igual manera.

Recuerda que los widgets deben tener coherencia con cada uno de los widgets y márgenes. Si deseas tener más ilustraciones de los constraint layout, te recomiendo que revises la documentación oficial de Contraint Layout en Android para que no te queden dudas al respecto.
Es cuestión de práctica, cuando domines la lógica de los constraint se te haré súper fácil desarrollar interfaces de usuario ¡increíbles! en Android Studio con Constraint Layout.

Domingo 08 de enero de 2017

David Moreno

David Moreno
dm's blog

Thanks Debian

I sent this email to debian-private a few days ago, on the 10th anniversary of my Debian account creation:

Date: Fri, 14 Aug 2015 19:37:20 +0200
From: David Moreno 
Subject: Retiring from Debian
User-Agent: Mutt/1.5.23 (2014-03-12)

[-- PGP output follows (current time: Sun 23 Aug 2015 06:18:36 PM CEST) --]
gpg: Signature made Fri 14 Aug 2015 07:37:20 PM CEST using RSA key ID 4DADEC2F
gpg: Good signature from "David Moreno "
gpg:                 aka "David Moreno "
gpg:                 aka "David Moreno (1984-08-08) "
[-- End of PGP output --]

[-- The following data is signed --]


Ten years ago today (2005-08-14) my account was created:

Today, I don't feel like Debian represents me and neither do I represent the
project anymore.

I had tried over the last couple of years to retake my involvement but lack of
motivation and time always got on the way, so the right thing to do for me is
to officially retire and gtfo.

I certainly learned a bunch from dozens of Debian people over these many years,
and I'm nothing but grateful with all of them; I will for sure carry the project
close to my heart — as I carry it with the Debian swirl I still have tattooed
on my back ;)

I have three packages left that have not been updated in forever and you can
consider orphaned now: gcolor2, libperl6-say-perl and libxml-treepp-perl.

With all best wishes,
David Moreno.

[-- End of signed data --]

I received a couple of questions about my decision here. I basically don’t feel like Debian represents my interests and neither do I represent the project – this doesn’t mean I don’t believe in free software, to the contrary. I think some of the best software advancements we’ve made as society are thanks to it. I don’t necessarily believe on how the project has evolved itself, whether that has been the right way, to regain relevancy and dominance, and if it’s remained primarily a way to feed dogmatism versus pragmatism. This is the perfect example of a tragic consequence. I was very happy to learn that the current Debian Conference being held in Germany got the highest attendance ever, hopefully that can be utilized in a significant and useful way.

Regardless, my contributions to Debian were never noteworthy so it’s also not that big of a deal. I just need to close cycles myself and move forward, and the ten year anniversary looked like a significant mark for that.

Poke me in case you wanna discuss some more. I’ll always be happy to. Specially over beer :)


Lunes 29 de agosto de 2016

David Moreno

David Moreno
dm's blog

Webhook Setup with Facebook::Messenger::Bot

The documentation for the Facebook Messenger API points out how to setup your initial bot webhook. I just committed a quick patch that would make it very easy to setup a quick script to get it done using the unreleased and still in progress Perl’s Facebook::Messenger::Bot:

use Facebook::Messenger::Bot;

use constant VERIFY_TOKEN => 'imsosecret';

my $bot = Facebook::Messenger::Bot->new(); # no config specified!
$bot->expect_verify_token( VERIFY_TOKEN );

This should get you sorted. What endpoint would that be, though? Well that depends on how you’re giving Facebook access to your Plack’s .psgi application.

Domingo 21 de agosto de 2016

David Moreno

David Moreno
dm's blog

WIP: Perl bindings for Facebook Messenger

A couple of weeks ago I started looking into wrapping the Facebook Messenger API into Perl. Since all the calls are extremely simple using a REST API, I thought it could be easier and simpler even, to provide a small framework to hook bots using PSGI/Plack.

So I started putting some things together and with a very simple interface you could do a lot:

use strict;
use warnings;
use Facebook::Messenger::Bot;

my $bot = Facebook::Messenger::Bot->new({
    access_token   => '...',
    app_secret     => '...',
    verify_token   => '...'

$bot->register_hook_for('message', sub {
    my $bot = shift;
    my $message = shift;

    my $res = $bot->deliver({
        recipient => $message->sender,
        message => { text => "You said: " . $message->text() }


You can hook a script like that as a .psgi file and plug it in to whatever you want.

Once you have some more decent user flow and whatnot, you can build something like:

…using a simple script like this one.

The work is not finished and not yet CPAN-ready but I’m posting this in case someone wants to join me in this mini-project or have suggestions, the work in progress is here.


Lunes 09 de febrero de 2015

Mi top 10 de metal en 2014, The Black Fucking List

Luego de haber sido abducido por extraterrestres por todo un año, y de no escribir ni purisísima mierda en este blog (No tengo excusa, lo acepto, he sido un vago para escribir últimamente) aún conservo la flama del metal ardiendo, –y no creo que se apague mientras este vivo–, así que a continuación listo los […]

Domingo 03 de agosto de 2014

KVM y libvirt en Slackware

KVM (Kernel-based Virtual Machine) es una de las mejores soluciones para virtualización dentro del kernel de Linux, junto a libvirt, que no es mas que un conjunto de herramientas para administrar KVM, juntos son una poderosa combinación para poder trabajar en entornos de desarrollo o en producción.

KVM ya se encuentra habilitado en los kernels entregados por Slackware, por lo que solamente hay que corroborar que nuestra máquina tenga soporte para virtualización, como Intel-VT o AMD-V, aunque actualmente la mayoría de procesadores para PC de escritorio o laptops tienen éste soporte, pero podemos verificar las CPU flags de la siguiente manera:

Para procesadores AMD:

$ grep --color svm /proc/cpuinfo

Para procesadores Intel:

$ grep --color vmx /proc/cpuinfo

La salida de éstos comandos debe darnos información con las flags del CPU que tenemos disponibles, de lo contrario sabremos que no contamos con un procesador adecuado para virtualizar.

Instalación de un entorno libvirt

Para instalar libvirt en Slackware es necesario instalar previamente varias dependencias, lo que puede resultar tedioso si no tuviésemos a la mano el repositorio de (SBo).

La instalación es simple, podemos descargar los slackbuilds o bien utilizar sbopkg, seguir las listas de dependencias e instalarlo, siempre recordando leer los README para evaluar la instalación de paquetes opcionales, en especial con el paquete netcat-openbsd que suele tener problemas con otros paquetes.

Es importante tomar en cuenta que el slackbuild de libvirt viene por defecto para usar el grupo users del sistema, pero yo recomiendo tener otro grupo específico para poder aislar a otros usuarios del uso y administración de libvirt y las máquinas virtuales. La mejor forma es crear un grupo y luego añadir a los usuarios que necesiten virtualizar a éste grupo:

# groupadd libvirt
# gpasswd -a nombre-usuario libvirt

El comando gpasswd agregará a el usuario que necesitemos al grupo libvirt, o bien podemos modificar el archivo /etc/group y agregarlo manualmente. Los usuarios deberán reiniciar su sesión para poder cargar los permisos.

Es recomendable instalar otras herramientas como virt-manager, que no es mas que un administrador gráfico para libvirt, pero necesita muchas otras dependencias de gnome.

Qemu se debe instalar para poder crear las máquinas virtuales o bien utilizar la alternativa de Xen, pero ésta ultima tiene la desventaja de que solamente se podrá instalar en sistemas de 64 bits. Es importante agregar qemu al mismo grupo de virtualización al momento de compilarlo (KVMGROUP=libvirt).

Algunas herramientas extras son openvswitch y usbredir, que pueden agregar muchas mas funcionalidades a la creación y uso de nuestras maquinas virtuales.

Cambiando la carpeta de almacenamiento de libvirt

Libvirt por defecto utilizará la carpeta /var/lib/libvirt/images como la carpeta para crear las imágenes de los discos de nuestras máquinas virtuales, pero algunas veces necesitamos que las imágenes las tengamos en una unidad aparte, o una partición con mucho mas espacio.

Lo primero es asegurarnos de crear la carpeta donde queremos almacenar las imágenes de los discos de las máquinas virtuales:

# mkdir /nueva/carpeta/para/imagenes

Los permisos de acceso son importantes a ésta carpeta, solamente root debe poder accederlas:

# chown root:root /nueva/carpeta/para/imagenes
# chmod 755 /nueva/carpeta/para/imagenes

Para cambiar el pool de almacenamiento principal de libvirt a otra localidad podemos hacer uso de la herramienta virsh:

# virsh pool-destroy default
# virsh pool-undefine default
# virsh pool-define-as --name default --type dir --target /nueva/carpeta/para/imagenes
# virsh pool-autostart default
# virsh pool-build default
# virsh pool-start default

Los comandos anteriores primero realizan una destrucción de la información del pool default, luego lo eliminan de las definiciones para las máquinas virtuales, para luego crear una nueva definición, con el mismo nombre “default”; luego coloca de nuevo el pool “default” para que se habilite automáticamente al iniciar el servicio de libvirt; el comando pool-build se encarga de crear la información de la nueva carpeta, colocando información de tamaño y permisos, importante para que el sistema pueda saber cuanto espacio tiene disponible para las máquinas virtuales; y por último se inicia el pool “default” para que pueda ser utilizado.

Ahora solo resta divertirse con la virtualización.

Lunes 02 de junio de 2014

Plasmoid Simple Monitor

He trabajado bastante con Qt, casi desde su versión 3, cuando aún KDE era bastante liviano que lo utilizaban en varias distribuciones que usaban LiveCD, por lo que cuando comenzó a aparecer QtQuick, me dispuse a entender cómo funcionaba, aunque al inicio no fue muy simple, puesto que era una aplicación que utilizaba C++ y luego se cargaban objetos con QML.

Al evolucionar la tecnología de QtQuick, se hizo mas fácil crear aplicaciones, ya no hubo necesidad de mezclar lenguajes, si no simplemente utilizar QML y quizá combinarlo con algo de Javascript; mucho de ésto se ve reflejado en el sistema de plasmoids para KDE 4, que ha madurado bastante.

Mientras buscaba una forma de reemplazar mi viejo monitor de sistema gkrellm, el cual por cierto no lo he llegado a sustituir por completo, busqué entre la lista de aplicaciones disponibles en y no encontré algo que me llamara mucho la atención, claro, era de esperarse, es una tecnología nueva, pocos la saben utilizar y habremos pocos que sepamos realmente crear interfaces visualmente atractivas, por lo que pocos suben sus aplicaciones a este sitio.

Tenía otra alternativa, que me pareció factible, utilizar conky, el cual es otra aplicación bastante buena para monitorear el sistema y bastante personalizable, pero no se lleva muy bien con KDE. También estaba superkaramba, pero muchos de los elementos que usa suelen ser llamadas a aplicaciones de terminal que al final no era lo que yo necesitaba, aunado a que superkaramba debe estar funcionando para que sus plasmoids funcionasen.

Así que decidí crear mi propio plasmoid, el cual nombré plasma-simpleMonitor, aunque de plasma aún no tiene mucho, pero el objetivo es vincularlo completamente al sistema de temas de KDE.

Había dos opciones, crear uno escrito en C++, lo que me ayudaría a realizarlo de manera mas simple, puesto que manejo a un nivel aceptable el lenguaje, pero tendría el inconveniente de cualquier otra persona que deseara probar el plasmoid tuviese que compilarlo, instalarlo, etc. Y no cualquier persona está dispuesta ha realizar ésto. Así que la decisión estaba tomada, el plasmoid sería hecho con QML y Javascript, de ésta manera, se puede descargar de la página y probarlo, incluso integrarse fácilmente con el instalador de plasmoids de KDE.

Las características mas importantes que tenía en mente para comenzar su desarrollo eran:

  • Capacidad de verificar el trabajo de los núcleos (cores) de mi CPU
  • Verificar la temperatura; se vuelve importante cuando se pone a trabajar a la máquina
  • Verificar el estado de la memoria y la swap
  • Un lugar para mantener la hora y fecha del sistema, de una manera mas vistosa
  • Verificar el tiempo que se ha mantenido encendida la máquina (uptime)

La idea comenzó con un boceto hecho en Inkscape, obviamente no podía comenzar a programar sin saber qué era lo que quería obtener como resultado.

Diseño inicial para plasma-simpleMonitor

plasma-simpleMonitor, Diseño inicial

Así que luego procedí a trabajar, en un par de días tuve la primera versión, pero obviamente no era muy atractiva visualmente, a lo que me puse a trabajar un poco mas en cómo se debería ver y al final llegué a tener una versión decente, la cual fue colocada en sitio

Luego de unos cuantos días de estar colocada en el sitio de KDE-Look, comenzó a tener aprobaciones como desacuerdos, como debe  ser, pero al final la experiencia ha sido buena, he tenido la oportunidad de ver cómo va poco a poco llegando a ser la herramienta que quería que fuera, aunque aún le falta camino por recorrer.

El código fuente se encuentra en GitHub: liberado bajo una licencia GPL v3

Miércoles 29 de enero de 2014

Cambio de etiquetas para pendrives desde línea de comandos

Al momento de comprar una pendrive (nueva memoria USB) siempre tenía el incoveniente de cambiarle la etiqueta, ésto no es tan fácil ya que Linux por defecto no usa sistemas de archivos FAT, por lo que no funciona un simple click derecho.

En cambio es mas fácil desde línea de comandos en un solo paso pero hay que configurar una aplicación:

Lo primero es tener instalado el paquete floppy, que en el caso de slackware viene por defecto en una instalación completa, y si por alguna razón no lo han instalado lo mejor será ir a la carpeta a/ del disco de instalación e instalar el paquete floppy.

Una vez instalado solo resta configurarlo adecuadamente, el archivo /etc/mtools.conf trae ya unos datos de ejemplo, lo que debemos agregar al final del archivo es una línea como la siguiente (editando como superusuario “root”):

drive p: file="/dev/sdb1"

donde “p” es el nombre de una unidad como en DOS, por ello va acompañado de “:” y puedes escoger el nombre de letra que desees; luego el argumento de file debe ser la dirección hacia el dispositivo que deseamos administrar con ésta herramienta, que para ejemplo he colocado /dev/sdb1, ya que actualmente los discos son numerados con la nomenclatura /dev/sdX#, siendo X una letra, comenzando por “a” según el disco físico y # el número de partición, por lo que hay que tener cuidado en conocer realmente que nomenclatura ha sido asignada a nuestra pendrive.

Una vez configurado el archivo, puede ser usado para cualquier otro dispositivo que sea reconocido con ésta nomenclatura.

Para finalizar debemos crear un archivo en nuestra carpeta de usuario (no root):

$ cd ~
$ echo "mtools_skip_check=1" >> .mtoolsrc

y ahora es tiempo de cambiar etiquetas a nuestras pendrives:

$ mlabel p:NombreUSB

donde “p:” es la unidad que configuramos previamiente y lo que sigue a continuación es el nombre de la pendrive, que no debe pasar de 11 caracteres.

Si deseamos ver los cambios solo debemos verificar con:

$ mlabel -s p:

Martes 31 de diciembre de 2013

Mi top 10 del Metal en 2013

Sí, despues de tanto tiempo vuelvo a escribir de Metal, y no es que le haya dado la espalda al género, solo fue que me volví haragán para escribir (quizas es la crisis de los 30, quien sabe) pero, aunque tengo pendiente aún la lista de mis favoritos de 2012 (que algun día la publicaré), […]

Jueves 21 de febrero de 2013

Javier Aroche

Javier Aroche
Javier Aroche

What the next smartphone generation should aim for

5 years apart: HTC One X and the original iPhone

It’s been a long time since my first smartphone, and also my first mobile phone, the original iPhone. Since then smartphones are almost as powerful as netbooks, just look at the specs of my current phone, a HTC One X:

  • CPU: 1.5Ghz Quad-Core
  • 1280 x 720 4.7″ screen
  • 32GB on board storage
  • 1 GB RAM
  • 8 MP camera and decent sensor

Compared to the original iPhone hardware, everything is 3 or 4 times better. The Android OS is literally light-years from the crappy Windows Pocket/CE or Symbian OS experience, browsing from this phone feels almost like doing it from a traditional desktop PC.

I’m sure there is still room for improvement (specially on the little webkit browser), but also somehow feels like the phone hardware doesn’t to be that much powerful. I don’t think having a 8 core CPU will be noticeable unless you do really intense gaming. More Ram? hmm well, I’m not running a database server in the server; besides mobile OSs doesn’t run all applications in parallel at the same time, they keep one app active and the rest sleeping (plus services in the background).

More pixels on the screen? well, at 300dpi is already hard to see individual pixels. Same for tons of megapixels on the camera, that’s silly; at least HTC is betting for higher quality rather than just pack more megapixels.

However with all those improvements in the last years, there are two areas where I’d really like to see huge advances:

  • Battery life: It’s nice to have such a big screen, but tuning it on feels like burns the battery. Leaving my phone in stand by could easy past one day without charging, but it can’t take more than 6 hours of continuous use. I’d love so much to have a phone with a battery that lats a couple days like in the old days… I guess it’s too much to ask when every manufacturer tries to pack as much muscle on the phone as they can. Sigh.
  • Unbreakable glass screen: Scratches are almost no issue nowadays, but every time I drop my phone, I fear its going to shatter. I feel bad for iPhone and iPad mini users, because Apple loves so much pushing the glass to the border as much as they can… Beautiful aesthetics they say, shatter screens is what I see. At least most Android devices keep a reasonable ugly bezel, I like my devices being durable not just beautiful.

@neavilag's cracked iPad Mini

If you ask me about dreaming, I’d love so much my phone to be also my computer like the old Seabird phone concept:

To be honest, I don’t think this happening, Motorola tried to do something like this with the Atrix phone, it looked nice but it wasn’t powerful, after all the x86 architecture packs more force than ARM (if you don’t mind the power consumption). I don’t see phones and tablets reaching the same compute power (and versatility) as laptops anytime soon.

Miércoles 30 de enero de 2013

Javier Aroche

Javier Aroche
Javier Aroche

Goodbye Spanish, Hello English

When I started to hook up on Internet, like ten years ago, Spanish contents were quite few and the quality was way lower versus English ones; since then 99% of my searches are in English, unless I’ve to search for something local, I don’t see a reason too look for Spanish contents. 

My OS and my gadgets always have been configured to use English language since ever, actually using one in Spanish (because of regional auto settings or whatever) doesn’t feel right; and don’t make me talk about how annoying is to use a PC with the wrong keyboard shortcuts.

Over the past few years I have been reading a lot of English books, technical/science ones I’ve to say, I’m starting to become comfortable about switching to another language. I haven’t took any courses to property learn English, yet I need to check the dictionary fewer times nowadays.

I tend to get bored doing the same over and over, Spanish feels bored by now… I need a change. Secretly I’ve always hated Spanish, it’s so inconsistent (I think like a programmer, don’t mind me), it feels like a language that have been patched so many times over the centuries.

So, Why English? Anyone who have studied Computer Science (and most sciences), should know that Spanish lags way behind from English, trying to keep up with the latest technology is the key on this field. I don’t think English is better than Spanish as language, both have their irregular rules and exceptions, just feels like the next logical step. Also the key to property learn a language is practice, just like math.

I’d so love to be learning Esperanto, a highly structured language without the irregular forms non-sense… but, eh, it’s not really that useful out there. Shame. Neither I’m asking for the Newspeak of Nineteen Eighty-Four, but having to learn a lot of irregular forms of any language, feels like memorizing phone numbers.

So, I don’t think I’ll be writing Spanish anymore on this site, and hopefully elsewhere on the Internet.

PD: Also my latest laptop doesn’t have Spanish keyboard, so it’s nice to not be switching over and over.

Sábado 31 de marzo de 2012

Paulo Alvarado

Paulo Alvarado

Quisque vehicula dictum

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis bibendum pulvinar lobortis. Vivamus volutpat risus eu diam laoreet eu sagittis augue condimentum. Nullam nec eros vitae leo viverra tincidunt. Mauris vitae aliquet elit. Suspendisse potenti. Praesent rhoncus metus sodales libero semper sit amet rutrum leo hendrerit. Pellentesque est lorem, commodo ac tristique et, condimentum quis arcu. Praesent in lacinia purus. Morbi quis lobortis dui. Quisque diam arcu, semper vel fringilla a, dignissim mollis nulla.

Vivamus et risus nisi, fermentum fermentum velit. Praesent consequat ante aliquet ipsum tincidunt sagittis. Suspendisse vitae sem neque. Praesent ut magna velit, non consectetur justo. Nullam placerat sem sed enim suscipit ac bibendum diam commodo. Aliquam vehicula sodales dui, ac rutrum turpis porttitor vitae. Proin lectus est, tempus eget aliquet quis, viverra et libero. Sed ligula nulla, sagittis quis tincidunt eget, hendrerit eget metus.

Nulla sed urna ac felis placerat pulvinar id sit amet neque. Nam porta fermentum luctus. Donec ante massa, ultrices ac hendrerit nec, vestibulum auctor lorem. Integer metus lectus, placerat quis rhoncus a, facilisis pharetra tellus. Sed ac eleifend nunc. In nisi mi, semper sed ultrices vel, iaculis sagittis nibh. Aliquam erat volutpat. In hac habitasse platea dictumst. Duis ut mi ante, vitae hendrerit enim. Pellentesque arcu dui, blandit ac rhoncus id, cursus ut leo. Sed consectetur, quam non semper pulvinar, lacus arcu posuere orci, ut congue ipsum dolor id lectus. Vivamus porttitor erat in tortor viverra dignissim ultrices justo facilisis.

Paulo Alvarado

Paulo Alvarado

Accumsan magna tincide

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis bibendum pulvinar lobortis. Vivamus volutpat risus eu diam laoreet eu sagittis augue condimentum. Nullam nec eros vitae leo viverra tincidunt. Mauris vitae aliquet elit. Suspendisse potenti. Praesent rhoncus metus sodales libero semper sit amet rutrum leo hendrerit. Pellentesque est lorem, commodo ac tristique et, condimentum quis arcu. Praesent in lacinia purus. Morbi quis lobortis dui. Quisque diam arcu, semper vel fringilla a, dignissim mollis nulla.

Vivamus et risus nisi, fermentum fermentum velit. Praesent consequat ante aliquet ipsum tincidunt sagittis. Suspendisse vitae sem neque. Praesent ut magna velit, non consectetur justo. Nullam placerat sem sed enim suscipit ac bibendum diam commodo. Aliquam vehicula sodales dui, ac rutrum turpis porttitor vitae. Proin lectus est, tempus eget aliquet quis, viverra et libero. Sed ligula nulla, sagittis quis tincidunt eget, hendrerit eget metus.

Nulla sed urna ac felis placerat pulvinar id sit amet neque. Nam porta fermentum luctus. Donec ante massa, ultrices ac hendrerit nec, vestibulum auctor lorem. Integer metus lectus, placerat quis rhoncus a, facilisis pharetra tellus. Sed ac eleifend nunc. In nisi mi, semper sed ultrices vel, iaculis sagittis nibh. Aliquam erat volutpat. In hac habitasse platea dictumst. Duis ut mi ante, vitae hendrerit enim. Pellentesque arcu dui, blandit ac rhoncus id, cursus ut leo. Sed consectetur, quam non semper pulvinar, lacus arcu posuere orci, ut congue ipsum dolor id lectus. Vivamus porttitor erat in tortor viverra dignissim ultrices justo facilisis.

Paulo Alvarado

Paulo Alvarado

Elucidate vehicula tempus

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis bibendum pulvinar lobortis. Vivamus volutpat risus eu diam laoreet eu sagittis augue condimentum. Nullam nec eros vitae leo viverra tincidunt. Mauris vitae aliquet elit. Suspendisse potenti. Praesent rhoncus metus sodales libero semper sit amet rutrum leo hendrerit. Pellentesque est lorem, commodo ac tristique et, condimentum quis arcu. Praesent in lacinia purus. Morbi quis lobortis dui. Quisque diam arcu, semper vel fringilla a, dignissim mollis nulla.

Vivamus et risus nisi, fermentum fermentum velit. Praesent consequat ante aliquet ipsum tincidunt sagittis. Suspendisse vitae sem neque. Praesent ut magna velit, non consectetur justo. Nullam placerat sem sed enim suscipit ac bibendum diam commodo. Aliquam vehicula sodales dui, ac rutrum turpis porttitor vitae. Proin lectus est, tempus eget aliquet quis, viverra et libero. Sed ligula nulla, sagittis quis tincidunt eget, hendrerit eget metus.

Nulla sed urna ac felis placerat pulvinar id sit amet neque. Nam porta fermentum luctus. Donec ante massa, ultrices ac hendrerit nec, vestibulum auctor lorem. Integer metus lectus, placerat quis rhoncus a, facilisis pharetra tellus. Sed ac eleifend nunc. In nisi mi, semper sed ultrices vel, iaculis sagittis nibh. Aliquam erat volutpat. In hac habitasse platea dictumst. Duis ut mi ante, vitae hendrerit enim. Pellentesque arcu dui, blandit ac rhoncus id, cursus ut leo. Sed consectetur, quam non semper pulvinar, lacus arcu posuere orci, ut congue ipsum dolor id lectus. Vivamus porttitor erat in tortor viverra dignissim ultrices justo facilisis.

Miércoles 21 de marzo de 2012

Byron Antonio Chamann

Byron Antonio Chamann

Lo mejor de Tours en Guatemala solo con Source Tour

Guatemala es reconocido como un país turístico. Lugares como Tikal, Antigua Guatemala y Semuc Champey han ayudado a crear esa fama. Ahora bien, el país cuenta con muchísimas otras opciones. Internet ha venido a ayudar a que cuando alguien desea salir a descansar investigue previamente que lugares turísticos se encuentran en cada departamento y visitar lugares menos sonados (Lo que no necesariamente significa que sean lugares menos atractivos).

El inconveniente con lo anterior es que muchas veces se encuentra información de un lugar turístico pero no detalles sobre como llegar, tarifas, horarios, etc. Esta necesidad es la que viene a resolver Source Tour.

Recientemente en Prensa Libre se comentaba de esta iniciativa como una Tienda en linea de Tours. Realmente es más que eso, es una plataforma en donde un guatemalteco o extranjero puede conocer muchísimas opciones turísticas que el país ofrece. Además de lo anterior el sitio da el valor agregado de hacer reservaciones de Tours por toda Guatemala y pagarlos directamente en línea.

Así es mucho más sencillo organizar un viaje porque los detalles quedan cubiertos con toda la información que la plataforma brinda. Aprovechar de esta forma la tecnología no solo ayuda al sector Turistico del País sino también a las personas que buscan nuevas actividades para disfrutar en familia o con los amigos.

Vale la pena visitar el proyecto >> Source Tour

Viernes 20 de enero de 2012

Byron Antonio Chamann

Byron Antonio Chamann

E-learning en Guatemala y las universidades a distancia

La educación a distancia es uno de los modelos pedagógicos más efectivos hoy en día. Se lleva a cabo gracias a las múltiples plataformas online, que funcionan por medio de las TICs (Tecnologías de la información y la comunicación); y ha representado una excelente oportunidad para el aprendizaje y la difusión del conocimiento en todas las esferas del saber humano.

Dada la necesidad de educación continua y permanente, actualmente algunas universidades cuentan con ofertas educativas e-learning, que permiten la comunicación y colaboración con compañeros “de clase” y docentes, sin limitaciones espacio-temporales; ya que no es necesario asistir a un aula permanente.

Entre sus múltiples ventajas están que los alumnos pueden elegir sus propios horarios; pueden ingresar a la plataforma online desde cualquier lugar donde tengan acceso a un dispositivo con conexión a Internet; aprendizaje colectivo sin límites geográficos; actualización constante de los contenidos; permite una mayor conciliación con la vida familiar y laboral, etc.

Una de las Universidades de Guatemala a distancia que se ha destacado por su educación e-learning, es Atlantic International University. Con estudiantes de más de 180 países, la AIU se adapta a la diversidad de sus alumnos, mediante programas de estudio personalizados. Ofrece más de 300 carreras en niveles de Bachelor (Licenciatura), Maestría y Doctorado, en diversas ramas del conocimiento, como lo son: artes, negocios, ciencias, tecnología, estudios sociales y humanos, etc.

Hoy en día, con el auge de la Web 2.0, la educación a distancia, representa una gran oportunidad para las personas que disponen de poco tiempo para dedicarse al enriquecimiento profesional. Permitiendo la conformación de modelos cooperativos, donde los estudiantes, son a la vez quienes pueden aportar y al mismo tiempo beneficiarios de dichos aportes.

La facilidad de acceso, la posibilidad de reducción del tiempo de aprendizaje, la compatibilidad de actividades, la posibilidad de actualización inmediata, la comodidad, entre otros beneficios, posiciona al e-learning como una forma de educación muy deseable hoy en día.

Lunes 09 de enero de 2012

Byron Antonio Chamann

Byron Antonio Chamann

Solución de outsourcing en Guatemala

El término Outsourcing se refiere a la cooperación en la que una empresa, encarga a otra, ciertos procesos de diversa índole dentro de la organización. Podría ser la fabricación o prestación de algún componente de sus productos o servicios, parte de su producción, o bien la totalidad de la misma.

Generalmente suele darse cuando una firma, identifica que algunos de sus procesos podrían darse más eficientemente, si subcontrata a una agencia especializada para desarrollar esas actividades; lo cual conlleva una mejoría en los niveles productivos, ya que la empresa, únicamente deberá enfocarse en la función central de su negocio. Este tipo de procesos suele ser altamente utilizado, puesto que las empresas especializadas en ciertos procesos productivos, pueden hacerlo mejor y a un costo menor del que manejaría cualquier organización, haciéndolo por sí misma.

Al momento de optar por Outsourcing, dentro de una compañía, hay ciertos aspectos a tener en cuenta, como los antecedentes, referencias y experiencia de la firma que se va a contratar. Para el outsourcing en Guatemala y Centroamérica, Grupo Misol, es una firma que reúne varias agencias especializadas en diversos procesos productivos, entre ellos, conserjería, puestos administrativos, mensajería, personal temporal en diversas áreas, impulsación de marcas, productos de limpieza,  mantenimiento de jardines, mantenimiento de elevadores y gradas eléctricas, montacargas, limpieza empresarial, impermeabilizantes, etc. Con más de 30 años de experiencia, brindando capital humano capacitado y confiable para llevar a cabo las actividades específicas, dentro del ámbito corporativo en que se desenvuelvan.

Hacer Outsourcing ha sido una columna de apoyo para muchas empresas, es más que subcontratación; más bien es hacer alianzas con firmas colaboradoras que harán más eficientes las tareas fundamentales de una organización.

Lunes 02 de agosto de 2010

Spotify en Gentoo [sin Wine]

Soptify WINHace un par de semanas se anuncio la primera version de Spotify para Linux, el detalle esta en que solo dieron un repositorio para Debian/Ubuntu y nada mas. Calvin Klein Underwear Baratos No se porque se les habra dado por sacar el programa para GNU/Linux sin dar codigo fuente (ok es privativo el dichoso Spotify pero porque encuadrar a ciertas distribuciones nada mas? ). Slip Calvin Klein Outlet A mi eso de emular programas con Wine no me gusta a menos que el cliente/jefe no de otra opcion.

The post Spotify en Gentoo [sin Wine] appeared first on SiRGt's Blog.

Domingo 01 de agosto de 2010

Oracle Reports sobre Ubuntu

Tan abandonado tengo este asunto (si la cantaleta de cada nuevo post) eso de (ahora si) apreciar el tiempo libre es jodido jaja, anyways. Adidas Ultra Boost France Me puse a revisar y a pensar como revivir este asunto y creo que la mejor manera es limpiar los drafts que facil llevaran guardados desde septiembre de 2009. Acheter Adidas Ultra Boost El mas interesante de todos (o que merecia la pena dedicarle 10 minutos a terminar de pulirlo) era este. El titulo creo que debio ser algo mas especifico como “Configuracion de Samba, Wine, Oracle forms 6 en Ubuntu 8.04 LTS” pero ni modo. El pijeo estuvo asi, como siempre los pseudo gerentes de sistemas se fijan en software libre “si y solo si” les representa un ahorro ya sea en plata o en metidas de huevo (en este caso creo que eran las dos jajaja). Adidas Ultra Boost Pas Cher El requerimiento fue “sencillo” queremos este morongazo de maquinas con Ubuntu (y en la letra pequeña decia “pero que jale el Oracle Forms”). Adidas Ultra Boost Uncaged France Luego de cranearla un cacho lo mas paja entre comillas o lo unico talvez que se podia hacer era montarlo con Wine y esta es mas o menos la vuelta que hay que dar para que el asunto jale.

  • Actualizar los repositorios y hacer un upgrade solo por si acaso algo anda fuera de fecha

[bash]sudo aptitude update && sudo aptitude upgrade[/bash]

  • instalar smbfs

[bash]sudo aptitude install smbfs[/bash]

  • montar la unidad (a mano)

[bash]sudo mount -t smbfs -o username=nombre_usuario,password=pass_usuario,ip= //server_remoto/unidad /punto_de/montaje[/bash]

  • para montar la unidad al inicio de la sesion de usuario agregar esta linea al archivo /etc/fstab

[bash]// /home/usuario/.wine/drive_c/punto_de_montaje smbfs username=nombre_usuario,password=pass_usuario 0 0[/bash]

  • instalar Wine

[bash]sudo aptitude install wine[/bash]

  • luego de terminar la instalacion ejecutar el comando wincfg y configurar el entorno de wine a Windows 98

  • descargar winetricks a /home/usuario/.wine/ (esto no recuerdo para que lo hice pero en cuanto regrese la memoria les actualizo el post)

[bash]wget -c[/bash]

  • Instalar Oracle Forms 6i (solo tuve oportunidad de probar esta version, no se si funciona con alguna mas reciente)

[bash]wine /media/cdrom0/setup.exe (o donde tengan montado el cdrom y/o como se llame el instalador del Oracle Forms[/bash] Primero se instala el Oracle Forms Developer (si acaso no se lee bien la imagen, lo que se esta instalando es Forms Runtime y Oracle TCP/IP protocol adapter 8.0.6…. este ultimo se instala a mano porque al ser un ambiente wine la instalacion no detecta tarjetas de red y no lo pone (esto nos valio dos semanas entenderlo xD)) Luego se instala el Oracle Reports Developer

  • agregar / modificar las siguientes llaves en el registro en HKEY_LOCAL_MACHINE/SOFTWARE (notese que las diagonales son dobles)

[bash] FORMS60_PATH=C:\\path\\en_wine\\a_la_carpeta_bin_del_oracle_forms\\bin;c:\\path\\en_wine_a_la_carpeta_de_librerias_si_existiera\\comun\\libs UI_ICON=c:\\path_a_la_carpeta_de_iconos_si_hubiere sistema=L local=nombre_del_string_de_conexion [/bash]

  • La aplicacion se levanta con una linea como esta dependiendo del modulo, user y pass…

[bash]wine /home/usuario/.wine/drive_c/carpeta_oracle/BIN/ifrun60.EXE /media/punto_de_montaje/aplicacion/main.fmx user/pass@string_de_conexion[/bash] y Listo. El ultimo paso seria crear un Launcher dentro de ubuntu para cargar alguna aplicacion, esto se hace de la siguiente manera:

  • Crear un “launcher” en Ubuntu
  • se le pone el nombre de la aplicacion que se desea
  • en el campo “command” colocamos esta linea

[bash]wine /home/usuario/.wine/drive_c/carpeta_oracle/BIN/ifrun60.EXE /media/punto_de_montaje/aplicacion/main.fmx user/pass@string_de_conexion[/bash] y listo.

The post Oracle Reports sobre Ubuntu appeared first on SiRGt's Blog.

Miércoles 16 de septiembre de 2009

Problemas Tecnicos

Entre antes de ayer y ayer tuve problemas tecnicos con el VPS que aloja ahora este blog (si porfin migre de DreamHost a un VPS), el clavo era que el consumo del CPU se disparaba al 400%, esto significa que el servidor se quedaba trabado, la solucion a mi problema la encontre en los foros de Linode.

El problema era especificamente la configuracion del apache, el muy infame no soportaba el trafico entrante y se enloopaba tratando de soportarlo, conclusion server al suelo.

Esperamos no tener mas de estas sorpresas aunque son experiencia =D


The post Problemas Tecnicos appeared first on SiRGt's Blog.

Domingo 28 de septiembre de 2008

GNU/Linux + Modem Edge USB + Debian Sid

Hoy estuve configurando el modem Edge usb de mi primo, en nuestro sistema operativo favorito. con un #lsusb Bus 001 Device 002: ID 22b8:4902 Motorola PCS Triplet GSM Phone (AT) Luego de buscar, gracias a msamour , con un par de cambios para Guatemala. Primero un rápido #apt-get install wvdial Luego el archivo de configuración […]

Lunes 01 de septiembre de 2008

Heartbeat, mi configuración

Cuando estaba leyendo documentación, acerca de heartbeat lo que más me gustó, es el nombre de la técnica utilizada para nodeFencing, STONITH: “Shut the other node in the head”, que buen hack ;), a groso modo cuando un nodo del cluster es declarado muerto, este se asegura de que realmente lo esté, con un tiro […]

Miércoles 09 de abril de 2008

El hack en el Incompatible Timesharing System

Cada vez que leía o escuchaba a Stallman decir: “El Laboratorio de IA usaba un sistema operativo denominado ITS (Incompatible Timesharing System)” no comprendia el hack que decía tener el nombre del sistema “Incompatible Timesharing System”, hasta hace un par de días. Me encontraba en la biblioteca central de la universidad, con el libro del […]