1. Wife: Can't believe we are returning to NYC
    2. Me: As someone tell us, if you want to return to New York you should walk across the Brooklyn Bridge but not to the end ... this time we'll do it.
     
  1. 00:46 29th Apr 2013

    Notes: 3571

    Reblogged from justmigrate

    image: Download

    justmigrate:

Hi,
I just moved my posts from Posterous! Do go though my blog for all the new posts.
Its easy to migrate try JustMigrate
3Crumbs app - Are you the local thrifter we all have been looking for? 

    justmigrate:

    Hi,

    I just moved my posts from Posterous! Do go though my blog for all the new posts.

    Its easy to migrate try JustMigrate

    3Crumbs app - Are you the local thrifter we all have been looking for? 

     
  2. Using notify-osd with Xmonad/Unity2D

    After install Xmonad with Unity2D I saw that notifications weren’t working as before with Ubuntu 11.04 with Xmoand/Gnome 2.30, I thought could be something related to Unity.

    Anyway, notifications were working awfully bad, most of the times the daemon got stucked and I’ve to say goodbye to them. Today I’ve discovered the Polly Twitter client, a pretty cool twitter client with support to columns, but I realised that I wasn’t getting notifications, so I put my hands to work on discover why. The reason was simple, my system was running notification-daemon instead of notify-osd (the new notification system from Ubuntu), after a few minutes of googling, I couldn’t find any intersting result, just a few bugs on launchpad and some xession files requiring as DefaultProvider-notifications, notify-osd. It wasn’t after a while that I read this bug report from the begining and finally get noty-osd working as default in my system.

    The problem was with this file /usr/share/dbus-1/services/org.freedesktop.Notifications.service, take a look at its content:

    $ cat /usr/share/dbus-1/services/org.freedesktop.Notifications.service
    [D-BUS Service] Name=org.freedesktop.Notifications Exec=/bin/sh -c 'if [ ! -x /usr/lib/notification-daemon/notification-daemon ] || [ "$GDMSESSION" = guest-restricted ] || [ "$GDMSESSION" = gnome-classic-guest-restricted ] [ "$GDMSESSION" = default -a "$(basename `readlink /etc/alternatives/x-session-manager`)" = gnome-session ] || [ "$GDMSESSION" = ubuntu ] || [ "$GDMSESSION" = ubuntu-2d ]; then exec /usr/lib/notify-osd/notify-osd; else exec /usr/lib/notification-daemon/notification-daemon; fi'

    Seems that execute notify-osd only if $GDMSESSION is some of the values above that check for equality, so, my next step was to see what have my $GDMSESSION,

    % echo $GDMSESSION 
    xmonad-unity-session

    Yay! xmonad-unity-session wasn’t checked above! That name is obtained from the xessions dir,

    % ls -1 /usr/share/xsessions 
    gnome-classic.desktop 
    gnome.desktop 
    gnome-fallback.desktop 
    gnome-shell.desktop 
    ubuntu-2d.desktop 
    ubuntu.desktop 
    xmonad.desktop 
    xmonad-unity-session.desktop 
    xsession.desktop 
    xterm.desktop

    So, I’ve added my $GDMSESSION value to /usr/share/dbus-1/services/org.freedesktop.Notifications.service,

    % cat /usr/share/dbus-1/services/org.freedesktop.Notifications.service
    [D-BUS Service] Name=org.freedesktop.Notifications Exec=/bin/sh -c 'if [ ! -x /usr/lib/notification-daemon/notification-daemon ] || [ "$GDMSESSION" = guest-restricted ] || [ "$GDMSESSION" = gnome-classic-guest-restricted ] [ "$GDMSESSION" = default -a "$(basename `readlink /etc/alternatives/x-session-manager`)" = gnome-session ] || [ "$GDMSESSION" = ubuntu ] || [ "$GDMSESSION" = xmonad-unity-session ] || [ "$GDMSESSION" = ubuntu-2d ]; then exec /usr/lib/notify-osd/notify-osd; else exec /usr/lib/notification-daemon/notification-daemon; fi'

    then, log out from the session and log in again, and the problem was fixed, notifications are working amazingly well!

     
  3. 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!


    DefinitionA good is public if the marginal production cost is lower than the marginal billing cost.


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

     
  4. 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.

     
  5. 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 booleana 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 :).

     
  6. 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.
     
  7. 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 … 

     
  8. 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).
     
  9. 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) :

    http://www.ladiaria.com.uy/?q=node/573

    Gracias a Alditus por la info.