Translate

lunes, 1 de octubre de 2012

Jenkins para Google App Engine



"Integración continua en la nube para aplicaciones Java y Python" Esta es la premisa del nuevo servicio de  CloudBees, básicamente lo que proveen es un Jenkins en la nube para nuestras aplicaciones app engine.

Desarrollado por Jenkins y más de 600 plugins de la comunidad, CloudBees ofrece el servicio se  integración continua en la nube para ayudar a construir y entregar rápidamente software de calidad.

Abra que probarlo dejo el link: https://appengine.cloudbees.com/

BackTrack, el Linux para los chicos malos


BackTrack es una distro Linux para la auditoria de seguridad y relacionada con la seguridad informática en general. Es un Linux con muchas herramientas para auditar la seguridad de tus aplicaciones, tu red, etc.

 Fue incluida en el puesto 7 de la famosa lista "Top 100 Network Security Tools" de 2006.

Dejo un video:


sábado, 29 de septiembre de 2012

Lazy evaluation, la ventaja de los perezosos

Lazy evaluation o evaluación perezosa permite que un bloque de código sea evaluado luego, esto nos permite realizar código más performante en ciertas situaciones. Vamos con un ejemplo, supongamos que tengo la función multiplicación

mult(a, b) = a * a

Si llamara a esta función de la forma mult(8, 5+2) se ejecutaría así:

mult(8, 5+2)
mult(8,7)
8*8
64

Pero si ejecutamos el código de forma perezosa
mult(8, 5+2)
8 * 8
64

En este caso la ejecución perezosa fue más eficiente que la normal.

Para poner otro ejemplo si tengo la función loop

loop(x) = loop(x)

Esta función nunca termina, veamos que pasa si ejecutamos mult(2, loop(2))

mult(2, loop(2))
mult(2, loop(2))
mult(2, loop(2))
mult(2, loop(2))
... hasta el infinito y más allá...

Pero si ejecutamos de forma perezosa

mult(2, loop(2))
2 * 2
4

Termina y nos da el resultado.

La evaluación perezosa viene del paradigma funcional, es una característica de Haskell y también de Scala. Dándole gran potencia al lenguaje.  

Dejo link:
http://en.wikipedia.org/wiki/Lazy_evaluation

miércoles, 26 de septiembre de 2012

Como nos ven desarrolladores de otros lenguajes y como los vemos nosotros?


Citas celebres del mundo informático.

EL sitio variable not found publico citas sobre el mundo informático; les dejo las que más me gustaron:


“El código nunca miente, los comentarios sí”
-- Ron Jeffries


“El uso adecuado de los comentarios es compensar nuestra incapacidad para expresarnos mediante el código”
-- Robert C. Martin

“La documentación es como el sexo; cuando es bueno, es muy, muy bueno, y cuando es malo, es mejor que nada”
-- Dick Brandon


“Hasta ahora, nuestro ordenador nunca ha tenido un error no detectado”
-- Weisert


“No automatices un flujo de trabajo indisciplinado. El ordenador no va a resolver lo que los directivos del cliente no pueden”
-- Larry Bernstein


“Simplicidad: el arte esencial de maximizar la cantidad de trabajo no realizado”
-- Manifiesto Ágil

“El reto principal de los científicos informáticos es no confundirse con la complejidad de su propia creación”
-- E. W. Dijkstra


“La principal causa de complejidad en el software es que los fabricantes implementan casi todas las características que solicitan los usuarios”
-- Niklaus Wirth


“Una mala gestión puede incrementar los costes del software más rápidamente que cualquier otro factor”
-- Barry Boehm


“Una organización que trata a sus programadores como idiotas conseguirá pronto tener programadores dispuestos y capaces para comportarse como sólo como idiotas”
-- Bjarne Stroustrup


“Gran parte de la excitación que nos produce nuestro trabajo se debe a que realmente no sabemos lo que estamos haciendo”
-- E. Dijkstra

“Los programadores de verdad pueden escribir código ensamblador en cualquier lenguaje”
-- Larry Wall


“Si haces una afirmación, un programador dice ‘Sí, pero…’, mientras que un diseñador dice ‘Sí, y…’”
-- André Bensoussan


“La industria informática es la única que se mueve por la moda más que la ropa de señora”
-- Larry Ellison


“Nada es más permanente que una solución temporal”
-- Primera ley de Thomas


“Si no he podido ver tan lejos como otros es porque tenía gigantes subidos en mis hombros”
-- Hal Abelson


“Sólo hay una cosa más dolorosa que aprender de la experiencia, que es no aprender de la experiencia”
-- Archibald McLeish


