martes, mayo 18, 2010

The Hacker's Code


"A hacker of the Old Code."
  • Hackers come and go, but a great hack is forever.
  • Public goods belong to the public.*
  • Software hoarding is evil. Software does the greatest good given to the greatest number.
  • Don't be evil.
  • Sourceless software sucks.
  • People have rights. Organizations live on sufferance.
  • Governments are organizations.
  • If it is wrong when citizens do it, it is wrong when governments do it.
  • Information wants to be free. Information deserves to be free.
  • Being legal doesn't make it right.
  • Being illegal doesn't make it wrong.
  • Subverting tyranny is the highest duty.
  • Trust your technolust!



Definition:
 A good is public if the marginal production cost is lower than the marginal billing cost.


Source : http://muq.org/~cynbe/hackers-code.html

martes, diciembre 29, 2009

ANTEL tercer mundista


Facebookeando hoy en la tarde, me tope con un post de un amigo a un articulo del diario El Pais. El articulo habla sobre la gran decadencia del ente y su autor es Carlos Maggi; que no es la primera vez que escribe sobre Antel. Esta vez, comenta sobre la terrible situación que experimentamos los usuarios por la pobre banda ancha que Antel brinda, y como el sindicato ha actuado con tanto poder para boicotear en diferentes ocasiones, propuestas de ampliación y mejora de los servicios.

Recomiendo su lectura.
UPDATE: Lamento haber no podido migrar los comentarios a blogger desde wordpress y posterous. Desde ya sepan disculpar.

martes, octubre 20, 2009

Python y programación funcional

La programación funcional es uno de los paradigmas que más me interesa dentro de los conocidos, me he divertido con lenguajes funcionales como Haskell, Erlang y un poquito de LISP. Pero dado que mi lenguaje preferido es Python, y además en el cual trabajo a diario, estuve divirtiéndome, buscando hacer las cosas lo más similar al estilo funcional. Y como era de esperar, Python me ha dado *casi* todo de lo que esperaba.

Veamos algunas formas de como Python se *acerca* a un mundo funcional:

Factorial


# utilizando lambdas y algunas cositas del paradigma imperativo
fact = lambda n: 1 if n <=0 else fact(n-1)*n

# algo un poquito más interesante
fact = lambda n: (1 and n <=0) or fact(n-1)*n

# utilizando reduce y lambdas
fact = lambda n: reduce(lambda x,y:x*y, xrange(1,n+1) or [1])

# pequeño cambio utilizando el modulo operator
import operator
fact = lambda n: reduce(operator.mul, xrange(1,n+1) or [1])


Generalización de la función boolean AND


# utilizando un iterable como argumento
g_and = lambda args: bool(args[0]) and (g_and(args[1:]) if args[1:] else True)

# utilizando los *args magic de python
gm_and = lambda *args: bool(args[0]) and (g_and(*args[1:]) if args[1:] else True)

>>> g_and([1,2,3])
True
>>> g_and([1,2,0])
False
>>> g_and([1,1,0,1])
False

>>> gm_and(True,True,True,False)
False
>>> gm_and(True,True,True,True)
True
>>> gm_and(False,False,False)
False

Listas por comprensión


>>> even = lambda n: n % 2
>>> evens = [n for n in range(10) if even(n)]

>>> words = ['Hello', 'Python', 'World']
>>> first_letter = [c[0] for c in words]


Otros demonios
Si bien son ejemplos muy básicos, y no intentan enseñar nada nuevo, la idea era mostrar que Python, es un lenguaje que no fue pensado para un paradigma determinado (como Smalltalk o Java), fue pensado como un lenguaje completo, fácil, simple, que una mucho de varios mundos, que se adhiera a la filosofia Unix, y sobretodo flexible.

No estoy diciendo tampoco, de que sea el lenguaje más adecuado para todo, simplemente, expreso mi satisfacción como programador al usar un lenguaje con todas estás características :).

martes, mayo 26, 2009

Reflexiones sobre Wolfram|Alpha

Hace poco más de una semana se lanzo Wolfram|Alpha, tildado como el Google Killer, o el Wikipedia Killer, el cual ha generado un movimiento bastante importante en algunos sectores de la red.

Wolfram|Alpha, según su About es,
... long-term goal is to make all systematic knowledge immediately computable and accessible to everyone ...
básicamente, es un sistema que intenta procesar mucha información, generar conocimiento a través de ella y luego dar respuestas. La empresa detrás de todo esto es Wolfram Research, del genio físico y empresario Stephen Wolfram. Este proyecto según Wolfram fue la culminación de un trabajo de mas de 20 años que esta plasmado en su libro A New Kind of Science, en el cual publica un largo y detallado "nuevo" enfoque sobre como se pueden describir modelos complejos con un conjunto de reglas simples.

Wolfram|Alpha es un proyecto distinto desde el comienzo. El lanzamiento fue transmitido en vivo por Justin.TV, esta implementado enteramente en Mathematica (si, el software creado por la misma empresa), se lanzo como un todo, tiene una apuesta muy fuerte a la visualización de la información y por último, da respuestas concretas a preguntas concretas.

