Category Archives: tecnología

tecnología

Git Bash vs Git CMD

Hablemos un poco sobre Git-Bash vs Git-CMD. En Windows cada instalación de Git añade tres elementos básicos:

  • Git Bash
  • Git CMD
  • Git GUI

Para aclarar la curiosidad repasemos que son cada una de estas opciones.

Git GUI

Git GUI es la más fácil, es el editor gráfico nativo que provee Git. Confieso que no uso esta herramienta ya que prefiero SourceTree y como segunda opción GitHub Desktop. Pero de vez en cuando juego con ella y no está nada mal.

Git CMD

El único propósito de Git CMD es podamos utilizar Git desde el terminal de Windows. Suena obvio pero para entender porque existe debemos acordarnos que las cosas funcionas diferente en Windows. Git es una herramienta que nace en el corazón del desarrollo de Linux. Para poder proveer la portabilidad de Git entre ambos sistemas, Git CMD provee un elegante wrapper que le permite a los desarrolladores de Windows seguir usando el CMD sin necesidad de brincar a otro Shell. Ahora, la próxima vez que tengas que instalar Git en Windows podrás entender un poco mejor la siguiente imagen:

Windows Git Setup

Si nunca has usado Git CMD no necesitaras de esta opción en la instalación.

Git Bash

Git Bash le permitirá usar herramientas MinGW/Linux Bash con Git en la línea de comandos. Todas esas cosas bonitas que se hacen en Linux también las podemos hacer en Windows a través de Git Bash.

Si usas VSCode hay manera de configurarlo para usarlo desde el editor.

tecnología

Cómo configurar Git Bash en VSCode

VSCode es una joya. Con la opción de poder levantar un terminal en el mismo editor mi corazón de developer se siente más que agradecido. Pero, la opción por default que ofrece es Powershell. No tengo nada en contra de Powershell pero mi corazón pertenece a Git Bash. Lo mejor de VSCode es que lo podemos adaptar a nuestro gusto y necesidad. Hagamos el cambio para usar poder disfrutar de Git Bash en VSCode.

Primero vamos al área de los settings. File > Preferences > Settings. Para facilitar la búsqueda entre los cientos de settings disponibles VSCode provee una barra de búsqueda en la parte superior donde se encuentran las distintas opciones, Search Settings. Con solo escribir Shell será suficiente. Ahora necesitamos modificar las siguientes dos opciones.

// The path of the shell that the terminal uses on Windows. When using shells shipped with Windows (cmd, PowerShell or Bash on Ubuntu), prefer C:\Windows\sysnative over C:\Windows\System32 to use the 64-bit versions.
 "terminal.integrated.shell.windows": "C:\\WINDOWS\\Sysnative\\WindowsPowerShell\\v1.0\\powershell.exe",

  // The command line arguments to use when on the Windows terminal.
  "terminal.integrated.shellArgs.windows": [],

Vamos a cambiar dichas propiedades de la siguiente manera:

  "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
  "terminal.integrated.shellArgs.windows": [
    "--init-file",
    "C:\\Program Files\\Git\\etc\\profile"
  ]

