Showing posts with label Misc. Show all posts
Showing posts with label Misc. Show all posts

Monday, October 13, 2014

Robot Turtles - Review del juego

Siendo un papá geek...No podía dejar pasar la oportunidad de comprar este juego para mi hija -;)


Robot Turtles es un alucinante juego de mesa que apunta a enseñar fundamentos de programación a niños pequeños.

El juego en si, es simple...tenemos un tablero y un lugar para colocar a nuestra tortuga (el juego se puede jugar con hasta 4 jugadores), debemos colocar una gema que la tortuga necesita obtener y es ahí donde comienza la diversión...

Tenemos cartas que indican el movimiento que la tortuga necesita hacer...moverse hacia adelante, moverse hacia la izquierda o moverse hacia la derecha.

El niño/niña necesita colocar las cartas de manera que la tortuga pueda moverse alrededor del trablero y finalmente obtener la gema para poder ganar el juego.

Este es el concepto más simple y básico...uno más complejo involucra cajas, bloques de hielo y hasta torres de hielo...las de hielo se pueden derretir con una carta de rayo laser, mientras que la caja se puede mover siempre y cuando haya suficiente espacio para que la caja se pueda mover para que la caja pueda estar en un espacio vacío...

Una vez que se tienen movimientos que pueden repetirse...como...

Moverse hacia adelánte 4 veces, luego voltear a la izquierda, moverse hacia adelánte 4 veces más...

El "Moverse hacia adelánte 4 veces" se puede reemplazar por una carta de función así que quedaría así...

Carta de Función, luego hacia la izquierda, Carta de Función...

También tenemos algunas torres de piedea, que no se pueden derretir o moverse, así que los niños tienen que moverse alrededor de ellas....


Si algo anda mal...los niños puedn utilizar una carta "bug" para deshacer el último movimiento y reconstruírlo...lo cual finalmente significa...repetir la acción con una nueva secuencia de acciones...

El juego es sí es muy bueno...y una vez que los niños se sienten cómodos con la mecanica del juego, podemos armas escenarios realmente complejos donde necesitan pensar como obtener la gema en el tiempo más corto y utilizando la menor cantidad de tarjetas...


Debo decirlo...que puede ser mejor que enseñarle a nuestro pequeños el gozo de la programación mientras juegan un divertido juego de mesa?

Si tienen la oportunidad...vayan y comprenlo...es realmente muy divertido -:D

Saludos,

Blag.
Development Culture.

Thursday, July 03, 2014

10 años de Packt Publishing!

Mis buenos amigos de Packt Publishing están cumpliendo 10 años y lo están celebrando con una asombrosa promoción!


Todos los Ebooks y Videos por tan solo $10 dólares cada uno...apurense! Esta maravillosa oferta termina el 5 de Julio...así que no demoren y compren todos los que puedan -:D


Saludos,

Blag.
Development Culture.

Friday, April 04, 2014

Cinder Creative Coding Cookbook - Review del Libro

Bueno...algunas veces tengo mucho tiempo y realmente soy un lector avido...además...para este libro en particular no he tratado todos los ejemplos uno por uno...pero solo porque quería compartir mi review con la comunidad...

Así que...acabo de terminar de leer Cinder Creative Coding Cookbook...y debo decirlo...el libro es simplemente asombroso!


Amo Cinder...no puedo negarlo...pero después de leer este libro...lo amo aún más...

Primero lo primero...este libro está lleno de recetas útiles...así que está lleno de ejemplos con código fuente documentado y explicaciones fáciles de seguir...pero...no es para principiantes...yo diría...sientete cómodo con Cinder...luego lee este libro...y luego enamorate de Cinder...

El capítulo de Procesamiento de Imágenes es simplemente impresionante...con las funciones incluídas de Cinder e integración con OpenCV y Cairo simplemente se ganó mi corazón...con estas recetas...puedes inclusive construir...digamos...una rústica aplicación de reconocimiento facial...

El capítulo Sistemas de Particulas es otra gema que merece ser mencionada...

Los capítulos sobre gráficos 2D y 3D están muy bien documentados y llenos de ejemplos...

Y para terminar con broche de oro...las integraciones con Microsoft Kinect y QR Code...son impresionantes...

Este libro tiene 352 páginas! Así que puedes esperar encontrar cientos de recetas con los más diversos y alucinantes resultados...

Los autores realmente alegraron mi día con este libro -:)

Y por cierto...algo que pienso que es digno de mencionarse...es que el libro se enfoca tanto en usuarios de Windows como de Mac al mismo tiempo...así que nadie es dejado de lado...Ok...quizás los usuarios de Linux...pero...Cinder no existe en Linux...así que no se ha lastimado a nadie...