Ahora bien, porque no es un Google Killer?, bueno creo que no tienen puntos en comparación, lo cual es muy difícil seguir tratando de contestar a esta pregunta; pero si podríamos identificar cuales fueron los motivos por los cuales se lo llamó así, es claro que uno de los principales fue para generar *movimiento en la red*.
Algunos otros además son que ambos organizan la información y la hacen accesible de una forma mucho más simple, ambos procesan enormes cantidades de datos, ...y? si creo algunas otras coincidencias deben haber, pero siguen siendo más las diferencias,
  • Google, es un buscador, Wolfram|Alpha no,
  • Wolfram|Alpha computa respuestas, y las muestra de una forma organizada y detallada, Google en cambio busca y muestra "todas" las ocurrencias,
  • Wolfram|Alpha es un conjunto enorme de información organizada y procesada, lista para hacer minería de datos. Google tiene enormes cantidades de información, realiza data mining sobre ella, pero divide la información por producto (Maps, Trends, etc.)
  • Google es Google, me cuesta imaginar un nuevo buscador que lo destrone...
Ahora, porque podría ser un Wikipedia Killer?. La Wikipedia es una de las fuentes de datos de Wolfram|Alpha, ya que ésta es uno de los más grandes repositorios de hechos/datos/etc. que existe en la actualidad. Esto me parece una razón suficiente para no llegar al nivel de "Killer", pero si, puede llegar a quitarle una tajada de la quota de usuarios de la red. Pero por que? Concretamente, muchos usuarios buscan información especifica y no les interesa navegar por todo el articulo, es acá, donde WA entra en acción. Wolfram|Apha fue diseñado para responder hechos concretos y visualizarlos de la forma más adecuada posible, la Wikipedia fue creada con el objetivo de ser una Enciclopedia Libre, o sea, un gran repositorio de información, libremente accesible y editable, utilzando un sistema de wiki para facil colaboración y navegación. Otra vez, estamos ante objetivos diferentes, uno responde preguntas dando información precisa y escueta, el otro muestra articulos completos sobre temas especificos.

En resumen, no creo que Wolfram|Alpha sea un *algo* Killer, sino que es una nueva herramienta que tenemos disponible, gratis y con un gran poder de computo. Nuevamente, Internet nos muestra el gran poder que día a día se va generando.

P.D:
Datos curiosos:
  • según netcraft.com, Wolfram|Alpha corre sobre Linux.
  • según Server Spy, los Frontend Web Server son Apache, los que responden las consultas son Apache-Coyote/1.1
  • según su blog, tiene alrededor de 5 millones de lineas de código en Mathematica, que equivaldrían al doble en otros lenguajes.

domingo, diciembre 28, 2008

Internet, anarquía perfecta

Así se llama el articulo publicado hoy por el diario el país que escribe Carlos Maggi
http://www.elpais.com.uy/08/12/28/predit_389816.asp
Me parecen brillantes la reflexiones que hace sobre Internet y sobre como este fenómeno es una anarquía casi (en mi opinión) perfecta. Si bien, a pesar de, escuchar o leer noticias, como posibles medidas de censura en países como Inglaterra, o la censura existente que hay en china, Internet sigue siendo un lugar en el cual somos los mismos usuarios los que aceptamos o generamos las condiciones para una mejor Internet. Internet hoy más que nunca es uno de los medios que más puede democratizar la cultura, y hacer llegar información donde antes no llegaba. Cuando digo esto no pienso en otra cosa que no sea el Plan Ceibal, viendo a los niños en mi Pueblo natal, sentados en la vereda navegando por Internet. 
El nota, Maggi, cita fragmentos de los programas de algunos de los Partidos Piratas del mundo, observando que todos ellos buscan lo mismo, hacer que la información sea libre y accesible a todos, que existan los medios para poder llegar a ellos de una forma más simple (como el P2P), poder navegar anonimamente y fortalecer la privacidad de los usuarios en Internet. Para mi son tan coherentes estos pedidos. 
Yo también votaría a los Piratas :D.

P.D: Que tanto poder ejercen los países, las instituciones y las empresas sobre Internet? Es posible que Internet sea perfectamente anárquico? Yo dije "casi", pero como será Internet en 10 años? Realmente hemos evolucionado como sociedad para poder ser mas "abiertos", mas "piratas" ?... (pienso en este post de vampiroz.. ) ... quien sabe ... 

domingo, julio 20, 2008

Yandex, su arquitectura y Django.

Dado mi gran interés por los buscadores (y todo lo que tenga que ver con la búsqueda / organización / etc de grandes cantidades de datos) y también con su arquitectura, como funcionan, que utilizan, ... me encontré con la de Yandex. Yandex es el Google Ruso.

Leyendo la sección Real Life Architectures del sitio highscalability, hay una breve descripción de la arquitectura de este. Desde que supe de su existencia había estado buscando información, pero lo único que sabía de él era que:
  • su cuota de mercado en Rusia superaba por lejos a Google,
  • la empresa no era muy grande, pero con muchos ingenieros (al mejor estilo Google) y matemáticos (creo que abundan por los lares de Rusia).
  • y técnicamente, lo poco que encontré, usaban Unix y mucho Perl, no más.
