Wednesday, April 30, 2008

new home

Este blog se cambia a http://squad.devworx.com.mx/blogs/joseluis/default.aspx

de ahi podremos trabajar mucho mejor.

gracias por su visita, los espero alla!

jluis;

Posted by JLuis.Estrada at 03:50:25 | Permalink | No Comments »

Wednesday, December 26, 2007

F#: Como empezar

Creo que la mejor forma de empezar con este lenguaje (y con cualquier nuevo lenguaje) es saber para que lo queremos aprender.
Sip, asi es. Digo, generalmente aprendemos un lenguaje nuevo porque asi nos lo pidieron en la escuela, o porque lo necesitamos para un mejor puesto, o porque nuestro vecino lo sabe y queremos ser mejor que el.
Pero aprender un lenguaje -como tengo repitiendo muchas veces en tan poquitos posts- es mas que aprender la sintaxis; es aprender su filosofia y su paradigma.

Pero como ya sabemos cual es el paradigma de F# (ver posts antiguos) y ya estamos semi convencidos de que queremos aprender este nuevo lenguaje, ahora debemos formularnos la pregunta basica: Donde empiezo???

Pues bueno, lo primero es conseguir el compilador.
Esta claro que sin la herramienta para desarrollar jamas podremos llegar a algun lado. No hay como la practica para aprender algo nuevo, y en la programacion aplica lo mismo. Asi que lo primero es conseguir el kit de desarrollo del lenguaje.

Aqui encontraran el instalador de la ultima version del compilador. Para ello necesitaran el Visual Studio 2005 (yo lo he probado con el Team Suite y me ha funcionado de maravilla, pero supongo que funcionara en la version Express e incluso, en las versiones 2008).

Al instalarlo, ademas de instalar el compilador, nos instalara unos templates para desarrollo ademas de varias mejoras de depuracion exclusivas de F# como el compilador interactivo, un intellisense mas mono y ayuda en linea sensible al contexto.

A su vez, tambien es necesario conseguir algo de bibliografia y documentacion al respecto. Yo les recomiendo el libro Foundations of F# de Robert Pickering, editado por APress. La verdad se los recomiendo impreso porque es un libro que vale mucho la pena. Hasta donde se, es el primer libro oficial del lenguaje y detalla muy bien el lenguaje y las formas en como se puede usar.

Y por ultimo, no pueden faltar la comunidad.
Hay muchos lugares muy interesantes relacionados con F#. Esta por ejemplo la pagina de la comunidad de Microsoft que concentra los lugares mas conocidos. Pero yo les recomendaria especialmente Don Syme el cual contiene muchos datos buenisimos sobre el lenguaje y da concejos muy buenos y practicos. Y tambien pueden darce sus vueltas aqui :D (mensaje patrocinado por PotC! jejeje).

En fin, hay les dejo eso de tarea. Espero en el proximo post mostrarles un pequeno ejercicio y ver las formas en como F# nos ayuda a hacer ciertas cosas mucho mas sencillas.

JLuis;

Posted by JLuis.Estrada at 07:19:19 | Permalink | No Comments »

Saturday, December 1, 2007

Como ser un mejor desarrollador?

Basado en el post/meme del buen roky, he aqui lo que yo creo que hace a un buen desarrollador:

Conocer tu lugar en la cadena alimenticia del desarrollo
Se que esta medio simpatico el nombre, pero es mas o menos la manera mas sencilla que encontre para describirlo. Ahora, en estos tiempos donde el desarrollo es una cuestion de trabajo en equipo. Atras quedaron donde el programador era un heroe solitario (aquellos buenos tiempos)…
Ahora formamos parte de una estructura, donde tenemos que jugar con disenadores, managers, testers (los odiados testers), clientes, etc; Y como todo buen trabajo en equipo, debemos conocer nuestro lugar en la cancha… saber en que momento nos toca participar, y hasta donde es nuestro alcance.

No somos vacas sagradas
El desarrollador no es la pieza clave del proyecto. Ya no tenemos que esperar a que se nos concienta ni a que se nos tenga mimado… creo que en estos momentos creo que podria ser la parte mas despreciable (en cuestiones de que no es mas facil de cambiar) de un equipo de trabajo.
Hay que aceptar que formamos parte de proceso y que no somos lo mas importante. ahora todos somos importantes.

