jueves, 4 de diciembre de 2008

¿Con cuál lenguaje empezar?

Una buena pregunta que se hacen los novatos es la de ¿con cuál lenguaje me conviene aprender a programar? y es que hay de tantas variedades que a veces cuesta trabajo saber por donde comenzar, bien puede ser por los más populares, los más usados, los más nuevos, etc.

Personalmente recomendaría C# o Ruby, y aunque las opiniones están divididas creo que estos dos lenguajes son una buena manera de comenzar pues se trata de lenguajes modernos, ampliamente soportados, C# esla carta fuerte de .NET y Ruby que se apunta como el futuro de la disciplina y el favorito de los alpha geeks de hoy en día.

Y es a través de stackoverflow que me entero de esta paginita muy divertida donde aprendes instrucciones básicas de Ruby, y la verdad es que es muy sencillo y cualquiera con deseos de aprender puede empezar a hacerlo.

Mientras tanto yo sigo experimentando con Ruby on Rails cuando puedo, y no me quejo, es un lenguaje muy interesante y en unos años sé que crecerá exponencialmente.

Saludos!!

lunes, 1 de diciembre de 2008

La metáfora en la vida

No deja de sorprenderme el poder de la palabra. Como un amante de la literatura, un dummy de la escritura y un profesional del software día a día me doy cuenta que las palabras dicen e impactan en mayor medida de lo que la gente cree.

Específicamente los silogismos y las metáforas son recursos que siempre me han intrigado, pero es la metáfora la que se lleva un papel crucial en el día a día.

Y es que la metáfora ha servido para los más viscerales propósitos como es el ganarse el amor de una mujer, así cómo lo hacía Neruda...

Ah vastedad de pinos, rumor de olas quebrándose, lento juego de luces,

campana solitaria, crepúsculo cayendo en tus ojos, muñeca, caracola

terrestre, en ti la tierra canta

Así como para explicar hechos que por su naturaleza, son difíciles de explicar a gente con conocimientos técnicos insuficientes y es que cómo podría la NASA presentar informes detallados de sus actividades al vicepresidente de EUA o el CERN al gobierno Suizo sin recurrir en algún punto a la metáfora. La necesidad de este recurso alguna vez lo evidenció Einstein, de aquello se cuenta la siguiente anécdota...

Un periodista le preguntó a Einstein”¿Me puede Ud. explicar la Ley de la Relatividad?” y Einstein le contestó “¿Me puede Ud. explicar cómo se fríe un huevo?”.
El periodista lo miró extrañado y le contesta “Pues, sí, sí que puedo”, a lo cual Einstein replicó
“Bueno, pues hágalo, pero imaginando que yo no se lo que es un huevo, ni una sartén, ni el aceite, ni el fuego”.

Y es que cosas como estas suceden, y en el mundo del software sucede muy a menudo, quizá es la disciplina de aplicación comercial donde existen más conceptos que es necesario explicar de manera metafórica, sólo detrás de las complicadísimas suposiciones de la física cuántica, basta ver esto, esto y esto.

Y es que gran parte del código que se escribe está montado en complejas arquitecturas de software, empleando patrones de diseño de software, recurriendo a frameworks bien articulados siendo que en esencia todas estas distinciones parten del punto básico de una metáfora, el decir esto es un factory, o esto otro es MVC. De hecho toda la programación orientada objetos está cimentada en una metáfora, la de tratar de abstraer la realidad y construir clases y objetos que son una representación de la realidad.

En el excelente libro de Steve McConnell, Code Complete, el autor nos hace tratar de darnos cuenta de lo importante que es la metáfora en la construcción del software y valga decir que la propia expresión de "construir" software o "arquitectura" de software son en sí mismas una metáfora extraída del campo real de la construcción.

Software development is a younger field than most other sciences. It’s not yet
mature enough to have a set of standard metaphors. Consequently, it has a
profusion of complementary and conflicting metaphors. Some are better than others. Some are worse. How well you understand the metaphors determines 
how well you understand software development.

De esta manera, las metáforas vienen a hacernos la vida más sencilla, cumplen un papel importante, nos permiten entender a todos y no sólo a los científicos la realidad de nuestro universo.

McConnell también escribe.

Today it’s difficult to imagine anyone’s thinking that the sun moves around the
earth. Similarly, it’s difficult to imagine anyone’s thinking that all data could be viewed as a sequential stream of cards. In both cases, once the old theory has been discarded, it seems incredible that anyone ever believed it at all. More fantastically, people who believed the old theory thought the new theory was just
as ridiculous then as you think the old theory is now.

