Entradas

Mostrando las entradas de 2011

Teclado en español Latinoamérica

Cuando empecé a utilizar computadoras lo hacia únicamente con teclados en ingles (EN-US) ya que al vivir en Tijuana (frontera con San Diego) era más fácil (y barato) conseguir teclados en ese idioma. Ademas todos los programas que utilizaba estaban en ingles. En esa época era común el uso de (alt+164) para las ´ñ’ y otros códigos más. Como programador seguía con el teclado EN-US cuando trabajaba desde la “oficina” de la empresa. Como parte de un proyecto tuve que estar en sitio por varios meses en una empresa de la cuidad donde las estaciones de trabajo todas tenían teclados en español Latinoamérica . Durante algún tiempo batallé para acostumbrarme, sentía que odiaba los teclados en español. Recuerdo que un amigo en la universidad usaba un teclado en español en su casa y me llamaba la atención por qué alguien haría eso a propósito, pudiendo usar un teclado en ingles. Recuerdo, también, que me comentó lo fácil que era escribir la ‘ñ’, los acentos, signos de puntuación, etc. Ahí fue

Software en español

Aunque uso principalmente solo software en inglés, seguido tengo la tentación de usar software en español. Tanto en el sistema operativo como en las herramientas de desarrollo y de base de datos. Esto me pasa más cuando se trata de software administrativo, de entretenimiento o aplicaciones donde necesito escribir en español. En esos casos creo que sí tiene sentido usar aplicaciones e incluso el sistema operativo en español. Porque lo que realizo es en español y el programa (al estar en el mismo lenguaje) puede ofrecerme ayuda adicional. Por ejemplo prevenir faltas de ortografía, de gramática, etc. El problema viene al tratar de usar herramientas de desarrollo que no están en ingles, ya que el desarrollo debe ser en inglés y si la herramienta de desarrollo esta en español es una desventaja. Tanto en los mensajes de error como en la terminología utilizada. Puede ser difícil encontrar información sobre términos técnicos en español o por lo menos encontrar información reciente. Hace ti

Usando varios atributos en C#

Al trabajar en proyectos sobre ASP.NET MVC, al crear los modelos he estado usando Data Annotations las cuales consisten en agregar atributos a las propiedades de tu modelo para indicar algo de meta datos que pueden ser usados por la vista. Además de que al usar entity framework code first he necesitado en alguna ocasión usar atributos, aunque últimamente he optado por configurar eso en el mapping del DbContext. También en lo controladores hay necesidad de escribir algunos atributos para los Action Filters . He visto que la forma más común para agregar más de un atributo a una clase, propiedad o método es escribiendo uno abajo del otro. Con lo que al declarar una propiedad que tiene varios meta-datos se termine con varias líneas de código. O al definir una acción en un controlador donde necesitas que se ejecuten varios action filters termines con varias líneas en la declaración del método, lo cual (en mi opinión) se ve igual que si se ejecutan las llamadas de los filtros dentro de

CoffeeCamp: El año en revisión

Imagen
La comunidad .Net de Tijuana organiza un CoffeeCamp el próximo Sábado 17 de diciembre de 2011 en el café Starbucks que esta frente a las torres. El tema es "El Año En Revisión". La idea es reunirnos y platicar de software mientras nos tomamos café (u otra cosa). En la página del evento pueden encontrar más información. Si eres desarrollador y estas en Tijuana el Sábado 17/12/11, esperamos verte por ahí.

Dev3Cast (Podcast) sobre FubuMVC

El pasado 12 de Noviembre participé en el podcast Dev3Cast . Donde junto con Gabriel Flores  ( @gabo )  platicamos con  Francisco Ruiz ( @squidge ) sobre FubuMVC . El cual es un proyecto de código abierto para el desarrollo de aplicaciones web que corre sobre .Net (es una alternativa a ASP.NET MVC). Escucha el episodio  y deja tus comentarios.

Mantenerse al día