Conoce tus herramientas
Como todo buen albanil (albanil de software, con eso de los arquitectos y cosas asi…), debemos conocer nuestras herramientas para asi poder ser productivo. Y al hablar de herramientas no solo me refiero a conocer el IDE; hablo acerca del compilador, del framework sobre el que este montado, tu base de datos, el lenguaje (y no me refiero aqui a la sintaxis, hablo del paradigma), tus power toys, etc.

Cambia tu modo de pensar
Uno de los problemas mas grandes que tenemos los desarrolladores, es que no cambiamos nuestra manera de pensar, y siempre queremos resolver diferentes tipos de problemas con el mismo conjunto de soluciones.
Hay un sinfin de problemas y para ellos no siempre es bueno la misma solucion. Tenemos la costumbre de que si algo nos funciono una vez, creemos que lo hara por segunda vez en otro problema… Y hasta donde recuerdo, la sentencia dice asi: “Patrones de Diseno: Soluciones probadas  a casos especificos”

Siempre Investigar
No lo sabemos todo, y nunca lo sabremos… pero entre mas aprendamos seremos capaces de afrontar mas problemas, y dar mejores soluciones… Para eso siempre es bueno tener siempre buena bibliografia a la mano y pues dedicarle unos minutos a conocer nuevas tecnologias y por que no, rememorar las ya conocidas.

Amar lo que haces
Si no amas desarrollar, creo que no soportaras el hecho de tenerte que quedar en la madrugada a  codificar, no comer porquerias, ni hacerte adicto al cafe, a los chetos, a los rockstars, pero sobre todo, a disfrutar el hecho de que te esforzaste al maximo y diste lo mejor de ti a altas horas de la noche.

Tener una vida!!!!
Y creo que es lo mas importante. Somos unos geeks, nerds y todo eso que digan de los que amamos esta area, pero tambien somos humanos que pertenecemos a una sociedad (lastima que no son los kinglons) y tenemos que interactuar con ella. Ademas, siempre es bueno safarce un rato de las computadoras y dedicarnos a nosotros: Leer un libro, ir al cine, salir con los amigos por unas cheves, tener novia (aunque tiene sus contras…), disfrutar a la familia…
Creo que todo buen desarrollador debe de encontrar un balance entre su trabajo y su vida, aunque como todos los verdaderos desarrolladores, el trabajo es su vida… oh ironias!

Posted by JLuis.Estrada at 22:14:18 | Permalink | Comments (1) »

Friday, November 30, 2007

Tour Tecnologico 2007 by Microsoft

Este 27 de septiembre me toco formar parte (otra vez) del tour tecnologico de microsoft. Esta vez participe dando la conferencia acerca de las nuevas tecnologias de microsoft sobre Mobile y Visual Studio 2008…

La verdad este tipo de post no me gustan porque en todos lados muchos escriben asi… que podemos decir que sea diferente???

Ha que para empezar la verdad es que el conjunto de herramientas es mucho muy bueno, trae tecnologias que la verdad ya hacia falta mejorar de tiempo atras. Ademas incursionan las pruebas unitarias por fin en el desarrollo de dispositivos moviles. A su vez, por fin el emulador permite guardar configuraciones decentes y crear imagenes de ellas. tambien ya podemos configurar la bateria!!!!

Otra cosa que les quedo bastante bien es el manejo de los SMS, la red GPRS y las llamadas!! ya podemos emular una pequena terminal!!!

La verdad y para serle sinceros a todos, no soy muy adepto a tomar una tecnologia nueva recien sale… siempre es preferible dejar una etapa de estabilizacion en el mercado. Ver que la demas gente se queje de los bug y que ya para cuando salga el SP1, entonces si podamos adoptarlo…

Pero regresando al Tour…. fuera del relajo de la falta de material y de que solo me comi una bolsita de chetos, la verdad las conferencias estubieron muy bien. como siempre, Gabo expuso exelso. A su vez, el Remy, Morgan y dn Salvador hicieron su bienvenida en el mundo de las conferencias. Empezaron muy bien!!!!

Y gracias a Roman por el apoyo y por las maquinas virtuales jejeje

Proximamente habra mas platicas en la comunidad .Net Microsoft de Aguascalientes, entre ellas esta pendiente una de XNA… espero que me salga como tengo esperado!

jLuis;

PS: Tengo que pensar como escribir mi firma en F# :D

Posted by JLuis.Estrada at 01:56:16 | Permalink | No Comments »

Wednesday, November 21, 2007

Otro lenguaje mas???