Saludos,

Blag.
Development Culture.

Amazon fireTV - Primera impresiones

El Miércoles 04 de Abril I recibí un email de Amazon contándome sobre el Amazon fireTV...ya había escuchado algo hace tiempo, pero me había olvidado completamente hasta que recibí el email...


Como realmente amo Amazon, mi primer pensamiento fue "Necesito comprarlo"...y mi segundo pensamiento fué "Necesito esperar a que llegue"...felizmente...siendo un cliente de Amazon Prime Customer...llegó tan rápido como lo esperaba...

El desenpaquetado

Fué una bonita y agradable experiencia -:) La caja vino con mi Amazon fireTV y mi  cable Amazon Basics HDMI...que ordené por separado...


Me sorprendió mucho el hecho de que el fireTV es una pequeña y plana caja negra...bueno...nunca he utilizado Roku, Apple TV o Chrome Cast...así que, qué sabré yo?


Realmente me gustó el control remoto, compacto y con los botones suficientes para hacer la vida simple y sencilla...también viene con Speech Search...sobre el cual debo decir...o mi Inglés es realmente malo o el Speech Search necesita muchas mejoras  -:(


La Instalación

La instalación fué realmente rápida...enchufar a la corriente...conectar el cable HDMI y disfrutar...Ni siquiera tuve que leer el manual -:P


La primera ejecución

Lo primero...es la actualización...así que el fireTV te dará el último software disponible...que no tomará más que un par de minutos...



Una vez que tu fireTV está listo para ejecutarse, verás un simpático video mostrándo las bondades del...fireTV por supuesto -:)


He leído que hay gente que se queja de este video...pero en realidad yo lo encontré divertido, corto y educativo...además...solo se ejecuta una vez (a menos que quieras verlo de nuevo)...


El Performance

Hasta ahora...Solo lo he probado en dos televisores...el que tengo en la sala donde está el WIFI  y en mi cuarto...en ambos lugares funcionó perfectamente bien...gran velocidad y performance para tanto Netflix como para Amazon Instant Video...además...la interfaz es más limpia y fácil de navegar...en realidad Netflix parece verse mejor y más organizado...


Veredicto después de un par de días

Bueno...solo han pasado un par de días...pero...amo completamente mi Amazon fireTV...hasta viene con juegos! Que más quieres! Pueden ver Minecraft mostrándose...luego de un poco más de tiempo...podré dar un mejor review -;) Mantenganse alerta!

Saludos,

Blag.
Development Culture.

Tuesday, March 25, 2014

Bienvenidos al d-shop

* Esto es solo para empleados de SAP y amigos*

Trabajas para SAP? Eres amigo con beneficios de entrar a SAP Labs en Palo Alto? Entonces...puedes venir al d-shop y divertirte un poco...estamos localizados en el  Edificio 7 del campus de Deer Creek...


Así que...que es el d-shop? Bueno...basicamente...es un lugar donde los desarrolladores pueden vernir a hablar, hackear y divertirse un poco...tenemos muchos juguestes y gadgets y por supuesto tutoriales y workshops para que puedas empezar...

Esto es lo que tenemos hasta el momento...

Wearables
  • Fitbit Flex
  • Nike Fuelband
  • Jawbone UP
  • Google Glass
Robotics
  • Lego Mindstorm
  • Parrot ARDrone
  • Sphero
Embedded
  • Raspberry Pi
  • Arduino Uno
  • Arduino Yun
  • Beaglebone Black
  • Estimote
  • Konkakt
  • Little Bits
Misc
  • Oculus Rift
  • Leap Motion
  • Microsoft Kinect
  • Phillips Hue
  • Porkfolio
  • Ultimaker 3D Printer
  • Makerbot 3D Printer
Y por supuesto...estamos buscando más -;)

Puedes venir...aprender...iniciar tu propio proyecto y compartirlo con la comunidad...pero la regla de oro...los juguetes se quedan aquí...puedes hacer check in...pero no puedes hacer check out -;)

Saludos,

Blag.
Development Culture.

Wednesday, March 19, 2014

Compra uno...llevate uno gratis...2000 titulos en Packt Publishing!

Mis buenos amigos de Packt Publish acaban de lanzar una excelente campaña, celebrando sus 2000 titulos!


De Marzo 18 a Marzo 26 del 2014 podrás hacer compras ilimitadas y la oferta es aplicada automaticamente al momento de hacer el checkout...

No te lo puedes perder! Compra algunos libros y empieza a aprender!

Saludos,

Blag.
Development Culture.

Thursday, December 26, 2013