Escribo esto porque creo que muchos desarrolladores de software pierden la visión de lo que hacen debido a no emplear una manera metafórica de explicar su trabajo o bien que están empleando la metáfora equivocada. Una metáfora adecuada puede incluso ayudar a la propia persona que genera la idea para encontrarle nuevos alcances.

Not be a code monkey!!

¿No son la herencia y el polimorfismo ejemplos evidentes de las metáforas en el mundo de la programación? Así que arquitectos, docentes y demás: no usen ejemplos tan complejos mejor expliquenlo con peras y manzanas.

Saludos

domingo, 23 de noviembre de 2008

La paradoja de Einstein

einsteinea2

Einstein planteó una paradoja muy interesante acerca de Dios. La Biblia plantea la existencia de un ser omnipotente, un dios que puede crearlo todo y todo destruirlo de la misma manera, sin embargo como bien dice el científico, esta concepción de la deidad es equivocada, por el simple hecho de que la omnipotencia como nosotros la entendemos es imposible.

La encrucijada se formula así:

Pídele a dios que cree una roca tan pesada que él no la pueda levantar

Con esta simple sentencia se descarta la omnipotencia y es que si dios puede levantar la roca creada, entonces no pudo crear una roca tan pesada que no pudiera levantar el mismo; y si no la puede levantar, entonces hay algo que no puede hacer, que es levantar la nueva roca.

Sea cual sea el caso, se descarta la omnipotencia de dios.

Me enteré de esto en el libro la fórmula de Dios, un libro muy interesante que recomiendo ampliamente.

Saludos.

domingo, 2 de noviembre de 2008

In God we trust

El próximo lugar tendrán lugar las elecciones presidenciales en el país vecino, una decisión que toman los ciudadanos norteamericanos y que termina afectando al mundo entero, y basta ver el terror, idiotez y caos que nos deja George W. Bush tras 8 años de un gobierno mal encausado, arrogante y lleno de malas decisiones.

Si bien los mexicanos somos muy escépticos a la política externa y local, es importante darnos cuenta del evento tan importante que viene y más con las actuales tribulaciones financieras, donde ya se empiezan a ver signos de locura en algunos sectores, hay quien habla incluso de la desaparición del dólar y otra serie de estupideces que no hacen mas que ponernos a todos en peligro, y es que las especulaciones de unos cuantos pueden causar cosas tan desastrosas como que el crédito hipotecario que pagues se infle, que nuestro país gaste el 10% de nuestras reservas se evaporen tratando de defender la moneda y que el 2009 pinte como el año del consumismo...con su mismo carro, con su mismo par de zapatos, con su mismo trabajo (si bien le va) y hasta con su misma vieja u_u.

Si yo pudiera votar, votaría por Obama y es que el tipo parece iluso y hasta mesiánico pero al menos se le ve la flama de la intención del cambio, de dirigir al imperio mundial hacia una nueva dirección. Nunca me gustó Mcain, ya está viejo y es de otra época donde las cosas se resolvían a fuerza de garrote, si a esto le sumamos que la aspirante a vicepresidenta es una mojigata religiosa enemiga de la ciencia y que el partido de ambos es el mismo que el intelectual presidente de los Estados Unidos pues ni como ayudarlos.

En estos días tuve la oportunidad de platicar con un ciudadano norteamericano, veterano de la guerra de Vietnam,Jerry Turner, y no hizo mas que confirmar mis ideas, cuando le pregunte sobre su favorito me dijo que prefería a Obama y al preguntarle porque me dice

Mcain is a totally bastard!!! We were together in Vietnam; he enjoys to kill, He enjoys violence. I think if he wins US will stay a lot of years in Irak

Y si bien no podemos participar...si el mundo pudiera votar las cosas estaría así

image

Ahora sólo queda esperar...y esperar algo bueno, haga oración a su dios favorito, yo ya tengo lista la ofrenda de salsa de tomate.

Saludos!!

domingo, 26 de octubre de 2008

Aprender a programar - Small Basic

 download

Recién me entero de un nuevo lanzamiento por parte de Microsft que me pareció muy interesante.

Se trata de Small Basic un pequeño entorno de desarrollo que según sus creadores busca hacer fácil y divertido el arte de aprender a programar, está basado en la tecnología .Net con cosas propias de IDEs modernos como Intellisence. La verdad es que me parece una muy buena idea y pues ya lo descargué y hasta me dio nostalgia de recordar los días en que escribí mi primer "hola mundo".

image

La descarga es muy ligera, apenas 4 megas, muy recomendable para cualquier entusiasta que desee saber en que consiste la programación o para aquellos chavos de secundaria o incluso primaria que se quieran empezar a meter pero que les da miedo enfrentarse a herramientas complejas.

La interfaz es muy limpia, construida con WPF y agradable de usar. Lo único deseable es que incluyera ayuda pues se trata de motivar a los que empiezan.

