15 de abril de 2008

Tarjeta de programador

El fin de semana pasada me entro una inquietud. Saber como quedaría una tarjeta de presentación/visita de un programador. Y que ademas la tarjeta de presentación fuese un programa. Así que me he puesto a ello y aquí presento el resultado.

Empecemos con un par de reglas para hacer la tarjeta:


  1. Todo el texto debe poder compilarse/ejecutarse

  2. La información normal de una tarjeta de visita debe de quedar clara en el texto

  3. El texto tiene que ser suficientemente corto como para caber en una tarjeta


Yo aparte, en mi caso añadí la siguiente regla, tiene que ser en Haskell. Y esta es la primera versión que se me ocurrió:

data Career = Actor | Programmer | TaxiDriver | Writer
deriving( Show )
type Name = String
type Contact = String

careerOf :: Name -> Maybe Career
careerOf "Luis Jose Cabellos Gomez" = Just Programmer
careerOf _ = Nothing

contactOf :: Name -> Contact
contactOf "Luis Jose Cabellos Gomez" = "zhen.sydow at gmail.com"

main = putStrLn.unlines $ map
(\f-> f "Luis Jose Cabellos Gomez")
[ id, show.careerOf, contactOf ]

Lo que me gusta del código anterior es que la definición de las funciones por reglas hace que se lean casi como frases. También me gusta el chiste con el monad Maybe, Luis es "Just a Programmer", no me digáis que no queda bien. Lo que no me acaba de gustar es que las funciones son muy artificiales, y se repite en muchos sitios mi nombre. Y luego la función principal es muy confusa. Y para una definición de tipos tan triste, mejor nos quedamos con las macros de C.

Pasemos a la segunda versión.

data Career = Actor | Programmer | TaxiDriver | Writer
deriving Show

data Person = Person { name :: String
, career :: Maybe Career
, contact :: String }
deriving Show

me = Person "Luis Jose Cabellos Gomez"
(Just Programmer)
"zhen.sydow at gmail.com"

main = putStrLn $ show me

La segunda versión tiene lo bueno de la primera versión (no me podía quedar sin el chiste del Maybe) y tiene un par de mejoras. La función principal es muy sucinta, y la información principal no esta tan desperdigada. Ademas de tener una definición de tipos más completa. Me quedo con esta versión.

Cuando ya tenía el texto, pues me puse a decorarlo un poco. Se me ocurrió imprimirlo como su fuese una carta de poker. Usando el Inkscape me hice un símbolo lambda y lo puse como si fuese el palo de la baraja. A partir de ahora el poker se juega con corazones, diamantes, picas, tréboles y lambdas. Lo puse todo sobre una imagen, puse en negrita los datos . Y ya esta, ya tenia tarjeta de programador. A imprimirlo.


Y este es el resultado final. Tengo que decir que la impresora no lo imprimió todo lo bien que me gustaría. Y quizás con una fuente un poco más clara el resultado hubiese sido mejor, pero....


... me pregunto si será posible hacer algo tan elegante en código C++.

UPDATES:


FIN UPDATES

9 comentarios:

Acido 69 dijo...

Gran idea, me va a servir de inspiración para hacerme mi tarjeta.

Anónimo dijo...

¡Qué horror! Y luego queremos los programadores quitarnos el san benito de frikis.

Luis Cabellos dijo...

acido69, Me encantaría ver diferentes versiones de tarjetas de programador. Sobre todo por curiosidad, por ver como quedan en otros lenguajes de programación.

Unknown dijo...

Genial idea y @anónimo ¿qué tiene de malo? A ver si me curro una en Java o en Bash y la pongo en mi blog. Saludos

Unknown dijo...

Listo Luis, he colocado una en Java en mi blog, aunque a mis colegas les ha parecido una frikada ;-) Saludos

Luis Cabellos dijo...

Ja,ja, genial Ubersoldat. Ya he puesto en enlace tu versión en Java.

[modo fanhaskell] Lo que sospechaba, no llega al la preciosidad de la versión en Haskell[/modo]

Unknown dijo...
Este comentario ha sido eliminado por el autor.
Luis Cabellos dijo...

Pues la frikada de la tarjeta al final bate récords en cuanto a comentarios en mi blog, a parte de reencontrarme con viejos conocidos. Prometo poner una entrada hablando de en que estoy trabajando en el futuro.

Y si no para encontrarme, tengo perfil en:
http://www.linkedin.com/

angel dijo...

necesito ayuda urgentementa amigo,
en mi compu aparece un error de bucle infinito y no puedo entrar, es por la tarjeta de video (nvidia) esa es la marca no puedo instalar el controlador por que se reinicia la pc, pero cuando lo intento instalar aparece como si fuese a entrar a modo seguro pero aparecen unas caritas, no se que sea, pero estoy seguro que no es virus, el punto es que no logro entrar si no de las unicas maneras son en modo seguro, (de ahi desintalo la tarjeta de video) y puedo entrar si lo instalo ya no puedo entrar, pero ahora ya no puedo instalar y no tengo el disco, y descarge el drive desde la pagina principal y nadaaaa, estoy desesperado ayuda amigooo