Cuando empece a programar, la forma en que aprendía era principalmente a través de libros; pero sobre todo con la ayuda que me proporcionaba el entorno de desarrollo. Buscaba ejemplos que mostraran como utilizar cierta función o ejemplos de como lograr lo que quería hacer. Desde hace ya buen tiempo que no instalo la ayuda que viene con los entornos de desarrollo. Esto se debe, principalmente, a que es más rápido hacer una búsqueda en Internet sobre como funciona algo a buscar en la documentación que viene con los programas. Esto también ha ido pasando con la forma en que aprendo a usar o hacer cosas nuevas. Aun sigue siendo un buen recurso el tener un libro sobre tecnología. sobre todo los que son sobre principios básicos; pero también es cierto que los libros que tratan sobre tecnologías especificas rápidamente quedan obsoletos. Ahora para aprender sobre alguna tecnología (framework, lenguaje, librería, etc.) me ayuda el buscar información en Internet, generalmente es fácil enco

Dev3Cast sobre Build

El pasado 5 de octubre participé en un episodio de dev3cast (podcast) donde hablamos sobre lo que se presento en el evento build de Microsoft, en el cual se mostró lo que viene en la siguiente versión de windows y Visual Studio. Tuvimos como invitado especial a Seth Juarez , quien asistió al evento como parte de devexpress y pudo hacer varias entrevistas estando allá. También participamos en la conversación Gabriel Flores , Samuel Arellano y yo .

Dev3Cast sobre ASP.NET vNext

El día de ayer participe en la grabación de un episodio del podcast de la comunidad de usuarios .net en Tijuana , dev3cast . Donde hablé, junto con Gabriel Flores y Samuel Arellano , sobre algunas de la características que vienen en la próxima versión de ASP.NET.

Rumbo a MagmaRails (parte 4)

En la parte anterior de la serie, generé el modelo y controlador para los invitados, además de que modifiqué el archivo routes.rb para colocar a los invitados como recursos dentro de otros recursos: resources :weddings do resources :guests end Esto hace que pueda tener una ruta como /weddings/{wedding_id}/guests/ para mostrar la lista de invitados según la boda que se pase a través del URL. Para leer el valor de la boda dentro del controlador utilizamos la variable params la cual es como un diccionario. Así dentro de nuestro controlador de invitados podemos obtener el valor del ID de la boda de la siguiente forma: def index wedding_id = params[:wedding_id] @wedding = Wedding.find wedding_id @guests = @wedding.guests.all end La función del controlador es la de asignar valores a las variables que necesita la vista para mostrarse al usuario. En este caso estoy obteniendo el valor de wedding_id que viene dentro de los parámetros y lo estoy guardando en la variable weddi

Rumbo a MagmaRails (Parte 3)

Sigo preparándome para asistir a MagmaRails , en este video genero el modelo y controlador para los invitados: Post relacionados: Parte 1 Parte 2

Rumbo a MagmaRails (parte 2)

Siguiendo con la serie para prepararnos para MagmaRails . En esta ocasión trato de explicar en 5 minutos lo que se generó en la primera parte . Aquí el video : Entradas relacionadas: - Rumbo a MagmaRails (Parte 1) - Rumbo a MagmaRails (Parte 3)

Rumbo a MagmaRails

El próximo 12 de octubre se realizará en Manzanillo la conferencia MagmaRails a la cual pretendo (junto con mi esposa) asistir. Nosotros trabajamos principalmente con tecnología .Net así que para practicar un poco de rails inicié un proyecto y estoy grabando algunas partes en screencasts de 5 minutos.  Aquí el primero: Entradas relacionadas: - Rumbo a MagmaRails (Parte 2) - Rumbo a MagmaRails (Parte 3)

Reunión 44 de Tijuana .Net Sobre Razor