No dejen de probar la clase Turtle ñ_ñ es muy buena.

t1
t2

Saludos

domingo, 12 de octubre de 2008

Me voy a ir al infierno - frases anticristianas

O al menos eso es lo que sé que me diría mi abuela, y es que aquí les dejo algunas frases de pensadores, los más grandes de la humanidad, acerca de su opinión sobre dios.

¡Desde tiempos inmemoriables es sabido cuán provechosa nos ha resultado esa fábula de Jesucristo

Papa León X

La religión es lo que evita que los pobres asesinen a los ricos.

Napoleón Bonaparte

Fe significa el deseo de no saber lo que es verdadero.

Friedrich Nietzsche

Me cuesta ver cómo alguien puede desear que el cristianismo sea verdadero; porque si así es, el lenguaje llano del texto parece demostrar que los que no creen, y esto incluiría a mi padre, mi hermano y a la mayoría de mis amigos, serán castigados por toda la eternidad. Y ésta es una doctrina aborrecible.

Charles Darwin

Dios es un concepto según el cual medimos nuestro dolor.  

John Lennon

No creo en Dios y no me hace ninguna falta. Por lo menos estoy a salvo de ser intolerante. Los ateos somos las personas más tolerantes del mundo. Un creyente fácilmente pasa a la intolerancia. En ningún momento de la historia, en ningún lugar del planeta, las religiones han servido para que los seres humanos se acerquen unos a los otros. Por el contrario, sólo han servido para separar, para quemar, para torturar. No creo en Dios, no lo necesito y además soy buena persona.                                                                           

José Saramago, escritor portugués, Premio Nobel de Literatura

Mi mente es incapaz de concebir una cosa como el alma. Puede que esté errado y que el hombre tenga un alma, pero yo simplemente no lo creo

Thomas Edison

Los sentimientos de 'amor y temor de dios' no tienen su origen en dios, si no en los seres humanos. Son sentimientos de frustración dirigidos por el hombre a un ser imaginario que pretende sea su padre...

Sigmund Freud

La religión es el opio del pueblo.

Karl Marx

Un mito es una religión en la que ya nadie cree.

James Feibleman

 

Era, por supuesto, una mentira lo que leíste sobre mis convicciones religiosas, una mentira que ha sido sistemáticamente repetida. No creo en un Dios personal y nunca lo he negado, por el contrario, lo he expresado claramente. Si algo hay en mi que puede ser llamado religioso es entonces la admiración sin límites a la estructura del mundo hasta donde la ciencia ha podido revelarnos por el momento.

Albert Einstein

No puedo imaginarme a un dios que premia y castiga a los objetos de su creación, cuyos propósitos han sido modelados bajo el suyo propio; un dios que no es más que el reflejo de la debilidad humana. Tampoco creo que el individuo sobreviva a la muerte de su cuerpo: esos no son más que pensamientos de miedo o egoísmo de lo mas ridículo.

Albert Einstein

Esta me duele, pues se que Loyola era brillante y vengo de una universidad jesuita

Debemos estar siempre dispuestos a creer que lo que nos parece blanco es en realidad negro, si la jerarquía de la Iglesia así lo decide.                                                          

San Ignacio de Loyola

Y la lista pudiera extenderse pero mejor ahí le dejo ya...no quiero cultivar más odios pero si los hombres que más han hecho por este mundo piensan así, yo me uno a ellos...

Saludos

Problemas religiosos inesperados

Hace pocos días una inesperada plática religiosa me llevo a tener problemas con compañeros de trabajo y es que a muchos la idea de que no creer que exista un dios y que recomiendo lecturas como el manual del perfecto ateo les parece inconcebible, casi casi hereje y merecedor de la horca.

Yo respeto a todos sea cual sea su religión y en el fondo siento que sí existe algo más allá de nuestra comprensión pero no es dios, no lo que el hombre a definido como dios a lo mucho quizá sea él.

Ya otras veces había reflexionado sobre dios, pero aquella problemática plática con mis compañeros me caldeo los ánimos y es que si bien respeto las creencias religiosas de cada persona, me molesta que muchos sientan miedo de pensar, miedo de que el pensar los lleve al infierno, me molesta que muchos católicos no indagan en su religión que no analizan sobre lo que fundamenta su fe y a pesar de todas deficiencias se empeñan tercamente en convencer a la gente de la buena noticia...

Así que aquí traigo algunas pequeñas contradicciones que se pueden encontrar en las sagradas escrituras y que hasta ahora ningún cristiano me ha dado una explicación racional o al menos lógica:

Genesis 1:31 Genesis 6:6  

...y vio Dios  todo lo que había hecho y vio que era bueno en gran manera

