Canales populares

Que uso para programar

Como le va a la gente ? Hace mucho tiempo que no publico nada y hace bastante que publique un post sobre las herramientas para programación web que usaba hace ya 3 años que bajo mi perspectiva actual es horrendo.
http://www.taringa.net/posts/ebooks-tutoriales/7941368/Queres-ser-programador-web-entra-aca.html

Así que me decidí a pasar pagina de una vez por todas y mostrarles que uso ahora que estoy un poquitin mas golpeado en materia de desarrollo.

Me gano la vida desarrollando software y en la actualidad sitios web. Las aplicaciones web son un estilo de software que presenta muchos desafíos y en adelante explicare porque pero de momento lo resumo en que es común pasar por alto grandes obstáculos. Y que al desconocerlos se van a presentar cuando menos lo esperes y te van a hacer quedar como un idiota. El objetivo de este post es contarles cuales son muchos de esos y que utilizar para sortearlos mas rápido.

Voy a hablar de algunas herramientas útiles. Muchas de esas no son nada novedosas por el contrario, se encuentran como estándar de muchos profesionales y oficinas de desarrollo.


GNU/Linux - ¿perdón? me estas diciendo que si no usas linux no vas a poder desarrollar sitios web ? -
No no es eso, ya sea mac, linux, windows, bsd o lo que estés usando podes desarrollar software, pero destaco linux por una cosa en particular, libertad. Como informático me parece fascinante tener un sistema operativo que te invita a crecer, a que conozcas como funciona, que lo puedas cortar a tu medida. Un SO en donde no parece haber limites. Es muy triste que un sistema diga:  - deje de funcionar porque ... lo nuestro no puede ser, ya no es lo mismo que antes - :<
Por supuesto que linux no es perfecto .. no, para nada. Vas encontrarte con problemas como en cualquier otro sistema, Pero a diferencia de algunos otros cuando consigas resolver el problema no te vas a encontrar vació. El sistema fallo por una causa y la corregiste y ahora entendes un poco mejor como funciona. Esa es la belleza de gnu/linux ... crece junto con vos. Tambien existen alternativas a GNU como freebsd y openbsd solaris y varios otros. Que presentan las mismas características y ventajas.

CLI (Command Line Interface)

Las interfaces de linea de comando también conocidas como ... consolas y peor conocidas como "pantallas negras". Son versátiles y especificas, la capacidad de poder comandar el sistema desde ahí es como ser un lo que llamo un Master of Puppets. En síntesis te permiten manipular el sistema desde su interior. Es una forma de comunicarse con el sistema a bajo nivel. Como desarrollador no deberías subestimar su tremenda utilidad.

Luego pasamos a un conjunto de utilidades mas especificas:
Tmux

Tmux es lo que que llaman un multiplexor, cuando uno accede a un sistema bajo consola, se nos inicia solo una session de comandos. Pero con tmux uno tiene la capacidad de crear varias sessions dentro de la primera y ser separadas por ventanas y paneles e inclusive otras sessiones. ¿y para que carajo nos sirve esto? Bueno, para crear tu entorno de trabajo, tener separado en partes donde vas a correr tus programas, donde los vas a depurar, donde vas administrar las versiones del proyecto etc etc.

Git
git es un sistema de control de versiones, y no a muchos les surge la necesidad de versionar su trabajo, pero la realidad es que es bastante practico. Porque el proyecto en el que estas generalmente se encuentra en 2 etapas, desarrollo y producción. Y muchas veces estas etapas se solapan. El cliente quiere una parte en producción y el resto que continúe desarrollándose. A su vez existe la posibilidad de que no trabajes solo sino que trabajes con otros colegas en equipo. Y todos necesitan trabajar en local con una copia del proyecto y escribir mucho código y generalmente en mismos archivos en los que escribe uno. Y una vez que terminan, ¿ como unen todos este trabajo disperso en uno solo ? Ahí es donde la utilidad de git entra en rigor. Permite mantener, comparar, y fusionar múltiples versiones del mismo proyecto. La tuya, la que tiene el cliente, la que tiene tu colega, la unión de todo eso y cada etapa por la que llegaste a eso.

En la actualidad cuando se menciona git parece imposible no poder mencionar a uno de los servicios que contribuyeron mas en su popularidad Github, que es hoy en día lo que se conoce como la red social de los programadores. Es uno de los servicios gratuitos de alojamiento de repositorios mas popular de todos. A este le sigue muy de cerca Bitbucket que ademas de ofrecer soporte para repositorios en git, ofrece tambien servicios para poder utilizar mercurial y que ofrece a su vez la posibilidad de tener proyectos privados de forma gratuita con hasta 5 contribuidores.
Pueden pasarse a esta guía interactiva que ofrece github que muestra como funciona git
try.github.com