Imagen
El día de hoy estaré presentando en la reunión 44 de la comunidad el tema de Razor. Hablaremos de la sintaxis de razor usando WebMatrix en webpages y después un ejemplo de un blog usando razor en asp.net mvc en Visual Studio. Los temas serán: Code blocks Syntax, encoding Code expresions Html Helpers en razor Layout Sections Html helper en C# EditorTemplates Partial Views Html.Action Esperamos grabar la presentación y mostrarla aquí y en la página del evento.

Adicción a la Refactorización

Siempre que trabajo en una nueva característica, para algún proyecto, modifico el código antes de entregarlo. Tratando de hacerlo más compacto y/o fácil de leer. Esto con la intención de mejorar la calidad del código. También cuando necesito modificar cierta funcionalidad existente, cambio el código antes de implementar los cambios. Con la intención de entender mejor la funcionalidad actual y así dejar todo listo para realizar los cambios que se requieren implementar. Una vez hechos los cambios vuelvo a buscar áreas donde haya oportunidad de refactorizar…hasta ahí creo que todo va bien. El problema viene cuando se convierte en una especie de adicción. Hay ocasiones que al trabajar en alguna característica determinada me encuentro con algún trozo de código “malo” que no esta relacionado con lo que estoy trabajando y aun así siento la necesidad de modificarlo. A veces logro aguantarme las ganas; pero otras veces simplemente no puedo evitarlo. También me pasa cuando algún compañero de

Motivación diaria

Imagen
Hay días en los que siento que soy productivo y tengo muchas ganas de programar. En cambio hay otros en los que simplemente no tengo ganas, estoy frente a la computadora, pero no logro avanzar en las tareas pendientes. Tratando de encontrar cuales son los factores que influyen para estar motivado y ser productivo, identifique los siguientes: Conocer el dominio del problema Cuando ya sé lo que tengo que hacer es más rápido ponerme a hacerlo. Cuando no conozco el beneficio o la razón de una característica del sistema donde estoy trabajando, o peor cuando no sé exactamente qué es lo que se supone que debe de hacer, mi productividad baja. Cuando sé lo que se requiere, simplemente lo hago. Comunicación constante Esto va ligado al primer punto, para conocer el dominio del problema es necesaria una comunicación constante con el cliente. Cuando tengo dudas y el cliente tarda mucho en contestarlas o simplemente no lo hace, en algunos de esos casos simplemente no puedo avanzar. Me desmotiv

El ingles es parte de las mejores prácticas

Hace algunos años leí un comentario que no me gustó mucho. Decía algo como que todos los buenos desarrolladores sabían ingles. No me gustó, creo principalmente, porque mi primer idioma no es el ingles. Ademas conozco a personas que no hablan ingles y que son muy capaces de desarrollar. Me pareció un poco arrogante el comentario. Sin embargo en ese momento recuerdo que no pude pensar en algún programador que no hablara ingles; pero pensé que se debía a que vivo en la frontera con los Estados Unidos (Tijuana) y aquí la mayoría habla (o por lo menos entiende) ingles. Ahora, después de ya algún tiempo, me ha tocado conocer a colegas desarrolladores que no dominan el ingles y he visto como sus opciones para buscar información, sobre cualquier tema técnico, se ve limitada comparada con la cantidad de información que se puede encontrar en ingles. Esto es más notorio cuando se trata de tecnología o técnicas nuevas (tendencias). La mayoría de la información técnica es generada en ingles, in

Dev3Cast Sobre Documentación Técnica

El pasado cinco de mayo participé en un episodio de dev3cast junto con Eber Irigoyen, Haarón González, Samuel Arellano y Gabriel Flores. Donde hablamos sobre la documentación técnica en proyectos de software. Pueden descargar el episodio y comentar en el sitio de dev3cast para que todos quienes descarguen el podcast puedan leer sus opiniones.

Aplicar lo nuevo lleva su tiempo