... y arrepintióse Jehova de haber hecho al hombre en la tierra y pesóle en su corazón

¿Cómo puede un ser perfecto crear algo imperfecto? y si ya se equivocó, ¿por qué no hacerlo de nuevo?
Mateo 19:26 Jueces 1:19  

Para Dios no hay imposibles

Y fue Jehová con Judá echó a los de las montañas, más no pudo echar a los que vivían en el llano porque tenían carros de hierro

¿Entonces, es dios omnipotente o no? y si su fuerza es limitada lo es tan endeble como para no poder vencer a carros de hierro
Romanos 15:33 Éxodo 15:3  

Y el dios de la paz sea con vosotros

Jehová Dios, señor de guerra, Jehová es su nombre

¿Peace or love?
Job 34:21 Génesis 3:8   

Porque sus ojos están sobre todos los caminos del hombre y ve todos sus pasos

el hombre y su mujer se escondieron de la presencia de Jehová Dios entre los árboles del jardín.  Pero Jehova Dios llamó al hombre y le preguntó:

-¿Dónde estás tú?

Cómo es que se pudieron esconder...y ahí dice literal que se escondieron no que lo intentaron

Y cómo ésta hay miles, más si se contrastan el antiguo y el nuevo testamento, enlistarlas podría ser materia de un doctorado en teología...pero esta es sólo la vida de un programador pensante y que ve en la Biblia un libro de una literatura maravillosa pero tan increíble como la mitología griega o como las mil y una noches.

Sin esperar ofender a nadie me despido. Saludos

domingo, 5 de octubre de 2008

Relative dates - Outlook style

Me gusta esa característica que tienen algunas aplicaciones de proporcionarnos búsquedas en base a fechas relativas, como lo hace Outlook o IE. Y es que siempre es más fácil ver tus archivos categorizados en el tiempo con fechas relativas que con la fecha exacta.

Esto es más agradable a la vista...

  • X hours ago
  • X days ago
  • more than a week ago
  • more than a  Month ago
  • about a Year ago

que esto...

  • 28 - septiembre - 2008
  • 27- septiembre - 2008
  • 3 - septiembre - 2008
  • 25 - agosto - 2008
  • 25 - agosto - 2008
  • 25 - agosto - 2008
  • 25 - agosto - 2007

Y así sucesivamente. Moraleja tener nuestros archivos ordenados por fechas relativas es bueno para nuestra vida ñ_ñ

Y aquí les dejo un pequeño algoritmo que toma una fecha y determina su antigüedad catalogándolo como fechas relativa. Si bien esto no es muy complejo quizá lo primero que se viene a la mente son una cantidad muy grande de sentencias if, else...cosa que nunca es agradable leer y escribir en un código. Aquí les dejo una sugerencia de lo que podría ser esto usando las bondades de C# 3.0...y aparte lo voy a hacer con un extension method ñ_ñ.

La clase del Extension Method luce así

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace RelativeDates

{

    public static class DateExtensions

    {

        public static String ToRelativeDate(this DateTime inputDate)

        {

            TimeSpan timeDiff = DateTime.Now.Subtract(inputDate);

            double totalMinutes = timeDiff.TotalMinutes;

            string timeIndicator = "ago";

 

            //El valor será un diccionario y se usa el tipo anónimo

            //"var" para no repetir la sintaxis de la incialización

            var value = new Dictionary<double, Func<string>>();

            value.Add(1440,()=>String.Format("about {0} hours ",Math.Round(Math.Abs(timeDiff.TotalHours))));

            value.Add(10080, () => String.Format("about {0} days ",Math.Round(Math.Abs(timeDiff.TotalDays))));

            value.Add(40320, () => String.Format("about {0} weeks ", Math.Round(Math.Abs(timeDiff.TotalDays / 7))));

            value.Add(483840,()=> String.Format("about {0} months ", Math.Round(Math.Abs(timeDiff.TotalDays / 30))));

            value.Add(int.MaxValue, () => "more than a Year ");

            return value.First(n=> totalMinutes < n.Key).Value.Invoke() + timeIndicator;

        }

    }

}

 

 

Y la podemos usar así:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace RelativeDates

{

    class Program

    {

        static void Main(string[] args)

        {

            DateTime relativeTime = new DateTime(2008,4,12);

            Console.WriteLine(relativeTime.ToString());

            Console.WriteLine(relativeTime.ToRelativeDate());

            Console.Read();

        }

    }

}

Espero les sirva, cualquier duda o comentario aquí lo discutimos.

Saludos

jueves, 25 de septiembre de 2008

Muere el amigo, el maestro, adios CANACA

Hoy es un día de luto nacional, un día que será recordado como la muerte de grandes heroes patrios de la talla de Juárez y Zaragoza.