“Lo peor de leer citas en Internet es que no puedes estar cien por cien seguro de su autoría”
-- Abraham Lincoln

Dejo link:
http://www.variablenotfound.com/2012/09/101-nuevas-citas-celebres-del-mundo-de.html

lunes, 24 de septiembre de 2012

Curso gratuito de MongoDB


La gente de 10gen nos ofrecen un curso gratuito de MongoDB. El curso se divide en 2 perfiles uno es desarrollador "MongoDB for Developers" y el otro para DBAs "MongoDB for DBAs". MongoDB esta ganando cada vez más un espacio en mercado, estos cursos facilitan su adopción y nos ahorran tiempo.

Dejo link:
http://education.10gen.com/

viernes, 21 de septiembre de 2012

Nuevo curso en codeschool llamado "Assembling Sass"



Me he enrolado en el nuevo curso de codeschool es sobre Sass; para los que no saben Sass (Syntactically Awesome Stylesheets)  es un lenguaje de hoja de estilo inicialmente diseñado por Hampton Catlin y el desarrollador Nathan Weizenbaum.

Sass es un metalenguaje de  Cascading Style Sheets (CSS). Es un lenguaje de scripting que se interpreta en CSS. lo que permite generar CSS dinámicos, facilitando la mantenibilidad y dinamismo de los CSS.

Sass es una forma diferente de trabajar con las CSS, que nos permite mantener un código limpio y fácil de leer.

Dejo los links:

Por que es bueno que aprenda programación funcional??


Los orígenes de la programación funcional pueden rastrearse al matemático Alonzo Church, que trabajaba en la Universidad de Princeton, y, al igual que otros matemáticos de allí, estaba interesado
en la matemática abstracta, particularmente en el poder computacional de ciertas máquinas abstractas. Las preguntas que se hacía eran por ejemplo: si dispusiésemos de máquinas de un ilimitado poder de cómputo, ¿qué tipos de problemas se podrían solucionar?, o ¿se pueden resolver todos los problemas?

Para contestar este tipo de preguntas, Church desarrolló un lenguaje abstracto, denominado Cálculo Lambda, que el cual sólo realizaba evaluación de expresiones usando funciones como mecanismo de cómputo. Este lenguaje abstracto no tenía en cuenta limitaciones concretas de implementación de ningún tipo.

La programación funcional es un paradigma de programación declarativa basado en la utilización de funciones aritméticas que no maneja datos mutables o de estado. Enfatiza la aplicación de funciones, en contraste con el estilo de programación imperativa, que enfatiza los cambios de estado. La programación funcional tiene sus raíces en el cálculo lambda.

La historia estuvo muy linda, pero que agrega a mi vida? Existen muchos conceptos que es bueno saber a la hora de abordar un problema; además estos conceptos no se encuentran solo en lenguajes funcionales.

En la programación funcional, todo es una función, no existen variables, if, while o for o otra estructura de control de flujo de ejecución; solo funciones. Veamos  características de los lenguajes funcionales:

  • Transparencia referencial : Como se apoya en el concepto de función matemática, una función siempre va a devolver el mismo resultado para los mismos parámetros, es decir el resultado de una función no se va modificar a lo largo de la ejecución por algún estado del programa.
  • Evaluación perezosa (Lazy evaluation), permite decirle a una función que se ejecute en otro momento, puedo pasar la una función con sus parámetros por parametro a otra función y cuando la otra función necesite realmente ese valor ejecutar la función.  
  • Closures, es la capacidad de guardar en una variable una función para luego ejecutarla; esto permite que sea más fácil. 
  • Etc...

Hoy en día existen diversos lenguajes funcionales. Se podría considerar como uno de los primeros lenguajes funcionales al LISP, que actualmente sigue en uso, sobre todo en áreas de la inteligencia artificial. También un pionero de este paradigma es APL desarrollado en los años 60 (Iverson 1962). El linaje funcional se enriqueció en los años 70, con el aporte de Robin Milner de la Universidad de Edimburgo al crear el lenguaje ML. Éste se subdividió posteriormente en varios dialectos tales como Objective Caml y Standard ML. A fines de los años 80, a partir de un comité, se creó el lenguaje Haskell, en un intento de reunir varias ideas dispersas en los diferentes lenguajes funcionales (un intento de estandarizar el paradigma). Este año Microsoft Research ha incluido un nuevo lenguaje (funcional), denominado F#, a su plataforma .NET.

Si queres aprender Haskel acrodate de este post:

Y si queres probar Haskell:

miércoles, 19 de septiembre de 2012

No hay nada más fecundo que la ignorancia consciente de sí misma.