Recuerda que con tan solo hacer clic en el lápiz la propiedad se copia a tu archivo settings.json. Una vez hagas el cambio todo esta listo. Presionas Ctrl + ` y ya tienes Git Bash en la terminal de VSCode.

tecnología

Puerto Rico se prepara para Hackea por una Causa

Hackea por Una Causa” es el primer hackathon y bootcamp empresarial para causas benéficas de Puerto Rico. En este evento se estarán reuniendo diferentes organizaciones sin fines de lucro con el propósito de presentar ante un grupo de programadores, innovadores, diseñadores, y empresarios diferente necesidades que puedan ser suplidas a través de la tecnología, el empresarismo y la innovación social. Actualmente “miles de organizaciones sin fin de lucro [en Puerto Rico] no tienen acceso o conocen cómo integrar adecuadamente la tecnología para adelantar su causa y lograr un mayor impacto.” La intención de Hackea por Una Causa es acortar esa brecha tecnológica.

Las organizaciones tienen desde hoy para someter sus necesidades. El evento será del 31 de Marzo al 2 de Abril en la Fundación Banco Popular.

Esta es una oportunidad única para demostrar que unidos podemos hacer obra de gran impacto social a través de la tecnología. Te animo a que vayas preparando tu equipo de trabajo y busques mas información en su pagina web.

Se parte del cambio. Revolución con causa.

tecnología

Encuesta oficial de Programadores Puerto Rico sobre Análisis de Salario


En los pasados años uno de los temas recurrente entre los usuarios del grupo Programadores Puerto Rico es el asunto del salario ofrecido por los patronos de la isla. Las historias generadas alrededor de este asunto han sido muy interesantes. Los números capturados por varias iniciativas también han sido igual de interesantes. No obstante no hemos logrado colectar una muestra representativa para poder realizar un análisis más detallado.

Versión 2017

Este año para incentivar la participación estaremos regalando dos certificados de Amazon cada uno de $25.00. Además hemos creado una encuesta un poco más abarcadora pero a la vez fácil de responder. A pesar de que el origen de esta iniciativa nace en el Grupo Programadores Puerto Rico, nuestro deseo es poder también atender a la comunidad hispano parlante. Ten la confianza de completar la encuesta aun si no resides en Puerto Rico. La encuesta también toma en consideración diferentes especializaciones dentro de la Industria de Tecnología y no solamente a la programación como oficio. Contamos con tu participación. Puedes completarla a continuación o visitando el enlace a final.

Encuesta oficial de Programadores Puerto Rico sobre Análisis de Salario

tecnología

Hello Open Source

Es increíble el momentum que está experimentando el movimiento Open Source Software en la industria del desarrollo de software. Vemos como los principales nombres de la industria, lanzan proyectos en donde gente como tú y yo podemos colaborar. Con el OSS no solo podemos ver el código fuente sino también podemos sugerir y aportar modificaciones al mismo. Podemos crear una gran lista de pro vs cons de este mover, pero la evidencia apunta a que el beneficio mayormente es positivo tanto para los dueños de los proyectos como para nosotros los usuarios. Continuar la lectura…

tecnología

Team blogs a seguir durante el 2016

La siguiente colección presenta algunos de los team blogs que estaré siguiendo durante el próximo año.

The GitHub Blog

Donde estaríamos si no fuera por Git? La mejor respuesta posiblemente sea amarrados a un version control centralizado. No hay dudas de que sino fuera por Git, Github no tendría razón de ser. Al menos no como lo conocemos hoy en día, donde prácticamente se ha convertido en un centro de desarrollo masivo en el cual constantemente nacen proyectos, ideas y experimentos que retan la imaginación, y muchas veces la lógica. Viviendo cada días más dentro de este version control system estoy convencido que debo estar al tanto de cómo se van moviendo las cosas por allá adentro. Durante el 2015 pude leer varios artículos de muy buen contenido así que vamos a ver que aparece durante este próximo año.

Stack Overflow Blog

La razón principal para seguir este blog  es debido a que el code base de Stack Overflow es en C#. Dentro de todos los proyectos bajo la sombrilla Stack Overflow, uno que me llama mucho la atención es Dapper, que prácticamente es una alternativa liviana al Entity Framework de Microsoft.

The Netflix Tech Blog

El app de Netflix prácticamente corre en cualquier aparato. Si algún día alguien decidiera conectarle un puerto HDMI a una habichuela, estoy seguro que el team de Netflix buscará la manera de ejecutar el app desde la habichuela haciendo uso de organic computing. Y es que este team si que no se cansa de programar su app en cuanto aparato exista. Cada vez que publican algo el nivel de detalle es impresionante. Vale la pena leer sus notas, que aunque los temas sean de tipo “rocket science”, siempre se aprende algo.

Instagram Engineering Blog

Siguiendo la misma línea de The Netflix Tech Blog, el nivel de detalle en cada publicación es realmente agradable. Y es que cuando se quiere aprender cómo los chicos grandes hacen las cosas es mejor ir directamente a la fuente. Este team no publica regularmente pero cuando lo hacen los temas y los problemas que atacan son de gran interés.

Yelp Engineering

Este blog habla como a través de la iniciativa Yelp Open Source podemos utilizar las herramientas que la plataforma usa para beneficio de nuestros proyectos. A mi me interesa seguir de cerca cómo utilizan Docker y cómo les beneficia esta tecnología.

High Scalability

No quiero pasar por alto este blog que, aunque no pertenece a ninguna compañía de desarrollo, sus notas son de alto contenido educativo. Sin duda un recurso que debemos tener a la mano cuando tengamos dudas de como hacen los grandes para resolvérselas escalando los problemas que trae el crecer a grandes escalas.

Extra

Los siguientes no son exactamente team blogs pero de alguna forma son personas que merecen atención. La lista pudiera ser larguísima pero durante el 2016 he decido centrarme en tres de ellos. Probablemente el nombre de Salvatore Sanfilippo no te suene, pero si menciono Redis si. Este individuo es el creador y sus notas son bastante técnicas. De esas que te tientan a pensar que realmente no eres un programador de verdad (quizás exagero). Sara Soueidan, experta en el tema de CSS, SVG y JavaScript. Sus notas proveen gran contenido sobre el tema de user experience design y las próximas tendencias relacionas al diseño web. Y por último para reforzar el área de seguridad, tema que seguirá candente este año, Troy Hunt. Además de ser un experto en esta materia sus tips sobre Azure y ASP.NET son de gran valor.

tecnología

Trello, el arma secreta para el developer desorganizado

Todo buen developer al menos una vez en su vida ha defendido que ser desorganizado es una virtud. Pero muy similar a la teoría de la relatividad de Einstein, la desorganización es relativa al estado de movimiento ánimo del observador. Teoría confirmada mil veces por mi madre y luego validada a través de mis jefes de trabajo.

Recientemente leí un artículo muy bueno titulado “The most important skill in software development”. El artículo no es muy largo como para hacer un tl;dr del mismo pero trata sobre la virtud de organizar algo. En este caso coding y cómo esta característica es crucial aun contando con un conocimiento técnico elevado.

Curiosamente esa semana me encontraba en una especie de catarsis sobre que en tecnologías debo enfocar mis energías y que cosas estoy haciendo o dejando de hacer para lograr esas metas técnicas. Una de las ideas que analice fue precisamente el cómo estoy organizando mi tiempo y cómo estoy manejando mis proyectos.

Llevando usando un web app por bastante tiempo para manejar prácticamente todo lo relacionado a como organizarme y poder visualizar hacia donde debo dirigir mi atención. Esa herramienta es Trello. No hay dudas que ha sido de gran utilidad y les voy a explicar porque y como lo he incorporado a mi rutina de desarrollo. Primero veamos que es Trello.

Trello es una aplicación que permite crear boards que se componen de listas, organizadas a través de tarjetas que puedes, si lo deseas, compartirlas entre diferentes miembros de un equipo. El factor del sharing es de gran utilidad pero igual funciona si eres un solo developer. Todo proyecto de software posee cierto grado de complejidad. No importa lo sencillo que pueda sonar al momento de la implementación debemos tener claro como lo vamos a ejecutar. Por tal razón cuando trabajamos desarrollando software debemos procurar organizarnos de la mejor manera posible. La calidad del código no depende de cuan robusto sea nuestro stack. Depende de cuan organizado y claro es nuestro trabajo. Ya seas que persigas las tendencias de Personal Kanban o en mi caso Scrum, Trello es un gran candidato para ser usado como herramienta de Project Management y Task Tracking. Adobe lo usa en el desarrollo de Brackets.

Scrum example

¿Que lo hace tan especial?

Trello es un gran software y es gratis. Es creado por la gente detrás de Stack Exchange (ya sabes StackOverflow?) y su mascota es un perro Husky llamado Taco. Sus aplicaciones mobile en iOS y Android son geniales y todo se mantiene finamente sincronizado. Con Evernote he tenido varios problemas manteniendo sincronizadas las notas. Hasta el momento Trello no ha fallado. Además de usarlo para manejar las tareas de mis proyectos, lo utilizo para otras cosillas como tomar notas en reuniones, organizar links para posibles artículos, para organizar mi colección de comics, mantener al día las reparaciones del hogar y más. No es para menos hayan varios que se atrevan a decir que Trello puedo ser utilizado para organizar prácticamente toda tu vida. Y créanme no están muy lejos de la verdad.

En cada tarjeta se puede colocar una descripción, imágenes, attachments, checklists, etc. Puedes mover cada elemento a diferentes tarjetas y organizarlas como mejor entiendas. Veamos como creamos un checklist.

Trello checklist

Apenas hemos tocado lo básico. Te invito a que lo pruebes por un rato y me cuentes si te ha gustado. ¿Te animas?

tecnología

Cómo instalar Laravel Homestead en Windows

Anteriormente había escrito como podemos aprovechar las ventajas de PuPHPet para construir de forma rápida ambientes de desarrollo enfocado en PHP. PuPHPet sigue siendo un gran proyecto y actualmente la cantidad de configuraciones que podemos generar a través de su aplicación web es impresionante.

Otra plataforma que podemos adoptar como ambiente de desarrollo para PHP es Laravel Homestead. Homestead es el virtual box oficial para crear aplicaciones utilizando el framework Laravel. Esta máquina virtual posee todo lo necesario para el desarrollo local de aplicaciones web e incluye PHP, HHVM, Nginx, MySQL y más (hasta NodeJS).

Existen un sin número de tutoriales de como instalar Homestead, inclusive unos de los puntos fuertes de usar un producto derivado de Laravel es su extensa y muy elaborada documentación. En este caso vamos a enfocarnos en como configurar Homestead en Windows.

Vamos a definir cuáles son los pre-requisitos. Antes de usar Homestead necesitamos instalar, Virtual Box, Vagrant y Git. Prácticamente vamos a ejecutar el instalador de cada una de las aplicaciones ciegamente instalando todo y aceptando las propiedades y parámetros que ofrecen como estándar. Estas 3 herramientas proveen las bases para poder levantar el vm de Homestead sin problemas.

windows-homestead-01

Una vez terminen las instalaciones vamos a confirmar que las herramientas hayan instalado sin muchos contratiempos. Vamos a utilizar el Git Bash que incluye Git y verifiquemos que hayamos instalado Vagrant escribiendo:

$ vagrant -v

La version que estoy usando es Vagrant 1.7.2. Hagamos la misma verificación para Virtual Box.

$ "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" -v

Para Virtual Box estaremos usando la versión 4.3.12r93733.

Ahora vamos a seguir las instrucciones que se encuentran en la documentación de Homestead. Lo primero será añadir el box de HomesteadVagrant.

$ vagrant box add laravel/homestead

Este comando te preguntará que tipo de proveedor deseas usar,

1) virtualbox 2) vmware_desktop

Aquí es donde se descarga la máquina virtual a nuestra laptop o PC. Escojamos le opción de virtualbox y dejemos que el archivo baje. En una conexión decente esta acción puede tomar hasta 5 minutos.

Para comprobar que el box ha bajado correctamente lo verificamos listando los box que tenemos configurados en Vagrant. Ahí debe aparecer laravel/homestead.

$ vagrant box list
laravel/homestead       (virtualbox, 0.2.5)
precise32               (virtualbox, 0)
trusty64                (virtualbox, 0)

Ahora vamos a clonar el repositorio de Homesetead.

git clone https://github.com/laravel/homestead.git MyProject

Esto creará un folder MyProject que será el root de nuestros archivos. Vamos a entrar al folder MyProject y de ahí vamos a ejecutar:

bash init.sh

Este script creará el archivo Homestead.yaml en c:\.homestead. El archivo Homestead.yaml contiene la siguiente configuración:

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Code
      to: /home/vagrant/Code

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public

databases:
    - homestead

variables:
    - key: APP_ENV
      value: local
...

Aquí es donde cambiaremos un poco las cosas para que adaptarlas a Windows. Lo primero que vamos a modificar es el SSH key. Si has usado Github de seguro ya tienes una de lo contrario obtener una a través de Git Bash es fácil. Solo necesitas copiar el siguiente código en el Git Bash:

ssh-keygen -t rsa -C "tu-nombre@homestead"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Jaime/.ssh/id_rsa):
...

El lugar en donde guardes la llave es importante porque luego lo vamos a utilizar para configurarlo en nuestro archivo Homestead.yaml. Es importante destacar que el archivo Homestead.yaml utiliza la notación de Unix para definir la localidad de los archivos. El uso de ~/ indica que este será nuestro home o root path. En Windows podemos encontrar nuestro equivalente verificando el path que contiene la variable HOME. Averiguar es muy fácil, vamos a System >> Advanced system settings >> Environment Variables…

windows-homestead-02Una vez aparezca la ventana de Environment Variables buscamos la variable HOME.

windows-homestead-03

En mi caso vemos que el path definido en la variable HOME apunta a C:\Users\Jaime. Por el contrarios, si deseamos utilizar al path completo tenemos que invertir los \ por /. Dicho esto los siguientes comandos son equivalentes:

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa
authorize: C:/Users/Jaime/.ssh/id_rsa.pub

keys:
    - C:/Users/Jaime/.ssh/id_rsa

Por último vamos a cambiar la configuración del parámetro map para apuntar al folder MyProject,

folders:
    - map: ~/Documents/Code/MyProject
      to: /home/vagrant/Code

Una vez hayas configurado por completo el archivo Homestead.yaml puedes ejecutar el comando vagrant up desde el folder MyProject y listo.
Ahora desde tu navegador puedes visitar la dirección de ip http://192.168.10.10 y si ves la siguiente oración, “No input file specified.” es que todo está listo para comenzar el desarrollo o para instalar Laravel.

tecnología

Tecnologías que definirán el futuro

Si tuviera que explicar que tecnologías transformaran muchas de nuestras actividades en el futuro no tengo duda que puedo tomar de referencia y partir de los temas mencionados en el artículo Mis Apuntes de Singularity University de Eduardo Salles. Eduardo es la persona detrás de Cinismo Ilustrado, una colección de imágenes irreverentes pero geniales sobre cultura  y temas de actualidad. Había visto algunas de sus viñetas navegando por ahí pero me había detenido a indagar en la personalidad del diseñador. Después  de haber leído el artículo creo que le sigo en todo sus medios sociales.

En palabras simples, Singularity University es una entidad que se dedica a educar sobre tecnologías que poseen el potencial de causar un impacto exponencial a millones de personas alrededor del mundo. Singularity University evangeliza sobre tecnologías que pueden construir el futuro a través de nuevas tecnologías.

Eduardo tuvo la oportunidad de participar en una serie de talleres intensivo en Mountain View sobre cómo se está construyendo el futuro a través de nuevas tecnologías exponenciales. El artículo desataca de forma muy creativa a través de doodles los temas a los que Eduardo fue bombardeado a lo largo de los talleres. No pretendo detallar cada tema ni repetir sus notas pero me interesa listar los temas que como mencione al principio son dignos de cualquier conversación nerdista.

  • Inteligencia Artificial
  • Quantified Self
  • Big Data (Forecasting)
  • Internet of Things
  • Singularidad y Abundancia
  • Ingeniería Genética
  • 3D Printing
  • La Revolución Maker
  • Design Thinking
  • Data Science
  • Robótica
  • Innovación Corporativa
  • Tecnologías Exponenciales

El artículo está lleno de referencias a libros que complementan perfectamente los temas tocados en las notas. Lo interesante de haber leído el artículo es que prácticamente en cada tecnología se refleja la necesidad del programador y/o analista. No cabe duda que el éxito para lograr la implementación de la mayoría de las tecnologías destacadas en las notas es bajo el fundamento de la computación y el análisis intenso de la data. El futuro para nosotros los programadores es realmente prometedor.

tecnología

Crear un Webiste en Microsoft Azure Gratis

Pero solo por una hora… a manera de test-drive, la plataforma Azure de Microsoft estará disponible para experimentar crear y desarrollar websites gratuitamente. Por espacio de una hora estarás usando la arquitectura de la nube que dicha compañía provee. Tendrás la oportunidad de crear el website utilizando C#, Java, NodeJS, PHP o incluso solo HTML5. Puedes también escoger una template y de ahí comenzar a jugar. Otro punto atractivo, además de “interactuar con Azure”, es que puedes usar la versión online de Visual Studio o incluso descargar los files para continuar el desarrollo en tu ambiente local. Lo cual es ideal sabiendo que en una hora expira el uso.
Una hora es muy poco pero al menos te da una perspectiva de lo que puede ser un crear un website usando Azure. Aprovechen mientras dure.