Hoy dejo de existir el CANACA.



Hasta siempre hermano, al rato te alcanzamos.

domingo, 21 de septiembre de 2008

Ejercicios para aprender a programar - Estructuras de datos y patrones

Recuerdo que en la universidad el filtro para los que aspirábamos a convertirnos en desarrolladores de software fue la temible materia de Estructura de Datos o como le decíamos nosotros "Sepultura de vatos".

Por aquí les dejo la referencia de un libro bastante decente en el que se revisan las estructuras de datos más comunes abordadas con una perspectiva de patrones de diseño de software en lenguaje C#. Es un poco difícil de leer pero es gratis, creo que podría ayudarte si estas implementando algún proyecto final o si deseas conocer más sobre estructuras de datos.

Checa aquí el libro.

Saludos

La historia de Juanita

Mi mejor amiga se acaba de graduar y mientras cursaba su último semestre estaba trabajando como auxiliar contable para una empresa familiar que tiene diversificados sus negocios entre hotelería, construcción y algunas otras actividades lucrativas, fue ella quien me contó esta historia.

El que era jefe de mi amiga es un abogado joven que conduce un Mustang 2008 convertible y que según mi amiga es un tipo paranoico que siempre esta sospechando que sus empleados lo quieren "joder" hasta con el detergente para lavar la ropa, un ejemplo perfecto de como el karma vulve siempre, en todas las relaciones humanas se tiende a pensar que los demás procederán como uno procede ante situaciones semejantes, funciona igual para las parejas celosas, para las personas egoístas, dadivosas, confiadas, etc.

Aquí es cuando aparece Juanita, una joven mucama que trabaja en el hotel del exitoso empresario. El abogado no quiere que Juanita labore más en su hotel y está buscando un motivo para despedirla, sin embargo, como sabe de leyes no se quiere arriesgar a que Juanita lo demande por despido injustificado. El abogado esta disgustado por la naturaleza respondona de la muchacha, mujer que no permite malos tratos y con escasos modales para manifestar sus inconformidades.

Un día por la mañana mi amiga dejo pasar a Juanita a la oficina del abogado para sacar la basura, la muchacha no tardó más de un minuto en vaciar el contenedor en uno más grande y salir de la oficina pero justo cuando la muchacha iba saliendo de la oficina del abogado éste apareció bajo el alféizar, no dijo nada.

Un día antes un cliente les había dejado 5000 mil pesos y el abogado los había guardado en el cajón que estaba justo encima del basurero, el abogado entró a su oficina sacó el dinero y salió junto con su contador en dirección al banco.

Horas más tarde mi amiga estaba redactando la renuncia de Juanita y es que según el abogado le habían faltado 500 de los 5000 pesos que había dejado allí el día anterior. El abogado regresó a la oficina y se encerró con Juanita, mi amiga podía escuchar todo, Juanita lloraba y decía que ella no le había robado nada mientras el abogado insistía en su culpa y argumentaba que era mejor que aceptará renunciar sino quería ser denunciada por robo. En esos momentos regresó el contador del abogado y le comentó a mi amiga que sólo eran 200 pesos los faltantes...mi amiga sabía bien que el abogado solía usar el dinero que tenía para ir a comer o poner gasolina, por lo que no le extrañaba que este dinero faltara, o bien era una artimaña del abogado para deshacerse de Juanita de una vez por todas.

Al final Juanita fue despedida, estaba embarazada y sin su trabajo no tendría derecho a que el IMSS atendiera su parto y el hospital más barato cobra alrededor de 2500 pesos, lo que es una fortuna para la precaria situación de Juanita. Se decía que el abogado estaba tan firme en su decisión de deshacerse de Juanita que la sola idea de pagarle tres meses de incapacidad le parecía inconcebible. Juanita lo demando, no sé en que terminó pero seguramente el pez más grande se comió al chico, el abogado debe seguir paseando en su Mustang, mi amiga ya no trabaja más ahí y para Juanita según estos datos, el panorama es sombrío.

En enero pasado la tasa de desempleo en el país se ubicó en 4.06% de la Población Económicamente Activa (PEA), lo que implica que alrededor de 1 millón 786 mil 628 personas estuvieron desocupadas. Esto representó un aumento de casi 300 mil personas, respecto a diciembre.

Fuente: El Universal

Y así seguiremos con políticos que se embarran la bandera del pueblo y reciben 500,000 pesos mensuales (más sus tranzas), con jovenes sin trabajo, con una inseguridad creciente y como buenos mexicanos preferimos esperar que las cosas se arreglen mágicamente. Ojalá esta reacción que se ha visto en los últimos meses por parte de la sociedad no se detenga y empecemos a exigir más y más.