Generalmente cuando entramos en el mundo del desarrollo, pues siempre empezamos por lo mas facil. Claro, al igual que todo en la vida, siempre tenemos que empezar por aquellas cosas que representan menor reto para que asi sean faciles de recordar, y despues, ir avanzando en la dificultad y en la profundidad de ese conocimiento.

Eso dice la teoria.

Pero almenos en el desarrollo, eso se da no muchas veces.

Negarlo seria enganarnos, pero la verdad es que la mayoria empezamos a programar con BASIC.  Y no es tan malo. Digo, es el lenguaje que ensenan principalmente en todas las instituciones de educacion donde se pretenda ensenar programacion…
Y despues de aprender el bonito y sencillo mundo de basic con sus if…then…else…end if, o sus loop… end loop y su super majestuoso on error, lo que sigue es pasar a algo mas avanzado. Algo que tenga que ver con puntos y comas.

Y ahi hay de dos sopas: delphi o c/c++.

Y ahi aprendemos lo que vendria siendo un lenguaje orientado a objetos de caracter general, estructurado y toda la cosa.

Pero el problema es que muchos se quedan ahi. No deciden avanzar y aprender lenguajes o cosas nuevas. Creemos que programar es solo saberse la sintaxis y las estructuras basicas y que con eso podremos desarrollar las aplicaciones que revolucionaran al mundo… pero no es asi…

Necesitamos conocer la raiz del lenguaje: Su porque, su forma de ejecutarse, su razon de ser. Debemos conocer porque fue creado y que problemas me ayudara a resolver. 

Entonces, basado en lo anterior y repasando los lenguajes que hemos aprendido a lo largo de nuestra vida de estudiantes:

BASIC: Fue desarrollado para estudiantes. i.e.: para aprender a programar. su sintaxis lo mas parecido al lenguaje llano y con estructuras sencillas para que el codificar sea casi como leer un libro.

Delphi: Orientado a datos. Basado en pascal (un deribado de C) con orientacion a objetos. Visual.

C: Un lenguaje minimalista, de mediano nivel, multiproposito y multiplataforma. Hecho de desarrolladores para desarrolladores.

C++ : Version actualizada de C (de hecho lo de ++ (plus plus para los doctos) es un chiste local acerca del nombre) que envuelve multiples paradigmas (la razon de ser del lenguaje): Orientacion a objetos, estructurado y generico.

Que conclusion sacamos de esto? No podemos resolver todos los problemas con un simple lenguaje… hay casos donde hacer una solucion se vuelve un problema, y uno muy grave. Se invierte mas en buscar la maneja de adecuar o adaptar el lenguaje al problema; Es como querer usar un bochito para transportar piedras! e intentar acondicionar el bocho para solucionar ese problema!!

Porque no entonces, elegir otro lenguaje?

Aqui nuestro obstinado y engreido desarrollador interno va a chistar, pues si algo nos duele es aprender un lenguaje nuevo: Para que si ya conosco uno??? (aunque siempre pregonamos en nuestros curriculums: Capacidad de aprender cualquier lenguaje rapidamente…) porque mejor no invertimos ese tiempo en aprender como convertir el bocho en un camion de carga en miniatura y damos muchas vueltas para acarrear esas piedras???…

Es aqui donde debemos sentarnos y pensar mas alla de la sintaxis. Donde debemos profundizar en la historia del lenguaje y averiguar que estaba pensando el disenador al momento de hacerlo. Que queria solucionar (y si realmente lo logro, pero esa es otra historia) y como lo logro.

Todo esto porque recientemente llego a mi un nuevo lenguaje. Yo tengo desarrollando en c# de manera profesional por casi 4 anios. Se me hace un lenguaje muy poderoso montado sobre una infraestructura igual de poderosa. Con multiples capacidades y una adaptabilidad y una flexibilidad que ya quisieran muchos lenguajes.

Pero en el momento que supe lo que era F# (desde el nombre me gusto: F, de functional) y hacia donde estaba encaminado, llamo mucho mi atencion.

F# es el nuevo lenguaje desarrollado sobre el .Net Framework con el cual se pretende abarcar areas que C# dejo fuera (como el paradigma de lenguaje funcional) y ofreciendo el mismo performance y poder de procesamiento. Ademas de que presta una sintaxis poderosa, flexible, elegante y sobre todo: 100% compatible con el .Net Framework!!

Creo que es un nuevo reto que iremos descubriendo en post subsecuentes.
Stay Tuned!

Posted by JLuis.Estrada at 05:53:53 | Permalink | No Comments »