Bien, ahora lo que encontré el sitio de highscalability fue un poco más interesante:
  • Several data centers around Russia.
  • Two-layer architecture.
  • The database is split in pieces and when a search is requested, it pulls the bits from the different database servers and brings it together for the user.
  • Languages used: c++, perl, some java.
  • FreeBSD is used as their server OS
Muy Interesante! En la sección de comentarios hay más información pero muchos están en ruso (todavía no lo hablo / leo =( ).

Pero algo que me llamo un poco más la atención fue que desde el año pasado están comenzando a utilizar Django, para crear una red social (al mejor estilo facebook / stambleupon ). El siguiente link habla sobre temas muy interesantes a la hora de escalar Django con MySql.

http://softwaremaniacs.org/blog/2008/02/24/why-offline-crashed-en/

Lo que más me alegra de toda esta investigación, es la enorme expansión de las tecnologías open source, que desde hace ya unos cuantos años vienen en un elevado crecimiento, dentro de los sistemas más Grandes del mundo! Y sobre todo de Python (mi lenguaje preferido).

sábado, julio 05, 2008

Google, la web y otras reflexiones

Estuve leyendo un articulo de La Diaria sobre Google, su poder, privacidad, y más especificamente sobre la Web en general, su evolución, como nos cambió nuestra forma de interactuar, de leer, de comunicarnos, de expresarnos y de pensar.

Les dejo el vinculo al pdf de La diaria, es en la página 7 del mismo (y en la 4 del pdf) :

miércoles, mayo 28, 2008

Zero-sum games and others daemons ...

Searching for Min-max algorithm with alpha beta pruning, I take a look at Zero-sum games article from the wikipedia (I have to write a GoMoku implentation in Prolog). Reading the article in Wikpiedia I found this :
The more complex societies get and the more complex the networks of interdependence within and beyond community and national borders get, the more people are forced in their own interests to find non-zero-sum solutions. That is, win–win solutions instead of win–lose solutions.... Because we find as our interdependence increases that, on the whole, we do better when other people do better as well — so we have to find ways that we can all win, we have to accommodate each other....

Bill Clinton, Wired interview, December 2000 .[1]
Really Interesting !!! I'm totally agree! If we want a better society, we have to do things thiniking in the win-win schema !! If others are better than me, I want to be best!
Our society and our latin american culture must learn a lot to be better! We have to think in the future, not more in the past ! For centuries, we are waiting for a thing called "american dream", or "latin american dream", and for a new revolution, or... for a new lider ! I don't know, we have to be more smart and collaborative with each others.
IMHO, the only way to be better,
... is learn, learn from others that now are the best !
... is think, think in the future!
... is work, work harder to find the way!

martes, mayo 06, 2008

.. y no, no quiere!

Luego de intentar con 2 iso de OpenSolaris, este no quiere arrancar!
Las pruebas:
  • 2 intentos en un Athlon XP 1800+ con 256 MB de RAM (entiendo que pueda ser poca, pero ... Linux arranca, *BSD arranca, Indiana Preview 1 tambien!):
    Primero, con una ISO me da "read error on disk". Supuse que era un problema de la grabación. Me baje nuevamente la ISO, y la grabe, nuevamente!
    Segundo intento, con la ISO recien bajada y fresquita, carga GRUB (lo hacia también la anterior), pero luego de escribir "Solaris ... snv_32", se muere!
  • Otro intento, con QEMU desde Windows. Con el qemu de 32 bit, no quizo saber de nada. Intente correro con qemu-system-x86_64 bit. VOILA!!!
    Comenzo todo bien, me pidio idioma del teclado, idioma de la DIST, perfecto, pero no arranco X,.............. mmmmmmmmmmm =(.
    OK, algo es algo.
Despúes de todo esto.. me queda probarlo en el notebook, con la segunda ISO recien bajada y ver que sucede!

Entiendo que este en una etapa de desarrollo muy temprana, pero recuerdo que con Linux hace ya unos cuantos años, en mi 586, con un poco de dolor y sufrimiento, todo arrancaba, sin mayores problemas...

En unos días tendré más resultados...... espero!!

lunes, mayo 05, 2008

OpenSolaris 2008.5

Acaba de salir OpenSolaris 2008.5, que es la primera release del Proyecto Indiana. Los elementos destacádos de este proyecto son:
  • IPS (Image Packing System) : El sistema de gestion de paquete. Similar apt-get.
  • ZFS (Zeta FileSystem) : El último filesystem desarrollado por Sun para Solaris.
  • Dtrace : Potente sistema de trazeo de system calls, debbuging y una infinita cantidad de otras utilidades.
Estas son algunas de las características más destacádas. La idea central de este proyecto es ofrecer un sistema Desktop / Server / Developer al mejor estilo Ubuntu, pero con todos los Chiches Solaris.

En este momento estoy bajando la imagen iso, en cuanto tenga más datos los posteo.

Web para descarga y documentación : http://www.opensolaris.com