Cookoo Watch - Review del Producto

Así que...qué es lo que un Geek como yo recibe por Navidad?


Un Cookoo watch por supuesto! -:D

Así que...vamos a revisarlo -;)


El reloj viene en un case tipo Casa de Aves...que en realidad puede ser utilizado como una Case de Aves...o por lo menos...eso es lo que ellos proponen...lo cual me parece bastante bueno -:)


El reloj es un poco grande pero no se siente pesado o molesto cuando uno lo usa...luego de los primeros 5 minutos...simplemente te acostumbras...además...al ser capaz de conectarse a tu celular...no podría ser pequeño...


Una de las cosas que me gusta del reloj es que te permite manejar la camara del celular...esto es utilizándo el software Cookoo Life que es por supuesto...disponible de manera gratuita...en realidad...obviamente tomé esta foto utilizando el boton "Command" del reloj -;)

Otra cosa que me gustó...es que te permite controlar la música...un click para Pause/Play...otro más largo para cambiar la canción y otro un poco más largo para completamente para la música...

Con respecto a la vida de la batería...bueno...el reloj se conecta con tu celular utilizando Bluetooth Smart...así que en realidad, no consume mucha batería...hice un pequeño experimento hoy día...

Cargué mi celular al 100%...luego salí de mi departamento y caminé a la oficina...lo cual me toma unos 40 minutos...tenía puesta la música y estaba revisando mi email, Facebook y Foursquare...cuando llegué a la oficina...solo el 8% se habia gastado...así que podemos decir...cerca del 1% cada 5 minutos...algo como 8 horas antes de la siguiente recarga...por supuesto...sin tener en cuenta "Llamadas por teléfono"...que pueden gastar tu batería de una manera mucho más rápida...debo decirlo...nada mal...

Además...el reloj viene con una batería regular de reloj...así que no hay necesidad de cargarlo...se supone que debe durar cerca de un año y cambiarla es bastante sencillo...también es resistente al agua -;)

Así que...qué más hace este bonito reloj?


Como pueden ver...te puede decir si tienes una llamada perdida...si tienes nuevos emails...si tienes una cita en tu calendario...si tienes un mensaje en Facebook...y si te estás olvidando tu celular...

También se supone que te permite hacer check-ins en Facebook...pero no he sido capaz de hacerlo funcionar en el último update del Cookoo Life....puesto que la versión actual es un resiseño especialmente creado para IOS 7...asumo que siguen trabajando en hacerlo aún mejor...

Una última cosa que captó mi atención fué....


Así que...van a soltar una API para permitir a los desarrolladores crear nuevas manera de conectar el celular con el reloj...yo ya tengo algunas ideas interesantes pero prefiero esperar a que suelten el API antes de comentarlas...

Hasta el momento...amo este reloj...no he tenido ningún problema de "conexión"...y está trabajándo tal cual lo prometido...no puedo esperar para ver como evoluciona en el futuro -:)

Saludos,

Blag.
Developer Empowerment and Culture.

Thursday, December 19, 2013

Packt Publishing Book Bonanza

Mis amigos de Packt Publishing han lanzado una campaña alucinante!


Desde el 19 de Diciembre del 2013 al 3 de Enero del 2014...todos los libros y videos a solo $5...sin ningún tipo de límite!

Bueno, no? Solo sigan este enlace http://bit.ly/1jdCr2W y llenen su biblioteca -;)

Saludos,

Blag.
Developer Empowerment and Culture.

Wednesday, April 10, 2013

Un nuevo comienzo


Luego de 3 años  viviendo en Montreal, Canada...con 1 año y 8 meses con Beyond Technologies y 1 año y 3 meses con SAP Labs Canada...estoy haciendo mis maletas nuevamente...

Esta vez, me estoy mudando con mi familia a California...donde voy a trabajar para SAP Labs en Palo Alto.

Porque nos estamos mudando? Simplemente...porque mi equipo Developer Experience esta dividido entre Palo Alto y Waldorf...siendo mi colega Vitaliy Rudnyskiy y yo los unicos en nuestros paises (El en Polania y yo en Canada)...es por eso que tiene total sentido ir donde el equipo esta -;) (Yo no estaba por supuesto dispuesto a aprender Aleman).

Estoy volando este Sabado, asi que mis ultimos dias en Montreal ya estan aqui...aunque trabaje desde mi cada la mayor parte del tiempo, la veces que visite la oficina fueron realmente excelentes...hice muy buenos amigos como Pakdi, Jon, Elsa, Krista, Pierre y Nolwen. Me mantendre en contacto con ellos, claro esta -:)