El editor
Si hay algo en lo que se destaca la informática es en ofrecer alternativas, lo que usas para trabajar posiblemente no sea la único que cumple con esa demanda y cuando se trata de editores, surge la gran pregunta ¿que editor es el recomendable para trabajar?
Para vuestra desgracia no existe una respuesta directa, porque la realidad es que el editor ideal es el que a vos te parezca mas cómodo. Pero si es cierto que muchos de esos se destacan por su popularidad y trascendencia. En la actualidad hay al menos 3 editores que se destacan por su versatilidad. Sublime Text, Brackets y Atom. Los 2 últimos aun no han emergido completamente en una versión estable y aun asi decenas de miles de desarrolladores se encuentran decesos de usarlos y en efecto los usan. Los 3 se perfilan como excelentes alternativas son altamente personalizables y los 3 se presentan como herramientas gratuitas y solo brackets y atom como tecnologías libres.
Pero ... pero jeje a su vez existe otra estirpe de editores, los editores que me gustan a mi, son los de la vieja escuela, ágiles, con una fuerte nota de complejidad y con una pronunciada curva de aprendizaje pero que una ves superada nos permite codear como reyes. Son 2 y de ellos solo manejo uno, por la sencilla razón de que no me da la mente para dominar a los 2.
Son vim y emacs, con orígenes en génesis de la informática estos 2 editores presentan que los demás editores solo has conseguido imitar pero jamas alcanzar. En mi caso me incline por vim y sin ningún desprecio hacia emacs como dije antes ... solo podía aprender uno de los 2.
vim

es un editor bajo linea de comandos es decir lo podes correr desde la consola y permite navegar por el código en varios modos sin necesidad de usar el mouse (a pesar de que lo permita). La idea detrás de este tipo de editores no apartar las manos de la posicion estándar del teclado es decir, las manos siempre están en una misma disposición de modo que ya sea al navegar o editar el documento no alzas las manos ni para alcanzar las flechas del teclado. Literalmente te flamean los dedos al codear. Creo que es necesario que les confiese que me fascina vim y en cuanto al apartado de editores trato de ser objetivo y no mostrar mis inclinaciones pero es que es demasiado bueno
Cabe destacar nuevamente lo de la curva de aprendizaje pronunciada, me tomo cerca de 6 meses dominar lo suficiente este editor al punto de que me permitiese trabajar con el naturalmente. Es decir no es para nada sencillo al principio recordar los comandos que se necesitan para poder editar, personalizarlo con componentes como ctrlp para navegar entre los archivos. Añadirles cosas como Syntastic y demás plugins que de ser necesario mencionarlos a todos y como funcionan necesitaría hacer otro post. Pero al final de mucho esfuerzo rinde sus frutos y programar vuelve a ser algo placentero.

ranger

Del mismo modo que quiero navegar entre archivos me gusta navegar entre el sistema de archivos. Algo que sea practico y veloz, y aquí fue donde apareció ranger, un File Manager hecho a base de vim por lo que mi alegría no pudo ser mayor. Es muy muy fácil de instalar muy rápido y no le debe nada a cualquier editor de interfaz gráfica. Muevo archivos de un lado a otro de la maquina usando comandos equivalentes a los que uso en vim y sin llevarme sorpresas.

Y esos son los componentes que uso en mi entorno de trabajo diario y esto es lo que hago ni bien enciendo mi maquina.

Me paro en un escritorio especial que llamo workspace, (el entorno de ventanas que uso se llama awesome vm)


Inicio una Terminal CLI de todo el grande de la pantalla, (el cliente de terminal/bash que estoy usando se llama XTerminal )


Inicio una sección tmux dentro del terminal (mi tmux se ve distito a como viene por defecto porque tiene un plugin llamado tmux-powerline que le cambia bastante la cara)


y luego creo 4 ventanas dentro de él


la ventana numero #0 es donde corro el programa y las utilidades de la plataforma que estoy usando. De momento estoy usando laravel (un framework hecho en PHP)
y viene con una utilidad llamada artisan y como el artisan hace tantas cosas le dedico una ventanita del amor para correr las cosas que hace

Entonces en la ventana de la izquierda corro el web service que provee artisan y a la derecha cualquier otro comando como puede ser la creación de migraciones, la actualización del autoload o simplemente usar la interfaz de mysql



La ventana #1 la dedico al trabajo con git, ahora hay acciones muy comunes que se llevan a cabo con git, ver el status en el que te encontras, recorrer el logo de las confirmaciones que hiciste y llevar a cabo operaciones de escritura y diferenciación.
De modo que divido la ventana en 3 paneles
Log (Arriba a la izquierda) - Status y datos de la confirmación actual (abajo a la izquierda) - Diferencias y ejecución de confirmaciones a la derecha


La ventana #2 se la dedico a vim únicamente, lo divido en 2 ventanas verticalmente y a esas 2 como si fuesen columnas suelo dividirlas horizontalmente si estoy muy enfaenado.


Por ultimo la ventana #3 la uso para manipular archivos con ranger, divido la ventana en 2 paneles horizontales en el superior inicio ranger y al inferior lo utilizo para cualquier operación con archivos que tenga que hacer de manera adicional


Y eso es todo por ahora !!! Quizá mas adelante detalle en mas profundidad como uso cada herramienta por separado pero esto es en grandes rasgos lo que utilizo y me funciona muy bien.
0No hay comentarios