Uno de los “problemas” que he encontrado al querer aplicar técnicas, usar librerías, frameworks, lenguajes, etcétera. De los que he leído e incluso usado en algún pet Project . Es que al momento de querer aplicarlo en algún proyecto real, este tienen fechas de entrega a muy corto plazo y por lo tanto lo más “seguro”, para cumplir con esas fechas de entrega, es haciéndolo utilizando lo ya conocido y probado en proyectos anteriores. No es común que el cliente nos pida alguna aplicación y nos de el tiempo necesario para aprender la tecnología a usar. Primero porque desea el sistema lo más rápido posible y segundo porque no quiere cubrir el costo del tiempo invertido en aprender lo nuevo. Cuando al final el recibe el mismo sistema, no importando la tecnología o técnicas usadas en el desarrollo. Pude ser que esta necesidad sea mas del desarrollador, ya que es él el que trabaja directamente con la tecnología (ya sea framework,lenguaje de programación, etc). Para poder aplicar/implemen

La practica hace al maestro

Hace unos días tuve la oportunidad de dar una capacitación (en el .Net Framework) a unos compañeros de trabajo que acaban de egresar de la universidad y que aun no tienen experiencia laboral. Algo común entre ellos era la falta de practica al momento de empezar a escribir código. Podían entender fácilmente el ejemplo escrito por mi, pero no les era igual de fácil escribir código propio. Me di cuenta que algunos tomaban varias notas en papel sobre lo que íbamos haciendo, en lugar de ponerse a practicar. Esto me hizo pensar que el aprender (y mejorar) a programar debe de hacerse de la misma forma en la que se aprenden las matemáticas. No basta con saber los procedimientos para resolver un problema, es necesario practicar las operaciones con varios ejercicios para poder dominar el tema (y resolver los problemas mas rápido y fácil). Cuando aprendemos a sumar, restar, multiplicar, dividir, etcétera. La parte de tomar notas es muy poca, la mayor parte del aprendizaje se da al practicar.

NuGet Manejador de paquetes

Imagen
Al trabajar en proyectos en .Net es común hacer uso de librerías de terceros, ya sean de código abierto e incluso de algunas con código propietario. Para usar estas librerías necesitaba ir al sitio de cada una de ellas y descargar la última versión (o la que necesitara) y descargar los archivos, después agregar una carpeta al nivel de mi archivo de solución de VisualStudio que acostumbraba llamarla “Lib” y ahí agregar los DLLs de terceros que usaría en mi solución. Ahora con NuGet , el manejo de dependencias se simplifica. Lo primero que necesito es instalarlo, lo cual lo puedo hacer desde VisualStudio, usando el Extension Manager y buscando “NuGet”   En algunas maquinas con esto fue suficiente, sin embrago (desconozco la razón) en una de mis maquina no pude instalarlo a través del extension manager. Lo que hice fue instalarlo desde nuget.org   Una vez instalado se debe de reiniciar VisualStudio y aparece una nueva opción en el menú de Tools (Herramientas) y en el menú de Vi

Al desarrollador le gusta desarrollar

Seguido leo (y escribo) comentarios, tweets, posts, etc sobre lo mal que la pasamos en ciertos proyectos en los que trabajamos. Aun y cuando lo que nos gusta hacer, como desarrolladores que somos, es desarrollar. ¿Entonces por qué es que surgen estas situaciones de descontento entre los desarrolladores? Considero que parte del problema es la falta de decisión que se tiene sobre el curso de algún proyecto, la arquitectura, metodología, framework, (peor cuando nos toca usar el intento de framework que hizo alguien más ), etc. Esto hace que el desarrollador se sienta como un code monkey , alguien que hace la talacha y no como alguien que desarrolla soluciones para las necesidades del cliente. No hay motivación. Al participar en proyectos con diferentes empresas he notado que en los proyectos que he sufrido mas frustración, al trabajar en ellos, es cuando el cliente ya eligió que usar y peor cuando ya eligió el como hacerlo. Al iniciar o continuar el desarrollo del proyecto me encuent

La idea de nuestro propio “Framework”