Al moverme a la oficina de Palo Alto...ambos mi puesto Development Expert y mis tareas van a ser las mismas...bueno...en realidad...mis tareas se van a incrementar -:P Pero a quien le importa?...amo tanto mi trabajo que todas la nuevas tareas son bienvenidas -;)

Una de las cosas realmente buenas de esta mudanza es que voy a poder asistir a todas la conferencias, hackatons y reuniones que se dan en Estados Unidos...asi que estoy muy emocionado...

Por supuesto...despues de que toda la locura de la relocacion este terminada...continuare blogeando como loco, tratando de darles las mejores experiencias de programacion -:)

Saludos,

Blag.

Sunday, October 07, 2012

Tomando nota de mis calorias al estilo R

Asi que...estoy de vuelta con Your Shape: Fitness Evolved 2012 para XBox Kinect. Porque? Porque quiero perder un poco de peso y volver a estar en forma por supuesto -;)

La razon por la cual deje de jugar este juego es simple...soy flojo...pero esta vez, he regresado con una meta...quemar calorias!

Aunque estoy usando la aplicacion para IPhone Your Shape que es realmente muy buena...queria hacer algo con  R y mas precisamente con Rook...

Lo que queria, era tomar nota de los dias y las calorias quemadas y generar un bonito grafico, pero que me permitiera escoger entre un rango de fechas...

Este es el codigo que hice ayer en la noche...

Blag_Fitness.R
require("Rook")
library("lubridate")
setwd("C:/Blag/R_Scripts")

Blag_Fitness = read.csv(file="Blag_Fitness.csv",header=TRUE)
Blag_Fitness$Date<-strptime(Blag_Fitness$Date,"%d/%m/%Y")
Rows<-nrow(Blag_Fitness)
Rows
Default_Day<-day(Blag_Fitness$Date[1])
Default_Month<-month(Blag_Fitness$Date[1])
Default_Last_Day<-day(Blag_Fitness$Date[Rows])
Default_Last_Day
Default_Last_Month<-month(Blag_Fitness$Date[Rows])

fill_zeros<-function(param,mode=0){
    count<-nchar(param)
    zeros<-rep(0,1)
    if(mode==0){
      if(count==1){
        r_param<-c(zeros,param)
      }else{
        r_param<-c(param)
      }
    }else{
      if(count==7){
        r_param<-c(zeros,param)
      }else{
        r_param<-c(param)
      }      
    }
    r_param<-paste(r_param,collapse="")
    return(r_param)      
}