Wednesday, June 13, 2007

Tu porque programas???

Esa es una pregunta que me hé hecho muchas veces.

 Y lo mas probable es que encuentre muchas respuestas en ella: Porque me gusta, porque me dá de comer, porque ademas es un hobby… Pero pues definitivamente no creo que sean respuestas adecuadas.

 Todo eso se remonta al hecho de que yo tengo contacto con computadoras desde niño. Tendria alrededor de 9 años cuando mi papa compro su primera printaform con disco de 5 1/4 de baja densidad, 300 mhz de procesador 80×186 (si saben lo que significa eso??) y muchos discos con programas y juegos. Recuerdo que entre ellos estaba el Lotus 1-2-3 (Precursor de Excel), Wordstar (precursor de Word) y pues todas las maravillas que se podian hacer con MS-DOS. Poco despues se cambio esa maquina por una Lanix con disco duro, Windows 3.11, Paintbrush!!!, Mouse y monitor Policromatico a Escala de grises. Recuerdo que este ya traia floppy de 3 1/2. En esta maquina descubri que me gustaria ser capas de hacer aquello que todos quisimos en un momento dado: Hacer nuestros propios juegos.

Recuerdo que entre a cursos de computación y entre ellos, tube una muy leve introduccion a QBasic, la verdad no recuerdo que tanto aprendi de esa vez, pero hasta entrada la preparatoria volvi a retomarlo y esta vez fue muy natural, pues ya lo conocia. Programar ahi se me hizo algo mucho muy sencillo. A mi no me costaba nada Esquematizar los pensamientos y transformar los problemas en una serie de pasos logicos y formar un algoritmo para de ahi plasmarlo en codigo en ingles. El paso por Pascal fue mas brusco (se me hacia un lenguaje muy feo -y todavia lo es) y ya en la universidad descibri C.

 Pero aqui sucede algo muy curioso, pues yo entre a estudiar la Ingenieria en Electronica cuando lo mas logico era estudias Sistemas Computacionales. Pero yo lo vi desde otro punto de vista: La programación se me facilitaba, y Sistemas solo me enseñaria a trabajar con SW, pero que mejor que poder trabajar con SW y HW, pues como sabemos, el SW es una implicacion lógica del HW, y pues ahi conoci cosas de la programacion que no aprenderia jamas en Sistemas.

Pero bueno, ya dibague del tema, el meollo era encontrar la razón de la cual programamos. Como mencione, todos empezamos queriendo hacer juegos para la computadora, y ese se convierte en la razon de dedicarse a este noble oficio. Otros, descubrieron que el trabajo con las computadoras no necesitaba interacción con otros seres humanos y que por lo tanto no tendrias que quedar bien con otras personas, ni siquiera con la computadora. Y algunos otros -entre los que me encuentro yo- estamos en esto por la capacidad de aprender cosas nuevas.

No se han puesto a pensar, que el programador -o desarrollador, que se me hace mas adecuado- no solo sabe codificar, si no que ademas, termina aprendiendo Contabilidad, Administracion, Procesos, Matematicas y mil y un cosas que necesitan ser plasmadas en una aplicacion. Un buen desarrollador se mete dentro de su aplicacion, entiende el contexto en el cual se esta desenvolviendo en ese momento; para que llegado la hora de plasmarlo en codigo, sepamos exactamente lo que se esta haciendo. Y todo ese involucrarse en el dominio del problema, es aprender. Yo he tenido la suerte de aprender de muchas cosas gracias a ello: He aprendido de oftalmologia, de contabilidad, de GPS y transporte publico, de manejo de procesos gubernamentales, de importaciones temporales y leyes arancelarias, en fin. Este oficio me ha dado la capacidad de cada dia aprender algo nuevo, y no necesariamente de cosas relacionadas a las IT.

A si que, tu porque programas???

Posted by JLuis.Estrada at 09:54:20 | Permalink | No Comments »

Wednesday, May 2, 2007

Codificacion Extrema

Que no es lo mismo que la Xtreme Programming.

 Esta es la capacidad del desarrollador para trabajar 24 horas seguidas, y producir sus mejores codigos a las 4:00 hrs y ver sus resultados alrededor de las 6:00 hrs…

 La unica desventaja es que el desarrollador se agota muy pronto…

 Y no duerme nada :(

 Usenla -como dice el titulo- en casos extremos.

 

jluis;

Posted by JLuis.Estrada at 12:32:20 | Permalink | No Comments »