Creo que muchos de los desarrolladores hemos tenido la idea e incluso iniciado el desarrollo alguna vez de nuestro propio “Framework” para generar aplicaciones. No veo malo el escribir otro Framework. Pero muchas veces solo terminan limitándose, haciendo lo fácil mas fácil y lo difícil casi imposible, poco flexibles. Se vuelven una carga que mantener. Algo con lo que los desarrolladores no están muy entusiasmados en trabajar, porque prefieren usar algo nuevo. He notado que esos pequeños Frameworks tienen algunas características en común (esta no es una receta, solo son unos de los problemas comunes que he visto en esos pequeños frameworks privados): No se conocen los frameworks existentes: Lo más seguro es que ya exista algo que hace lo que se quiere lograr. Puede que se trate de un problema resuelto. Quizás lo mejor sea contribuir a un proyecto open source existente, agregando las características que se necesitan. Si la idea es hacer lo mismo que ya hace otro Framework, debe haber u

Comunicación con messenger en la oficina

Ahora que volví a trabajar desde la oficina, con compañeros de trabajo (antes trabajaba desde mi casa) he notado que mucha de la comunicación entre los desarrolladores, incluso con la administración, se da a través del messenger e incluso por redes sociales como twitter y facebook (aunque por estas la comunicación es mas informal). Es algo que ya venia haciendo, pero pensé que era porque no estaba físicamente ahí con ellos. Al principio no me gustaba tanto y prefería levantarme e ir al lugar de los demás. Empece a notar que era de los pocos que hacia eso y sentía que estaba distrayendo a la persona que con la estaba hablando y a los de su alrededor. Ahora uso mas el messenger (mensajero en español) para hablar con mis compañeros (aunque estén a lado mio) y he notado que tiene algunos beneficios que explico a continuación. Debido a que somos muchos personas trabajando en la oficina, es casi imposible que a todos nos guste la misma música; por eso el uso de audífonos es algo común. Esto

Desarrollo Web Arrastrando y Soltando

Hace unos días necesitaba realizar una aplicación web en muy poco tiempo. Debía mostrar un demo en un día; así que decidí olvidarme de las buenas practicas por un día y (usando ASP.NET WebForms) empezar a arrastrar y soltar componentes a mi página. Diseñando las paginas de captura y lectura (Grids) sin ver el markup que VisualStudio me iba generando. Tenia mucho tiempo sin trabajar en Design View, pero no tenia tiempo de ponerme a editar el markup a mano. Una vez creadas las páginas (a la drag and drop) usando el ratón empece a conectar mis GridViews y DropDownsLists usando LinqDataSources. Todo esto con la ayuda de wizards, en algunas consultas utilice views definidas en la base de datos (MS SQL Server) también con la ayuda de diseñadores, no use SQL para definir mis views. (Creo que tenia años sin usar Views y menos de usar el query designer). No pudieron faltar los lugares donde necesite algo de código y para ello LinqToSql me ayudo a realizar las consultas y/o actualizaciones a la

Editores para RubyOnRails en Windows

Al trabajar con RubyOnRails desde Windows he usado algunos editores y IDE's con sus ventajas y desventajas cada uno de ellos. El primero que utilicé fue Notepad++ , porque ya lo tenia instalado en el sistema. Me gustó por lo ligero y rápido que responde el editor, pero lo que me hizo buscar opciones es que no coloreaba muy bien todos los archivos con los que trabajaba. Ademas de que no cuenta con un explorador del proyecto. Hay complementos para para tener una lista de carpetas, pero ninguna me gustó del todo. La segunda herramienta que usé fue NetBeans . Ya había trabajado con NetBeans antes (desarrollando en java) así que no me fue difícil conocer el IDE. Me gustó trabajar con el IDE ya que estoy acostumbrado a usar uno en mi trabajo (trabajo con .Net en C# desde Visual Studio). Pero seguí buscando alternativas, ya que NetBeans es algo pesado y al buscar información, sobre como realizar ciertas tareas en rails, siempre encontraba ejemplos con la consola y simples editores. Al hac