newapp<-function(env){
  req<-Rook::Request$new(env)
  res<-Rook::Response$new()
  
  res$write('<form method="POST">\n')
  res$write('<div align="center"><table><tr>') 
  res$write('<td><select name=DAYFROM>')
  for(i in 1:31) {
    if(i==Default_Day){
      res$write(sprintf('<OPTION VALUE=%s SELECTED=%s>%s</OPTION>',
                        i,Default_Day,i))
    }else{
      res$write(sprintf('<OPTION VALUE=%s>%s</OPTION>',i,i))
    }
  }
  res$write('</select></td><td>')
  res$write('<select name=MONTHFROM>')
  for(i in 1:12) {
    if(i==Default_Month){
      res$write(sprintf('<OPTION VALUE=%s SELECTED=%s>%s</OPTION>',
                        i,Default_Month,i))
    }else{
      res$write(sprintf('<OPTION VALUE=%s>%s</OPTION>',i,i))
    }
  }
  res$write('</select></td>')
  res$write('</select></td><td>')
  res$write('<select name=YEARFROM>')
  for(i in 2012:2020) {
    res$write(sprintf('<OPTION VALUE=%s>%s</OPTION>',i,i))
  }
  
  res$write('</select></td>')
  res$write('<td>To</td>')

  res$write('<td><select name=DAYTO>')
  for(i in 1:31) {
    if(i==Default_Last_Day){
      res$write(sprintf('<OPTION VALUE=%s SELECTED=%s>%s</OPTION>',
                        i,Default_Last_Day,i))
    }else{
      res$write(sprintf('<OPTION VALUE=%s>%s</OPTION>',i,i))
    }
  }
  res$write('</select></td><td>')
  res$write('<select name=MONTHTO>')
  for(i in 1:12) {
    if(i==Default_Last_Month){
      res$write(sprintf('<OPTION VALUE=%s SELECTED=%s>%s</OPTION>',
                        i,Default_Last_Month,i))
    }else{
      res$write(sprintf('<OPTION VALUE=%s>%s</OPTION>',i,i))
    }
  }
  res$write('</select></td>')
  res$write('</select></td><td>')
  res$write('<select name=YEARTO>')
  for(i in 2012:2020) {
    res$write(sprintf('<OPTION VALUE=%s>%s</OPTION>',i,i))
  }
  res$write('</select></td>')  
  
  res$write('<td><input type="submit" value="Get Stats"></td>')
  res$write('</tr></table></div>')
  res$write('</form>')
  
  if (!is.null(req$POST())) {
    p_dayfrom = req$POST()[["DAYFROM"]]
    p_monthfrom = req$POST()[["MONTHFROM"]]
    p_yearfrom = req$POST()[["YEARFROM"]]
    p_dayto = req$POST()[["DAYTO"]]
    p_monthto = req$POST()[["MONTHTO"]]
    p_yearto = req$POST()[["YEARTO"]]
    p_dayfrom<-fill_zeros(p_dayfrom)
    p_monthfrom<-fill_zeros(p_monthfrom)
    date_from<-c(p_dayfrom,'/',p_monthfrom,'/',p_yearfrom)
    date_from<-paste(date_from,collapse="")
    date_from_n<-strptime(date_from,"%d/%m/%Y")
    date_from_n<-as.numeric(format(date_from_n,"%d%m%Y"))
    p_dayto<-fill_zeros(p_dayto)
    p_monthto<-fill_zeros(p_monthto)
    date_to<-c(p_dayto,'/',p_monthto,'/',p_yearto)
    date_to<-paste(date_to,collapse="")
    date_to_n<-strptime(date_to,"%d/%m/%Y")
    date_to_n<-as.numeric(format(date_to_n,"%d%m%Y"))
    
    Blag_Fitness$Date<-as.numeric(format(Blag_Fitness$Date,"%d%m%Y"))
    
    Selected_Data<-subset(Blag_Fitness, Date >= date_from_n & Date <= date_to_n)
    Selected_Data$Date<-as.character(Selected_Data$Date)
    fixer<-fill_zeros
    Selected_Data$Date<-sapply(Selected_Data$Date,fixer,mode=1)
    Selected_Data$Date<-strptime(Selected_Data$Date,"%d%m%Y")

    res$write(sprintf('<div align="center"><h3>From %s to %s</h3></div>',
                      date_from,date_to))
    
    png("Blag_Fitness.png",width=800,height=500)
    plot(Selected_Data,type="n")
    lines(Selected_Data,col="blue",ann=FALSE)
    points(Selected_Data, pch=21, bg="lightcyan", cex=1.25)
    dev.off()
    res$write("<div align='center'>")
    res$write(paste("<img src='", server$full_url("pic"), "/", 
                    "Blag_Fitness.png'", "/>", sep = ""))
    
    res$write("</div>")    
  }else{
    res$write("<p>No data to select...</p>")
  }
  res$finish()
}

server = Rhttpd$new()
server$add(app = newapp, name = "Blag_Fitness")
server$add(app = File$new("C:/Blag/R_Scripts"), name = "pic")
server$start()
server$browse("Blag_Fitness")

Cuando la ejecutamos, la aplicacion va a leer la primera y ultima linea de nuestro archivo .CSV y va a definir los valores standard para loscomboboxes...haciendo mas sencilla la seleccion de fechas...

Aqui viene la imagen -;)


Asi que...pueden ver que estoy haciendo un gran progreso...comenze hace 3 dias y estoy quemando mas calorias cada dia...

Saludos,

Blag.

Friday, June 08, 2012

SAP HANA vs. PostgreSQL - Pequeño Test

Alguien dejo un comentario en mi blog SAP HANA vs. MySQL - Small test diciendo:

i think that if you retry this test using PostgreSQL you could have another surprises ;)
(Pienso que si volvieras a a hacer este test usando PostgreSQL te llevarias otras sorpresas)


Por supuesto, estaba listo para el desafio, asi que instale PostgreSQL e hice la misma cosa...


94ms para 1K registros? Por supuesto estaba sorprendido...puesto que en SAP HANA tuvimos...


1.18 seconds...eso es 0.094 segundo...casi 94% mas veloz que SAP HANA...empeze a pensar sobre esto y me di cuenta por supuesto, que habia una gran diferencia entre estas dos pruebas...primero, PostgreSQL esta haciendo la carga en background, mientras que SAP HANA estaba escribiendo en pantalla todos los mensajes"Statement 'insert...'" ...asi que...se acuerdan que les dije que habia una manera mas rapida de cargar datos en SAP HANA? Tan solo con subir un archivo .CSV?

Bueno...para hacer las cosas mas interesantes, genere un nuevo archivo con 3K registros...aqui estan los resultados...


Le tomo a PostgreSQL solo 281 ms cargar 3K registros...bastante veloz, no? 0.281 segundos...