Dice José Ortega y Gasset:  No hay nada más fecundo que la ignorancia consciente de sí misma.
Y esto es una realidad, dado que en especial no somos cocientes de nuestra ignorancia hasta que adquirimos conocimiento.

Por lo tanto el conocimiento es esa luz que nos muestra las cosas como son y nos hace ver los espacios que había oscuridad. La luz esta incapacitada para mostrarnos todo lo que no sabemos pero si al tener mas cuartos iluminados podemos calcular un poco mejor los espacios en oscuras o poco iluminados.

En cambio la ignorancia no nos muestra nada y desde la ignorancia no podemos ni siquiera medirla. A mi me paso que cuando estaba en tercer año de la facultad pensé, ya se base de datos y un lenguaje de programación; no debe quedar mucho más que aprender y desde esos días no hago más que aprender.

Lo paradójico es que cuanto más sabemos, más somos cocientes de nuestra ignorancia; como el agua salada del mar que cuanto más se toma más sed da. Pero la consciencia de la ignorancia produce más curiosidad; y con un poco de voluntad más conocimiento. Esto es un motor imparable si se lo sabe alimentar.

 En fin cuando se realiza una actividad y es necesario estimar, es necesario reconocer nuestra ignorancia y cuantificarla lo mejor posible.

domingo, 16 de septiembre de 2012

Convertir Java a Object-C con J2ObjC


Los productos de Applet no me apasionan mucho pero es innegable que están tomando cada vez más relevancia. Por lo tanto cuando es necesario hacer aplicaciones nativas a IOS, podemos tomar nuestra aplicación java y llevarla a Object-C con J2ObjC.

J2ObjC es un producto open source de google. Según la wiki J2ObjC, el proyecto fue iniciado por la frustración frente a las aplicaciones de Android que tuvieron que ser reescritos para iOS desde cero. J2ObjC resuelve parte del problema de ser capaz de convertir la lógica de negocio de código Java en su correspondiente object-C.

La herramienta no genera código iOS de interfaz de usuario, ya que sus autores creen que "La unica manera de tenes código eficiente para IOS es escribirlo"  y debido a la complejidad que se ocupan de dicho código.


Dejo links:
http://code.google.com/p/j2objc/
http://google-opensource.blogspot.com.ar/2012/09/j2objc-java-to-ios-objective-c.html

sábado, 15 de septiembre de 2012

The Best Cross Platform Java Tool For Mobile App Developers!

Codename One  promete ser el mejor framework para desarrollar aplicaciones java para todas las plataformas de celulares y tablets, de forma fácil y desplegando nuestras aplicaciones en la nube.

Se puede escribir aplicaciones One en 5 pasos:

  • Bajar el plugin
  • Escribir código en Java
  • Diseñar la aplicación con la herramienta gráfica.
  • Testear la aplicación con el simulador de Codename One
  • Generar aplicaciones nativas



Dejo video:


Dejo link:
http://www.codenameone.com/

miércoles, 12 de septiembre de 2012

martes, 11 de septiembre de 2012

La Universidad de Berkeley ofrece 14 cursos gratuitos en línea sobre tecnología

Otra buena al parecer la Universidad de Berkeley ofrece cursos gratuitos en línea sobre tecnología. Hay cursos para todos los gustos al parecer estan buenos, vamos a tener que tomar alguno.



Dejo el link:
http://geeksroom.com/2012/09/la-universidad-de-berkeley-ofrece-14-cursos-gratuitos-en-linea/66218


domingo, 9 de septiembre de 2012

Apache Wicket 6.0

Una nueva versión de Apache wicket se ha liberado las novedades son que ahora toda la librería ajax se basa en JQuery lo que va a hacer más fácil de usar y más flexible. Otra mejora es que ahora esta empaquetado de tal forma que hace muy fácil la integración con OSGI.

La verdad que me parece excelente la noticia y me parecen cambios esperados por la comunidad. Nunca me gusto el manejo de ajax de wiket, me parece poco flexible; con esta cambio se gano un seguidor más.

Dejo links:
http://wicket.apache.org/
http://wicket.apache.org/2012/09/05/wicket-6.0.0-released.html

sábado, 8 de septiembre de 2012

Cloud 9 una IDE en la nube


Cloud 9 es una IDE online para Javascript y Node.js además de HTML, CSS, PHP, Java, Ruby y  otros 23 lenguajes. Lo que permite es programar en cualquier lugar donde haya internet y acceder a servicios en la nube más fácilmente. Es una interesante propuesta, existe una versión free y otra de pago que vale 12 dolares al mes. 

Dejo un video:



Dejo link:
https://c9.io/