Mientras tanto este es únicamente, como diría Ademyr, "Another post in the blog".  Un intento más de despertar conciencias.

miércoles, 3 de septiembre de 2008

Google Chrome

Aunque siempre he sido fan de los productos de Microsoft, tiene algunos que dan lastima como aquel horrible IE6, y hablando de navegadores este vez les voy a recomendar el nuevo navegador de Google que realmente me gustó, se trata de Chrome.

Y es que si bien este navegador no ofrece nada nuevo salvo google gears si creo que es el que lo ha presentado de manera más fácil e intuitiva, tomando características de Opera, Firefox 3 y hasta de IE8 han logrado crear el que para mi es el más bello navegador Web de la historia. Y si bien aún se trata de una versión beta, esta ya nos deja ver lo que nos mostrará Google en el RTM.

Y aunque no tengo mucho tiempo usándolo aquí les dejo las características que más me gustarón

  • Mejor velocidad en carga de páginas y mejora en el consumo de memoria RAM

Esto de la velocidad es algo que todos prometen, sin embargo creo que Chrome sí muestra una ventaja ante sus competidores incluso ante Firefox 3. Además de que como la hace el beta de IE8 maneja un task manager para las distintas Tabs que abramos en el navegador y así saber cuanta memoria RAM consumen de manera independiente.

Dale clic pa verla completa

  • Interfaz limpia y minimalista (muerte a las toolbars!!)

Dale clic pa verla completa

  • Herramientas para Developers

Aunque hay herramientas adicionales para IE y para Firefox, Chrome trae algunas herramientas útiles para los developers, me gustó especialmente el visor de tags que tiene.

Dale clic pa verla completa

  • Modo incógnito (Modo porno ¬¬)

Se trata de otra característica que también tiene IE8 y se trata de un modo de navegación en el que tus visitas a sitios no generan ningún historial, nada de cookies, nada de nada, el termino coloquial de modo porno es obvio ñ_ñ

Pues ahí esta una nueva propuesta de navegación, creo que esto si será un problema para Microsoft y por lo pronto yo ya lo estoy usando, Chrome contra IE8 round 1, Microsoft con soporte de sus SO y sus actualizaciones contra el escaparate más grande de la tierra www.google.com.

Saludos

martes, 26 de agosto de 2008

De los peligros de la psiquiatría

                                                            

Hace ya algunos años cuando salí de la prepa me tope con la encrucijada de elegir lo que a futuro sería mi vocación, en esos días muchos compañeros atravesaron la misma situación, recuerdo que en aquellos días una de las carreras más solicitadas era psicología, y lo era por razones tan superfluas como las siguientes:

"Que padre ser como el profesor Javier"

"Como que siempre sabes lo que piensa la gente"

"Es que en la novela de soñadoras la psicóloga es bien chida"

Hoy han pasado ya 5 años desde aquellos días algunos de mis compañeros aún no concluyen su carrera o recién lo han hecho...yo ya tengo un año fuera.

Muchos empiezan a darse cuenta que quizá el mundo no necesita tantos psicólogos como pensaban y ahora este hecho se vuelve importante porque ellos abran de vivir de esta ocupación. Y es que siempre he sido un tanto escéptico del verdadero alcance que debe tener la psicología y psiquiatría a pesar de que siempre me ha interesado el tema.

Y es que a mi parecer estas dos ramas han sido llevadas a un terreno que por si solas no deberían alcanzar, o por lo menos no de la manera tradicional. Creo que muchos de los problemas más comunes que la psicología y la psiquiatria catalogan como patologías pueden ser tratas de mejor manera con la denominada terapia filosófica.

Aquí dejaré un poco de lado la psicología para enfocarme en la psiquiatría, y es que las corrientes norteamericanas siempre terminan afectándonos, nuestros vecinos del norte son una sociedad terapeutizada donde tener un terapeuta se ha vuelto tan común como tener un médico de cabecera y donde los seguros de aquel país absorben los gastos derivados de estos males mentales, lo que potencializa la capacidad del ciudadano común para hacerse de los servicios de este tipo de profesionales.

Y es que no hace falta ser un doctor en psicología para entender que Freud consideraba que todos los trastornos mentales tenían una causa raíz de origen físico, es decir que el mal radicaba en algún defecto del cerebro. De  ahí que ahora exista en la psiquiatría actual el famoso DSM (Diagnostical and Statistical Manual).

Este manual puede ser una de las peores aberraciones de la medicina moderna, y es que si usted es diagnosticado con algún padecimiento de los registrados ahí será recetado con drogas delicadas. En los 80's los psiquiatras consideraban que uno de cada diez estadounidenses padecía alguna enfermedad mental, en los 90's se decía que uno de cada dos, de seguir así ¿a donde vamos?.