Veamos como se comporta SAP HANA...


Interesante...le tomo solamente 116 ms...0.116 segundos...

Lo cual significa que esta nueva prueba, SAP HANA fue casi 58% mas veloz...

Interesante prueba desde luego...y SAP HANA demostro porque es la mejor y mas rapida Base de Datos In-Memory Database en el mercado...

Saludos,

Blag.

Wednesday, March 28, 2012

Asi que...que hago en SAP Labs?

Estoy seguro de que esta es una pregunta que mucha gente se hace...que hago en SAP Labs? Bueno...primero lo primero...no hago mas ABAP...es verdad...solo lo uso cuando lo necesito, pero es igual con otras tecnologias con las cuales tengo que jugar. My equipo se llama "Technology Innovation and Developer Experience"...algo asi como "Innovacion Tecnologica y Experiencia del Desarrollador"... Una de mis tareas dentro del equipo, es ayudar a crear herramientas tanto externas como internas, asi que yo puedo escoger mi arma y comenzar a programar...hasta ahora he utilizado Python, Flex, PHP, WebDynpro ABAP y R. Otro de mis roles es bloggear acerca de nuevas tecnologias SAP, lo cual significa de debo escribir blogs sobre SAP HANA, SUP, Gateway, JPASS, SAPUI5, etc. Pero...no todo es programacion para mi...para nada...mis otros roles incluyen manejo y soporte del InnoJam, blogeo y soporte de eventos SAPs (Run Better, DKOM, TechEd, Sapphire) y algunos cuantos proyectos secretos que no puedo compartir -:) Asi que basicamente, mi trabajo es sobre Investigacion y Desarrollo y ayudar a los desarrolladores con las ultimas y mejores tecnologias de SAP -;) Saludos, Blag.

Saturday, December 31, 2011

Feliz Anho Nuevo 2012!


Supongo que este es el momento de hablar de todas las cosas buenas que me pasaron el 2011, y de las cosas buenas que quiero que me pasen el 2012...asi que aqui voy -:)

2011
* Entre a SAP
* Aprendi HANA, Gateway y R
* Deje de ser un Consultor ABAP despues de casi 11 anhos

2012
* Escribir mi libro de Python
* Continuar aprendiendo R
* Perder peso
* Darle a mi hija la mejor fiesta de 4 anhos que ha habido jamas

y de paso...FELIZ ANHO NUEVO 2012!!!

Saludos,

Blag.

Wednesday, December 07, 2011

Venta de Navidad!


Nuevamente...hasta el 30% de descuento en mis libros (edicion impresa) en...

Libros de Blag en Lulu.com

Disponible hasta la primera semana de Enero...aprovechen -;)

Saludos,

Blag.

Friday, November 18, 2011

Sigue mis blogs en un solo Feed!


Gracias a una contribucion de Consultoria SAP ahora pueden seguir mis 2 blogs El Blog Tecnologico de Blag y Blag's bag of rants utilizando un solo feed.


Saludos,

Blag.

Monday, July 04, 2011

Decimales a Romanos y Numeros LCD en Python


Como parte de mi aprendizaje de Python, estoy tomando mis viejos codigos de Ruby y convirtiendolos a Python...y creanme...no hay mejor manera de aprender -:)

El primer programa que tome fue Decimales a Romanos, el cual descubri que no estaba funcionando bien para numeros grandes -:( Luego de unos retoques con Python, esta listo para la accion -;)


Roman_Table = {1000: 'M', 900: 'CM', 500: 'D', 400: 'CD',
100: 'C', 90: 'XC', 50: 'L', 40: 'XL',
10: 'X', 9: 'IX', 5: 'V', 4: 'IV', 1: 'I'}

global result
keys = []

def reverse_numeric(x, y):
return y - x

def Roman_Number(number):
result = ""
keys = Roman_Table.keys()
keys = sorted(keys, cmp=reverse_numeric)
while number > 0:
for i in keys:
if number >= i:
result += str(Roman_Table.get(i, 0))
number -= i
break
return result

number = input("\nEnter a number: ")
result = Roman_Number(number)
print ("\n" + result)


El siguiente fue Numeros LCD el cual creanlo o no...logre bajar de las 160 lineas de codigo de Ruby, a solamente 35 lineas...impresionante, no?


global line1, line2, line3

line1 = ""
line2 = ""
line3 = ""

zero = {1: ' _ ', 2: '| | ', 3: '|_| '}
one = {1: ' ', 2: '| ', 3: '| '}
two = {1: ' _ ', 2: ' _| ', 3: '|_ '}
three = {1: '_ ', 2: '_| ', 3: '_| '}
four = {1: ' ', 2: '|_| ', 3: ' | '}
five = {1: ' _ ', 2: '|_ ', 3: ' _| '}
six = {1: ' _ ', 2: '|_ ', 3: '|_| '}
seven = {1: '_ ', 2: ' | ', 3: ' | '}
eight = {1: ' _ ', 2: '|_| ', 3: '|_| '}
nine = {1: ' _ ', 2: '|_| ', 3: ' _| '}

num_lines = {0: zero, 1: one, 2: two, 3: three, 4: four,
5: five, 6: six, 7: seven, 8: eight, 9: nine}

def Lines(number):
global line1, line2, line3
line1 += number.get(1, 0)
line2 += number.get(2, 0)
line3 += number.get(3, 0)

number = str(input("\nEnter a number: "))
length = len(number)
for i in range(0, length):
Lines(num_lines.get(int(number[i:i+1]), 0))

print ("\n")
print line1
print line2
print line3
print ("\n")


Siento mucha pensa por Ruby, porque aun lo amo mucho...pero Python esta haciendo mucho esfuerzo para convertirse en mi lenguaje script favorito -;)

Saludos,

Blag.

Wednesday, May 25, 2011

Tic-Tac-Toe - Un juego en Python


Python? Es un los mejores lenguajes de programacion? Si que lo es -:)
Asi es, comence a aprender Python hace un par de semanas...un mes quizas...asi que como empece?

Ya conocia Python por nombre desde hace mucho tiempo...haciendo cosas en Ruby sabia que Ruby hereda muchas cosas de Python (y de Perl tambien), pero nunca le di mucha importancia.

Un dia, me dije a mi mismo...tienes que aprender Python! se ve como un buen lenguaje...asi que me embarque en el viaje de aprender un nuevo lenguaje de programacion.
La mayoria de gente que usa Python dice "Python es facil de aprender, es sexy, te hace escribir codigo bonito"...y saben que? Es totalmente cierto -:)

Asi que, como parte de mi proceso de aprendizaje tome un Tic-Tac-Toe que hice en Ruby 5 anhos atras y lo converti a Python...creanlo o no...el codigo es mas robusto y logre reducir el codigo en 38 lineas menos...excelente, no?

Asi que aqui esta el codigo...y recuerden que soy un novato en Python...asi que no vengan con su "Oh, si fueras un verdadero Pythonista, harias las cosas asi"...porque no soy un Pythonista...por lo menos no todavia -;) Soy un ABAPista -:P


#TIC_TAC_TOE
#Made by Blag - 2011

game = False
coordenates = ""
player_won = ""
player_turn = "1"
line1 = ""
line2 = ""
line3 = ""
line4 = ""
line5 = ""

board_array = [" ", " ", " ", " ", " ", " ", " ", " ", " "]
played_moves = [" ", " ", " ", " ", " ", " ", " ", " ", " "]


def clean_lines():
line1 = " "
line2 = " "
line3 = " "
line4 = " "
line5 = " "


def initial_board():
clean_lines()
line1 = " | | "
line2 = "---+---+---"
line3 = " | | "
line4 = "---+---+---"
line5 = " | | "

print "\n"
print (line1)
print (line2)
print (line3)
print (line4)
print (line5)
print "\n"


def board(coordenates, player):
clean_lines()

if board_array[coordenates] == " ":
board_array[coordenates] = player
else:
cheat = True

Move_1 = board_array[0]
Move_2 = board_array[1]
Move_3 = board_array[2]
Move_4 = board_array[3]
Move_5 = board_array[4]
Move_6 = board_array[5]
Move_7 = board_array[6]
Move_8 = board_array[7]
Move_9 = board_array[8]

print "\n"
print " %s | %s | %s " % (Move_1, Move_2, Move_3)
print "---+---+---"
print " %s | %s | %s " % (Move_4, Move_5, Move_6)
print "---+---+--- "
print " %s | %s | %s " % (Move_7, Move_8, Move_9)
print "\n\n"


def print_winner(player):
print "Player ", player, " won\n\n"


def check_who_wins():
game = False
if (board_array[0] != " " and board_array[0] == board_array[1] and
board_array[1] == board_array[2]):
game = True
if board_array[0] == "*":
print_winner(1)
else:
print_winner(2)

if (board_array[3] != " " and board_array[3] == board_array[4] and
board_array[4] == board_array[5]):
game = True
if board_array[3] == "*":
print_winner(1)
else:
print_winner(2)

if (board_array[0] != " " and board_array[0] == board_array[3] and
board_array[3] == board_array[6]):
game = True
if board_array[0] == "*":
print_winner(1)
else:
print_winner(2)