Este tipo de supuestos son una basura total y es que querer tratar con drogas todos los conflictos existenciales, confusiones, descortesías, promiscuidad o violencia del hombre es una aberración total, falta entender que la desmoralización y falta de sentido de la sociedad actual, ocupada del dinero nos lleva un mundo en el que la existencia del hombre se basa en acumular bienes materiales y a veces se pierde el rumbo  sin que esto signifique necesariamente la locura, y es que, ¿qué pasa cuando alcanzas lo que soñabas (autos, casas,éxito profesional, lo que sea) y no te sientes como quisieras? y llegas a la irremediable pregunta ¿Hay algo más?, sino sabemos la respuesta y nos deprimimos ¿merecemos ser medicados en todos los casos? (y no es que quiera que impere la buena moral ni ningún dogma religioso)

Y es que cuasi demoniaco DSM no dice cosas como estas.

¿Padece usted un trastorno emocional sin resolver que tiene su origen en una mal experiencia del pasado?. Según el DSM usted padece un trastorno de estrés postraumático.

¿Su hijo tiene problemas para aprender aritmética?, lo más probable es que tenga un mal profesor o que el modelo educativo no se ajuste a su personalidad, el DSM lo diagnosticaría como trastorno de aprendizaje numérico.

¿Está disgustado porque no se ha ganado la lotería? el DSM dice trastorno de estrés ludopático

¿Rechazaría usted un tratamiento para su hijo derivado de un diagnostico como este? el DSM dice trastorno de incumplimiento de tratamiento prescrito.

Lo grave es que:

En EUA 5.2 millones de niños en edad escolar, cerca del 10% del total, han sido diagnosticados con TFAH (trastorno de falta de atención por hiperactividad) y han sido tratados con Ritalin, una droga que a incrementado sus ventas de manera impresionante, tan impresionante como sus espeluznantes efectos secundarios

Al parecer los psiquiatras inventan enfermedades para todo... ¿Le gusta tamborilear los dedos cuando está sentado en su escritorio? eso es un trastorno de percusión digital.

Tenga pues usted cuidado de caer en manos de uno de estos tipos, una bata blanca no siempre es la solución a sus problemas, los psicólogos no son tan peligrosos pero sino son del tipo filosóficos y honestos pueden llevarle a una perdida de tiempo y dinero...pero esa es otra historia quizá lo toque en otra entrega.

Fuente y recomendación de lectura:

Más platón y menos Prozac del doctor Lou Marinoff

Saludos.

martes, 12 de agosto de 2008

Vb or C#

A menudo me preguntan los novatos me preguntan ¿Qué es mejor VB.NET o C#? o a veces platico con los no tan novatos y discutimos de porque uno y porque otro.

La verdad es que la inmensa mayoría de las cosas que se pueden hacer un lenguaje se pueden hacer en el otro, esto debido a que comparten el Framework de .NET y a que ambos se ajustan a las especificaciones del CLR.

Elegir el lenguaje al iniciar un desarrollo es importante, muchas veces se elige por las razones equivocadas.

“Este lo conozco bien”

“Me han dicho que éste es el mejor”

“Siempre he trabajado con éste y me ha funcionado”

Cada lenguaje fue diseñado para atacar un tipo de problemas en particular, si una vez que conoces un nuevo lenguaje y tu manera de pensar sobre la programación no cambia, entonces es un lenguaje que no merece la pena ser aprendido.

El caso de VB.NET y C# es particular, puesto que .NET es una plataforma que muchas veces es usada para soluciones empresariales (Hay muchas otro tipo de aplicaciones que se pueden desarrollar con .NET) y bien podríamos decir que ambos lenguajes pueden cumplir con este tipo de tareas.

Yo prefiero C# por una razón mucho más simple que los complicados argumentos de mis colegas, yo prefiero C# porque tiene una sintaxis más clara, mucho menos verbosa y más intuitiva.

Esto podría parecer secundario pero no lo es. La mayor parte del tiempo el código es modificado y muchas veces esta tarea la realizan programadores distintos al que originalmente creo el código y es importante que ese código sea los más claro y sencillo posible, esto al final es tiempo y el tiempo es dinero.

Cualquier tonto puede escribir código que entienden las computadoras. Los buenos programadores escriben código que entienden las personas.

-Martin Fowler

Aquí el diagrama de una clase sencilla, la clase Persona con sólo algunas propiedades básicas.

DIAGRAMA[1]

El código en C#

    class Persona

    {

        public String Nombre { get; set; }

        public String ApellidoPaterno { get; set; }

        public String ApellidoMaterno { get; set; }

        public String Domicilio { get; set; }

        public int Edad { get; set; }

        public String EstadoCivil { get; set; }

        public Boolean EsHombre { get; set; }

    }