if (board_array[1] != " " and board_array[1] == board_array[4] and
board_array[4] == board_array[7]):
game = True
if board_array[1] == "*":
print_winner(1)
else:
print_winner(2)

if (board_array[2] != " " and board_array[2] == board_array[5] and
board_array[5] == board_array[8]):
game = True

if board_array[2] == "*":
print_winner(1)
else:
print_winner(2)

if (board_array[0] != " " and board_array[0] == board_array[4] and
board_array[4] == board_array[8]):
game = True
if board_array[0] == "*":
print_winner(1)
else:
print_winner(2)

if (board_array[2] != " " and board_array[2] == board_array[4] and
board_array[4] == board_array[6]):
game = True
if board_array[2] == "*":
print_winner(1)
else:
print_winner(2)

wins = 0

for board in board_array:
if board != " ":
wins += 1

if wins == 9:
game = True
print "It's a Tie'.\n\n"

return game


def make_move(player_turn, game, coordenates):
index_coordenates = 0
if game == False:
cheat = False
if player_turn == "1":
coordenates = input("Player 1: ")
coordenates = coordenates
if coordenates <= 0 or coordenates > 9:
print "Please, only values from 1 to 9\n"
make_move(player_turn, game, coordenates)
for moves in played_moves:
if moves == coordenates:
cheat = True
if cheat == True:
cheat = False
print "That move was already made!\n"
make_move(player_turn, game, coordenates)
index_coordenates = coordenates - 1
played_moves[index_coordenates] = coordenates
player = "*"
board(index_coordenates, player)
game = check_who_wins()

if game == False:
cheat = False
player_turn = "2"
if player_turn == "2":
coordenates = input("Player 2: ")
coordenates = coordenates
if coordenates <= 0 or coordenates > 9:
print "Please, only values from 1 to 9\n"
make_move(player_turn, game, coordenates)

for moves in played_moves:
if moves == coordenates:
cheat = True

if cheat == True:
cheat = False
print "That move was already made!\n"
make_move(player_turn, game, coordenates)

index_coordenates = coordenates - 1
played_moves[index_coordenates] = coordenates
player = "O"
board(index_coordenates, player)
game = check_who_wins()
player_turn = "1"
return game

initial_board()


while(game == False):
game = make_move(player_turn, game, coordenates)



Saludos,

Blag.

Tuesday, November 30, 2010

Venta navideña!


Empezando desde hoy y por todo el mes de Diciembre...obten un 25% de descuento en todos mis libros!

Blag en Lulu.com

Aprovecha esta excelente oferta!

Saludos,

Blag.

Thursday, October 14, 2010

Como pasa el tiempo...


Recien ayer me di cuenta de que no posteo desde el anho pasado (Disculpen que no escriba bien, pero con teclado en ingles hay letras que no salen).

Para los que siguen mis otros blogs, o mis updates en Twitter, sabran que desde hace unos 5 meses estoy viviendo en Montreal, Canada con mi esposa y mi hija y estoy trabajando en Beyond Technologies.

La vida en Montreal es bastante tranquila...uno trabaja para vivir, y no vive para trabajar como en el Peru...aqui se respetan las 8 horas laborales y las horas extras son muy bien pagadas...claro, no todo es color de rosa, puesto que los impuestos son ridiculamente altos, pero en lineas generales, me encanta vivir aca -:)

Este anho, como comprenderan, no voy a ir al TechEd en Las Vegas, puesto que no puedo dejar a mi familia sola durante una semana en un pais nuevo...aunque si me escape al Inside Track Newton Square en Philadelphia, que duro 1 dia.

No puedo garantizar que voy a escribir muchos posts, puesto que ya lo he dicho antes, pero no siempre alcanza el tiempo y con mis otros blogs y proyectos personales, es un poco complicado...lo que si, voy a tratar de postear algo...jejeje...

Mi proximo blog, que estara listo yo asumo el fin de semana, sera como leer un archivo XML utilizando Expresiones Regulares...espero que les guste y es bueno estar de vuelta -;)

P.D: Gracias a todos mis lectores! Ya sobrepasamos las 100,000 visitas!!! Todo un mega logro para un humilde blog como este -:)

Saludos,

Blag.

Wednesday, December 23, 2009

Feliz Navidad 2009!


Se nos acaba el año 2009...es por eso que es tiempo de desearles una...

FELIZ NAVIDAD Y PRÓSPERO AÑO NUEVO!!!

Que este año 2010, sea excelente para todos nosotros, que podamos alcanzar todas nuestras metas y seguir siendo tan Geeks como podemos serlo -;)

Saludos,

Blag.