El código en VB.NET

Public Class Persona

    Private _nombre As String

    Public Property Nombre() As String

        Get

            Return _nombre

        End Get

        Set(ByVal value As String)

            _nombre = value

        End Set

    End Property

 

    Private _apellidoPaterno As String

    Public Property ApellidoPaterno() As String

        Get

            Return _apellidoPaterno

        End Get

        Set(ByVal value As String)

            _apellidoPaterno = value

        End Set

    End Property

 

    Private _apellidoMaterno As String

    Public Property ApellidoMaterno() As Integer

        Get

            Return _apellidoMaterno

        End Get

        Set(ByVal value As Integer)

            _apellidoMaterno = value

        End Set

    End Property

 

    Private _domicilio As String

    Public Property Domicilio() As String

        Get

            Return _domicilio

        End Get

        Set(ByVal value As String)

            _domicilio = value

        End Set

    End Property

 

    Private _edad As Integer

    Public Property Edad() As Integer

        Get

            Return _edad

        End Get

        Set(ByVal value As Integer)

            _edad = value

        End Set

    End Property

 

    Private _estadoCivil As Integer

    Public Property EstadoCivil() As Integer

        Get

            Return _estadoCivil

        End Get

        Set(ByVal value As Integer)

            _estadoCivil = value

        End Set

    End Property

 

 

    Private _esHombre As Boolean

    Public Property EsHombre() As Boolean

        Get

            Return _esHombre

        End Get

        Set(ByVal value As Boolean)

            _esHombre = value

        End Set

    End Property

End Class

Si usted nunca a usado ninguno de los dos lenguajes, ¿cuál le parece más legible? Usted amigo lector que no conoce de software, ¿cuál elige? ¿Es más explicito y claro VB? ¿Le gusta la simplicidad de C#? ¿VB.NET es una burda aproximación a un lenguaje de OOP? ¿Sigue siendo Vb realmente el lenguaje más sencillo de aprender?,  Si tiene a su cargo un grupo de programadores, ¿con cual lenguaje cree que serán más efectivos?

Saludos

lunes, 11 de agosto de 2008

Having fun with extension methods

C# es un de los lenguajes que más rápidamente evoluciona, en la entrega 3.0 de este lenguaje existen muchas nuevas características, una de las más interesantes son los extension methods, que como su nombre indica, son extensiones a clases existentes, incluso podemos extender clases de las cuales no tenemos el código fuente,si bien es una muy buena capacidad del lenguaje hay que tener cuidado al usarla.

Aquí les voy a dejar un ejemplo que bien podría estar por ahí en alguna aplicación de facebook o en su blog o algo así. Se trata de un sencillo ejemplo de como podemos extender la clase String para obtener un nick así medio loco, como el que estilan ahorita los chavillos.

Ejemplo de nick:

"Quiero ver a Oasis en concierto"

Método alternado:

"qUiErO vEr a OaSiS eN cOnCieRtO"

Método loco:

"Qu!3r0 v3r 4 04$!$ 3n <0n<!3rt0"

Aquí el código:

Una clase que tiene dos métodos de extensión.

public static class StringExtension

    {

        public static string AlternateCase(this string text)

        {

            string resultString= "";

            for (int i = 0; i < text.Length; i++)

            {

                if (i % 2 == 0)

                    resultString += text[i].ToString().ToLower();

                else

                    resultString += text[i].ToString().ToUpper();

       

            }

            return resultString;

        }

 

        public static string GetCrazy(this string text)

        {

            string resultString = "";

            for (int i = 0; i < text.Length; i++)

            {

                String currentChar = text[i].ToString().ToLower();

                switch (currentChar)

                {

                    case "a":

                        currentChar = "4";

                        break;

                    case "b":

                        currentChar = "6";

                        break;

                    case "c":

                        currentChar = "<";

                        break;

                    case "e":

                        currentChar = "3";

                        break;

                    case "g":

                        currentChar = "9";

                        break;

                    case "i":

                        currentChar = "!";

                        break;

                    case "l":

                        currentChar = "1";

                        break;

                    case "o":

                        currentChar = "0";

                        break;

                    case "s":

                        currentChar = "$";

                        break;

                   

                }

                resultString += currentChar;

 

            }

            return resultString;

        }

    }


Y toda la magia únicamente declarando el método static y usando la palabra reservada this y después el tipo


public static string GetCrazy(this string text)


De esta manera, nuestro equipo de desarrollo puede usar nuestros métodos de extensión así.




String g = "Probando los inutiles metodos del rulas";


            MessageBox.Show(g.GetCrazy());


            MessageBox.Show(g.AlternateCase());


Espero que les ayude.


Saludos.