jueves, 23 de diciembre de 2010

La magia existe

La magia existe. Los magos existen.

Personas con poder para crear mundos enteros y manipular sus leyes para volar, hacerse invisibles, o cualquier cosa que sus mentes sean capaces de imaginar. Magia que construye, conoce, transforma o destruye.
Magos que dedican sus vidas ocultas a perfeccionar sus habilidades mágicas, con largas horas de estudios y experimentos impensables. Que forman cofradías en las cuales comparten conocimientos, técnicas y descubrimientos. Cofradías donde los aprendices reciben el arte de manos de gurúes poderosos, y donde muchos combinan sus poderes para lograr cosas aún más increíbles.
Tan increíbles que su magia ya está presente detrás de la vida cotidiana del mundo. Pero son solo los magos quienes conocen y comprenden su verdadero poder y lo continúan aprovechando para transformar la realidad a gusto, a veces para bien y otras no tanto. Al tiempo que para el resto, son solo personas con gustos extraños.
No son quienes conocen solo un poco de magia, y esta se convierte en un simple medio para algún objetivo temporal. Los verdaderos magos descubren el placer en el solo hecho de conocer la magia, experimentar, descubrir. Crean y conjuran nuevos hechizos solo para llevar su poder al límite, y así cultivar su habilidad, expandir su entendimiento.

La magia existe. Los magos existen. La gente los suele llamar "programadores".

jueves, 2 de diciembre de 2010

Charlas en las Jornadas de Software Libre de Junín

Hace poco tuve la suerte de poder ir a las Jornadas de Software Libre que se organizan en Junín. El evento estuvo muy bueno, me sorprendió el nivel de la organización, y aprendí un montón en las charlas. Y de paso me invitaron a dar una charla de Django fuera de cronograma :)

Por suerte filmaron todas las charlas (algo que debería ser costumbre en este tipo de eventos), y hace unos días las subieron ya a blip.tv. Algunas de las charlas también se habían dado en PyConAr 2010, así que pueden aprovechar quienes se perdieron ese evento :)

Pueden ver todas las charlas aquí: http://unnoba.blip.tv/posts?view=archive&nsfw=dc

(y mi charla es esta)

lunes, 18 de octubre de 2010

PyConAr 2010

Y pasó la PyConAr 2010!


La verdad que fue algo muy, muy bueno, desde varios puntos de vista:



Por el lado técnico fué genial aprender muchas cosas de parte de personas que tienen tantos conocimientos. El capital intelectual desplegado en la conferencia fue impresionante.
Desde profundizar en conceptos avanzados como los expuestos en la charla sobre tipado de Daniel Moisset, hasta comprender cosas que debería haber aprendido bastante antes, como unicode (Facu Batista).
La lista de cosas aprendidas sigue con docutils, empaquetado para windows, pymaemo, pygtk, los módulos de roberto, y unas cuantas más.
Y también me gustó y sirvió poder aportar mi pequeño grano de arena, con la charla de Django que espero haya salido bien :)

La verdad que con solo eso la conferencia ya valía la pena.



Pero también está el lado "comunitario", y en eso se sintió muy bien ser parte de una movida fuerte como es la de PyAr.
Esta bueno ver tanta gente comprometida por la difusión y evolución de una tecnología, al punto de regalar horas de trabajo, viajar desde lejos, compartir lo que conocen e incluso aportar económicamente a la causa, convencidos de que lo que tienen es algo que vale la pena difundir.
Viniendo de un pasado no tan lejano de estar metido en otras tecnologías (Microsoft, .Net, etc), todavía me sorprende lo que se logra con una comunidad sin estructuras jerárquicas, títulos oficiales, ni empresas que la banquen.



Y finalmente esta lo humano, el contacto de uno a uno.
Lo compartido en los momentos más informales, como el asado o la salida del sábado, es impagable. Conversaciones y debates con gente que además de ser profesionales tienen calidad humana. Gente que no tiene problemas en compartir una solución a un problema, conocimientos, consejos, junto con bromas, buena onda, y una cerveza de por medio :) (aunque yo no tome, igual me parece genial, jaja).



Así que gracias a todos los que de alguna manera ayudaron a hacer esta PyCon.
Espero ya al próximo evento, y ahora de vuelta al trajín diario, que por suerte este tiempo tiene bastante de Python en el medio (en la facu, en el trabajo fijo, y en el trabajo freelance, weeee! tengo suerte).

lunes, 13 de septiembre de 2010

Netbooks, "bajo rendimiento"?

Hoy pensando me di cuenta de algo que me sorprendió un poco.

Para ubicarse:
Máquina: una netbook HP (modelo mini 1020) con un micro de 1.6 ghz, 2 gb de ram. Ni hablar que no tiene aceleradora de video ni nada por el estilo.
Sistema operativo: Ubuntu netbook edition 10.10, usando el escritorio de ubuntu normal, no el de netbook, con compiz fusion a full (muchos efectos activados).

Ahora los números:
Uso del procesador mientras...
...giro los escritorios en el cubo en 3D, con las ventanas también en 3D flotando sobre el cubo: 10%
...paso entre ventanas abiertas al estilo "albumes", en 3D: 10%
...abro GIMP (programa de edición de imágenes, estilo Photoshop): 50%
...instalo actualizaciones: 50%

¿Cómo puede ser que sobre tanta máquina si es una netbook, que en teoría es una máquina de "bajo rendimiento"?
De hecho uso esa máquina para casi todo. Para lo único que no puedo usarla es para juegos (por la falta de aceleradora).

martes, 20 de julio de 2010

Mi configuracion de Vim

Vim es un editor de texto muy bueno. Es algo bastante diferente a lo normal, para quienes vienen de editores de código gráficos, sea el block de notas, Eclipse, o cualquier otro.
Se puede usar por línea de comandos y todas las cosas normalmente se hacen desde el teclado. Tiene un enfoque bien simplista, pero es super configurable y personalizable, hay cientos de plugins útiles.

En el PyCamp 2010 me lo mostraron por primera vez (algo había visto antes, pero no en profundidad), y en poco tiempo se convirtió en mi editor de cabecera para cualquier lenguaje o tipo de archivo de texto.
Con el tiempo aprendí a meterle mano y adaptarlo a mis gustos, y además de las 4 máquinas donde lo uso (incluyendo el celular), también algunos amigos estaban usando mi configuración. Así que me decidí a documentarla bien y subirla a algún lado, para ordenarla y para que si a otros les sirve también puedan aprovecharla.
Incluye cosas interesantes como un muy buen debugger para Python, autocompletado mejorado, navegador de clases, etc.

Info, descarga y demás yerbas aquí:  fisa-vim-config

viernes, 16 de julio de 2010

Programar programas que programan

Lisp es un lenguaje bastante particular (lleno de paréntesis, jeje). Entre las características que tiene hay una que hasta donde conozco, no poseen otros lenguajes: permite modificar la sintaxis del lenguaje mismo.
Explicándolo sin entrar en demasiado detalle, uno puede escribir macros (que no son nada ni cercano a las macros de los otros lenguajes, solo el nombre tienen parecido), que son "programas que escriben programas". Lisp utilizará esas macros que escribamos para "leer" el código en la sintaxis que inventemos, y a partir de él "escribirá" código (programas) que finalmente serán los que se ejecuten.

Algo así:

  1. inventamos una sintaxis
  2. programamos una macro, que es una función que recibe código en esa sintaxis inventada, y genera código en la sintáxis normal
  3. hacemos programas usando nuestra sintaxis inventada
  4. lisp convierte nuestros programas con sintaxis inventada, en programas válidos, usando nuestra macro
  5. lisp finalmente ejecuta los programas que se crearon en el paso anterior


Cosas interesantes en eso:

  • La macro es una función, pero recibe código como parámetro! En Lisp, la diferencia entre código y datos es bastante borrosa, uno puede manejar código como si fuesen datos fácilmente. El código son en realidad listas, y podemos transformarlas como a cualquier lista normal.
  • Programamos programas que programan! O sea, hacemos un programa que es capaz de crear código y después ejecutar el código que creó.
  • Si trabajamos en una empresa donde nos pagan por cada línea que programamos... a quien le pagan las líneas que nuestros programas programan? a nuestros programas?? :)

Con un poco de idea nomás, uno ya puede hasta crear macros que permitan escribir código lisp invertido, y que se termine ejecutando como si estuviese bien escrito, jeje.

miércoles, 7 de julio de 2010

Aplicaciones en Google Chrome

Gracias a Tavo Tell me entere de la buena noticia: ya se pueden probar las apps en Chrome!
Es el esquema de aplicaciones que se va a usar en Chrome OS.

Aquí el tutorial sobre como activarlas e instalar las tres primeras: gmail, gdocs y gcalendar.
http://bit.ly/aYhdTq

En la web encontré alguien que armó una app para greader:
http://bit.ly/bK90vp

Y yo armé una app para twitter:
http://bit.ly/bgKFUf

(un detalle: si quieren bajar las aplicaciones y chrome les da un error de como deben ser servidas, o solo se les baja y no saben como instalarlas, entonces guarden el archivo, después cambien la extensión del archivo a zip, descompriman en una carpeta, e instalen desde la carpeta como instalaron las tres primeras)

martes, 29 de junio de 2010

Consola bpython

Para los que no la conocen, bpython es una consola de python bastante interesante, con autocompletado, integración con servicios como pastebin, y otras cosas.

Pero no me gustaban los colores que trae por defecto, jeje, así que me arme mi theme estilo vim:



El archivo de tema es el siguiente:

[syntax]
keyword = y
name = k
comment = b
string = r
error = r
number = r
operator = k
punctuation = k
token = k
paren = k

[interface]
background = d
output = k
main = k
prompt = k
prompt_more = k

domingo, 13 de junio de 2010

viernes, 21 de mayo de 2010

domingo, 9 de mayo de 2010

PyDay Rafaela 2010

Qué bueno que estuvo el PyDay Rafaela 2010!

Las charlas salieron muy buenas, y asistió una cantidad de gente bastante alta (fuimos unos 92 en total). Agradezco mucho a la gente que viajó desde otros lugares del país para venir a dar las charlas, y a los que participaron o ayudaron en la organización. Todos se pasaron, y permitieron que este evento se haga realidad dando un paso muy importante para la difusión de Python en nuestra zona. Gracias!!!

Por mi parte, tuve la suerte de poder dar una charla de Django. En estos días estamos organizando cómo subir el material y los videos de las charlas. Apenas tengamos las cosas subidas, posteo avisando.

Mientras tanto dejo una foto robada del blog de Juanjo :)

domingo, 2 de mayo de 2010

PyDay Rafaela 2010

El 8 de mayo en la UCSE de Rafaela, hacemos un PyDay!

Es un evento donde se darán charlas sobre el lenguaje de programación Python. La entrada es gratuita, y quienes deseen participar pueden ya registrarse en el sitio del evento.
Para información y registración, el sitio es: http://www.pyday.com.ar/rafaela2010

Python es un lenguaje de programación poderoso y fácil de aprender. Cuenta con estructuras de datos eficientes y de alto nivel y un enfoque simple pero efectivo a la programación orientada a objetos. La elegante sintaxis de Python y su tipado dinámico, junto con su naturaleza interpretada, hacen de éste un lenguaje ideal para scripting y desarrollo rápido de aplicaciones en diversas áreas y sobre la mayoría de las plataformas.

sábado, 27 de marzo de 2010

El más juego más grande del más mundo!

Para quienes siempre quisieron participar en el desarrollo de un juego, esta es su oportunidad, y ni siquiera necesitan saber programar! :)
Gente de PyAr (Python Argentina) va a participar de la PyWeek, una semana de competencia en la que el objetivo es desarrollar un juego. Pero lo interesante es que van a permitir que cualquier persona pueda aportar contenido al juego, diseñando tus propios mini-juegos dentro de él.
Para enterarse de más y participar, entren a:

jueves, 25 de marzo de 2010

La prensa en China

Cómo la mayoría sabrá, Google cerró su sitio de China (www.google.cn) por no estar de acuerdo con la censura que el gobierno de ese país le obligaba a tener. El gobierno habló públicamente sobre la decisión, pero también envió las siguientes instrucciones a todos los medios de prensa del país, acerca de cómo deben informar sobre el asunto.
Después de leerlas, siento pena por la población de China. Es una dictadura peor de lo que pensaba...

(sacado del Washington Post, lo traduje rápido para que lo puedan leer quienes no sepan inglés)

A todos los editores en jefe y administradores:
Google ha oficialmente anunciado su retirada del mercado de China. Este es un incidente de alto impacto. Ha desatado discusiones de los usuarios de internet que no están limitadas al ámbito comercial. Por ende por favor presten estricta atención a los siguientes requerimientos para el contenido durante este período:

A. Secciones de noticias:

1. Solo utilicen el contenido del sitio web del Gobierno Central; no utilicen contenido de otras fuentes.

2. Al hacer re-posting no deben cambiar el título. (n. del t.: re-posting = postear el contenido en otro sitio)

3. Las recomendaciones de lectura deben apuntar al sitio principal de contenido del Gobierno Central.

4. No produzcan páginas de tópico relevante; no creen sesiones de discusión; no lleven a cabo reportes de investigaciones relacionadas.

5. Programas en linea con expertos y estudiantes sobre esta materia deben solicitar autorización por adelantado. Este tipo de producción de programas auto iniciada está estrictamente prohibido.

6. Administren cuidadosamente los comentarios en los post de noticias.

B. Foros, blogs, y otros tipos de secciones interactivas:

1. No está permitido mantener discusiones o investigaciones sobre el tópico de Google.

2. Las secciones interactivas no deben recomendar este tópico, no posicionen este tópico y comentarios relacionados al inicio.

3. Todos los sitios por favor quiten todo texto, imagen y sonido y video que ataque al Partido, Estado, agencias del gobierno, políticas de Internet con la excusa de este evento.

4. Todos los sitios por favor quiten todo texto, imagen y sonido y video que apoye a Google, dedique flores a Google, pida a Google quedarse, felicite a Google y otros que tengan un tono diferente al de la política del gobierno.

5. En tópicos relacionados a Google, administren cuidadosamente los intercambios de información, comentarios y otras sesiones interactivas.

6. Administradores en jefe de las diferentes regiones por favor asignen esfuerzo humano específico para monitorear la información relacionada a Google; si existen información acerca de incidentes en masa, por favor repórtenlos con el tiempo suficiente.

Le solicitamos al Grupo de Monitoreo y Control un seguimiento inmediato del monitoreo y control de las acciones detalladas en las directivas anteriores; cuando cualquier problema sea descubierto, por favor ponganse en contacto con las respectivas sesiones con el tiempo suficiente.

Lineamientos adicionales:

-- No participen ni reporten en los comunicados de prensa/información de Google.

-- No reporten acerca de Google ejerciendo presión en nuestro país por medio de personas o eventos.

-- Los reportes relacionados deben poner nuestra historia/perspectiva/información en el centro, no provean a Google de materiales con los cuales atacar políticas relevantes de nuestro país.

-- Utilicen los puntos de vista acerca de Google abandonando China publicados por los departamentos relevantes.

Fuente: artículo del Washington Post

lunes, 15 de marzo de 2010

n900

un detalle que vale mas que mil palabras: el n900 trae de fabrica una consola de linux instalada :)

lunes, 8 de marzo de 2010

PyCamp 2010, día 4

Bueno, ya estoy en Retiro, en un rato estoy saliendo para Rafaela. Así que posteo el resumen de hoy. Probablemente después haga un post más completo con mis conclusiones de lso 4 días.


Algo muy interesante de hoy fué el hacking con OpenCV. Se hizo un programita que detecta cuando hay una cara cerca del monitor, si no hay nadie pone solo el protector de pantalla, y si hay alguien lo saca. Está genial :).


Y a la tarde se hizo el cierre, donde se expuso brevemente las cosas que se habían logrado en cada uno de los proyectos, y se charlaron algunas ideas para el próximo PyCamp, y PyCon.

Estoy muerto, pero estuvo todo muy, muy bueno. Después haré el resumen. Saludos!!

domingo, 7 de marzo de 2010

Pycamp 2010, día 3

Resumen de hoy :)


A la mañana me quedé medio dormido, jeje, porque anoche nos habíamos quedado hasta las 4 a.m.


A la siesta participé en un mini-cursito de empaquetado de aplicaciones Python para Debian. La verdad que era más complejo de lo que esperaba, pero nada que un programador no pueda hacer. Conclusión: tengo que aprender setuptools


Más tarde participé en el Bug Day de Python: cada uno elegía algún bug de Python y trataba de mandar un parche con la corrección. No pude hacer ningún parche, pero aprendí un poco viendo código de cómo está hecho Python, lo que estuvo bueno.


Y ahora a la noche, después de comer empanadas y panqueques, vuelvo a programar un poco el juego que empezamos el sábado.


Saludos!!


update!: me acabo de enganchar en una reunión de otro juego que se va a desarrollar para una competencia, veremos que onda :)

PyCamp 2010, día 2

Ayer no postee porque no tuve tiempo en todo el día, así que posteo ahora el resumen. Supongo que esta noche volveré a postear con el resumen de hoy


Lo más interesante de ayer fue el sprint de Django. Sprint = gente que se junta a programar, Django = framework para hacer desarrollo web usando Python, el mejor que probé hasta ahora. O sea, los que querían se juntaron para sobre todo corregir bugs en Django, para la versión nueva que va a salir dentro de unos días. Sinceramente fui más que nada para ver y aprender, porque pensaba que estaba a un nivel en el que yo no podía aportar mucho. Pero para mi sorpresa, terminamos corrigiendo un bug de Django juntos con Javi :). Mi granito de arena para Django, así devuelvo algo de todo lo que me está sirviendo.


Por la tarde me enganché en el momento de cocos2d (el framework para juegos que nació en un PyCamp anterior, que estamos usando para el juego que empezamos el sábado). Me enganché medio tarde, pero estuvo bueno, me ayudó a entenderlo mejor.


Finalmente, a la noche tuvimos el "fogón", pero sin fuego porque no se consiguió leña. Se empezó hablando de los temas más comunitarios, objetivos, realidad de Python en Argentina, etc. Se habló también de PyCon Atlanta 2010 y PyCon Argentina 2010. Y después se terminó hablando de política, sociedad, valores, ideologías, etc. Discusiones acaloradas pero muy interesantes. Algo parecido a los threads de PyAr, jajaja.


Hoy viene siendo interesante también, pero esta noche hago el resumen. Saludos!

viernes, 5 de marzo de 2010

PyCamp 2010, día 1

No voy a hacer un post muy completo, eso lo dejo para cuando vuelva. Pero cada día voy a postear un breve resumen de como pasé/pasamos el día.


El viaje fue largo... salí de Rafaela el jueves a las 11 de la noche, y recién llegamos al lugar hoy a las 13, justo para la comida :).
El lugar muy bueno. Todavía no pude recorrer mucho, pero tiene hasta para hacer cayack (o como se escriba, jeje).

Está todo super organizado el tema de wifi, hay cables y antenas atadas con cinta por las paredes, jeje. Y por suerte no se necesitó usar mi router (hubiese sido para renegar nomás).

Lo primero que se hizo a la tarde fué presentar todos los proyectos, y anotar cuántos interesados había en cada uno. A partir de eso se organizó un cronograma, armado como para favorecer la participación el los proyectos más votados. Pero todos los proyectos quedaron en el cronograma, y cada uno elije en cuáles participar y cuáles no :).

De hoy, el proyecto en el que más participé y me interesó fue el de desarrollo de un juego de tipo "Tower Defense", usando la librería para juegos en Python COCOS2D. Es una librería que se había empezado a desarrollar en un PyCamp anterior, jeje.

La verdad que tenía miedo de no poder aportar mucho, pero en un rato nomás ya estaba a tono y codeando para modificar la lógica de disparo de las torres :D.

Y ahora, a la noche, algunos seguimos codeando, mientras otros están con juegos de mesa, o más relajados.

La gente hasta ahora genial!


jueves, 4 de marzo de 2010

Apple vs HTC

Alguien vio el detalle de las pantentes que Apple esta usando para demandar a HTC? Es un desastre, tienen patentadas cosas que existen desde hace 20 años, que existían mucho antes de cualquier iPhone. No se cómo les da la cara para hacer algo así...
Una de las pantentes por ejemplo, es sobre tener objetos en memoria que se refieren a elementos en la pantalla. Cualquier programa con ventanas tiene eso! Existe desde hace décadas!!


Cualquiera que sabe de programación, viendo el detalle de las patentes aquí, puede darse cuenta del fraude que esto es. La mayoría de las pantentes son sobre cosas que no inventó Apple, y que existían desde hacía años antes que el iPhone...


Nunca me había gustado mucho Apple, pero después de esto, sinceramente la imagen que tenía de ellos cayó hasta lo más hondo. En lugar de competir haciendo mejores productos, están tratando de matar a la competencia con un fraude legal...

lunes, 22 de febrero de 2010

Debian en G1 con Android 2.1

Bueno, después de lo que anduve renegando, pude hacer andar Debian en una HTC Dream con Android 2.1.
Anoche me senté un rato y armé tutoriales para que otros puedan hacerlo si les interesa, junto con los archivos necesarios.

Es algo bastante raro y específico, a pocos les va a interesar, pero para esos pocos escribo :)


En mi G1 estoy corriendo Android 2.1, con la ROM KiNgxKxlicK AOSP 2.1 versión 1.6.1

Aquí pueden bajarla, no voy a hacer un instructivo sobre cómo instalarla porque el tema de ROMs en Android es más que extenso, y hay muchos tutoriales dando vueltas por la web.

Puede que los pasos que detallo en este tutorial no funcionen exactamente igual en otras ROMs y otros dispositivos, pero con probar no se pierde nada más que tiempo :).

Lo que sí o sí es necesario, es que la ROM que estén usando sea rooteada (es decir, que tengan permisos de root). Si no es una ROM rooteada, no van a poder hacer andar ni el instalador, jeje.


Para hacer andar Debian en Android, me basé en el contenido de dos foros que hablaban sobre el tema, más algunas modificaciones de las que me di cuenta solo. Al final agrego los links a esos foros para quienes quieran profundizar o ver la info original. El verdadero mérito va para los autores de esos posts, ya que lo que yo hice fueron pequeñas modificaciones sobre su trabajo.


Finalmente, asumo que quien quiere correr Debian en su celular es porque conoce un mínimo de Linux. No me voy a detener a explicar cómo editar un archivo de texto por línea de comando, ni cosas por el estilo, jeje.


Qué tal anda?


La verdad que anda mucho mejor de lo que yo esperaba. Recordemos que se trata de un celular, un aparato con recursos muy limitados. Pero con esos recursos se puede llegar incluso a levantar una interfaz gráfica.

Sin interfaz gráfica es un pájaro: vuela. Con la interfaz gráfica es un reptil: se arrastra, jeje.

Además, al levantar la interfaz gráfica puede suceder que el equipo se quede sin memoria RAM y empiece a cerrar aplicaciones para liberar memoria. Y al cerrar aplicaciones, puede cerrarnos el Debian que está corriendo de fondo, lo que resulta muy molesto.

Yo particularmente lo uso por linea de comandos, sin nada de interfaz gráfica, así que no tengo problemas.


Me puede romper el celular?


En los posts originales aclaran que lo que se hace no afecta al sistema operativo del celular (Android), por lo que no debería haber riesgos. Igual no me hago responsable por lo que a cada uno pueda pasarle en su celular por seguir los pasos que aquí detallo.


Tutorial


A) Instalar Debian



  1. Bajar los archivos necesarios desde este link: debian_aosp21_fisadev.zip

  2. Conectar el celular a la PC en modo de almacenamiento, o sacarle la SD y conectarla a la PC con un adaptador o lector de tarjetas.

  3. Crear en la memoria SD una carpeta con nombre "debian", y descomprimir dentro los archivos que contiene el zip.

  4. Volver a colocar la SD en el celular, o desconectarlo de la PC.

  5. Por seguridad, reiniciar el celular, ya que en algunas ocasiones el sistema de archivos queda como de solo lectura.

  6. Desde un emulador de consola/terminal en el celular, ejecutar:
    su
    cd /sdcard/debian
    sh installer.sh



B) Iniciar Debian y configurar las cosas básicas


Con lo hecho antes Debian ya está instalado, pero necesitamos levantarlo y hacer algunas configuraciones iniciales.



  1. Desde un emulador de consola/terminal en el celular, ejecutar:
    su
    cd /sdcard/debian
    sh bootdeb


  2. Esto va a iniciar Debian. Cuando haya terminado de iniciar (les deja el prompt para empezar a escribir), ejecutar:
    sh /scripts/onetime.sh

    Esto nos va a pedir configurar una contraseña para el usuario root. Háganlo, es necesario.

  3. Agregamos algunos repositorios básicos. Editamos el archivo /etc/apt/sources.list agregándole al final:

  4. deb http://ftp.debian.org/debian lenny main contrib non-free
    deb-src http://ftp.debian.org/debian lenny main contrib non-free

  5. Agregamos la configuración básica para que pueda utilizar la conexión de internet wifi del celular. Editamos el archivo /etc/network/interfaces y le agregamos al final:

  6. auto tiwlan0
    iface tiwlan0 inet dhcp


Después de hacer esto, tenemos que salir de Debian ejecutando:

exit

Ahora, cada vez que queramos levantar Debian, ejecutamos:

su
cd /sdcard/debian
sh bootdeb


Y siempre hay que salir usando "exit" (y no cerrando la aplicación así nomás)


Con esto ya es suficiente para tener un Debian desde línea de comandos. Los tutoriales que siguen son completamente opcionales.


C) Aumentar el tamaño del sistema de archivos


El Debian que tenemos instalado corre sobre un sistema de archivos contenido en un archivo de imagen, el debian.img. Esa imagen puede resultar un poco chica si vamos a instalar un entorno gráfico, o muchas aplicaciones. Así que si necesitamos hacerla más grande, estos son los pasos:



  1. Prestar atención a dónde se debe ejecutar cada comando, si en el celular o en la PC!.

  2. Conectar el celular a la PC en modo de almacenamiento, o sacarle la SD y conectarla a la PC con un adaptador o lector de tarjetas.

  3. Copiar el archivo debian.img de la SD a una carpeta en la PC, que a partir de ahora llamaremos PATH_PC

  4. Desde la consola/terminal de la pc, ejecutar esto reemplazando TAMAÑO por el tamaño que queramos. Ejemplo: para 3.5 GB poner 3500999999:
    cd PATH_PC
    dd if=/dev/zero of=debian2.img seek=TAMAÑO bs=1 count=1
    mke2fs -F debian2.img
    mkdir debian
    mkdir debian2
    mount -o loop debian.img debian
    mount -o loop debian2.img debian2
    cd PATH_PC/debian
    cp -R -f * PATH_PC/debian2
    umount debian
    umount debian2

    (si no funciona reinicar la pc y volver a intentar)
    cd PATH_PC
    rm -r -f debian
    rm -r -f debian2
    rm debian.img
    mv debian2.img debian.img
    chmod a+x debian.img
    chmod 777 debian.img


  5. Copiar el archivo debian.img de la PC a la carpeta debian de la SD.

  6. Volver a colocar la SD en el celular, o desconectarlo de la PC.

  7. Por seguridad, reiniciar el celular, ya que en algunas ocasiones el sistema de archivos queda como de solo lectura.

  8. Desde un emulador de consola/terminal en el celular, ejecutar:
    su
    cd /sdcard/debian
    sh bootdeb

    (eso nos inicia Debian, ya deberían saberlo, jeje)
    cd /var/lib/dpkg/updates
    rm -r -f *
    dpkg --configure -a



Después de hacer esto, tenemos ya un Debian con mucho más tamaño para jugar :D


D) Instalar un entorno gráfico


Para asombrar a nuestros linuxeros amigos, podemos instalar un entorno gráfico completo y jugar con nuestro Android como si fuese una PC de escritorio. Se arrastra de lento, y a veces se cierra solo por falta de memoria, pero anda al menos por los segundos necesarios para causar el efecto "waaaaah!" :)

Recordemos que si queremos instalar un entorno gráfico, deberíamos aumentar el tamaño del sistema de archivos.


Como los pasos no cambiaron del tutorial original, les dejo directamente el link a ese tutorial (si en algún momento desaparece, tengo una copia local, pidanme y la subo):


Instalar entorno gráfico.

(Está en inglés, si alguien necesita traducción, pida nomás)


E) Links originales


viernes, 19 de febrero de 2010

Windows PowerShell

Alguien vió lo que es PowerShell? Es una uber-copia de la consola de Linux, pero para Windows y hecha por Microsoft. Y no digo que es copia porque los veo parecidos o porque sea fan de Linux. Lo digo porque pusieron hasta los mismos comandos! "ls", "ps", "diff", "more", "man", "cp", "mv"...


Al menos no me siento tan "fuera de casa" en la maquina del trabajo, jeje...

martes, 16 de febrero de 2010

Hackers vs. Crackers

En un post de Buzz recomendé un libro para "hackers", e inmediatamente (ni 5 minutos) alguien por chat me preguntó por qué lo recomendaba a "piratas". Me hizo acordar que la mayoría tiene una idea bastante errada de lo que significa la palabra "hacker", así que posteo esta lectura obligatoria para cualquiera que quiera usar esa palabra:


(extracto de un escrito de Eric Raymond. El tipo no me cae bien, pero acá tiene razón)


Existe una comunidad, una cultura compartida, de programadores expertos y magos de las redes, cuya historia se remonta décadas atrás a los tiempos de los primeros miniordenadores de tiempo compartido y los tempranos experimentos con ARPAnet. Los miembros de esta cultura crearon el término "hacker". Los hackers construyeron Internet. Los hackers hicieron de Unix el sistema operativo que es hoy día. Los hackers hacen andar Usenet. Los hackers hacen funcionar la WWW. Si eres parte de esta cultura, si has contribuido a ella y otras personas saben quién eres y te llaman hacker, entonces eres un hacker.


(...)


Existe otro grupo de personas que se llaman a sí mismos hackers, pero que no lo son. Son personas (generalmente varones adolescentes) que se divierten irrumpiendo ilegalmente en ordenadores y haciendo "phreaking" en el sistema teléfonico. Los auténticos hackers tienen un nombre para esas personas: "crackers", y no quieren saber nada de ellos. Los auténticos hackers opinan que la mayoría de los crackers son perezosos, irresponsables y no muy brillantes, y fundamentan su crítica en que ser capaz de romper la seguridad no le hace a uno un hacker, de la misma manera que ser capaz de arrancar un coche con un puente en la llave no le convierte en ingeniero de automotores. Desafortunadamente, muchos periodistas y escritores utilizan erróneamente la palabra "hacker" para describir a los crackers; esto causa enorme irritación a los auténticos hackers.


La diferencia básica es esta: los hackers construyen cosas; los crackers las destruyen.


Para el que le interese, este es el texto completo.

viernes, 12 de febrero de 2010

Google Buzz

Qué me gusta y qué no me gusta de Google Buzz:



  • Una buena excusa para no usar Facebook, así la gente deja de insistirme en que me una al "libro de caras".

  • Lindo reemplazo para Twitter, me es más cómodo tenerlo integrado en el correo que tener que loguearme en otro sitio nuevo.

  • Mucha gente que conozco lo puede ver, no como me sucedía con Twitter (no es tan usado por estos lados).

  • Se integra bien con otras cosas que uso, como Blogspot, Google Reader y Picasa Web. De hecho este post es de mi blog, y aparece solo tambien en Buzz :D.

  • Cómodo, simple, no sobrecargado. Bien a la "google way"

  • Se puede desactivar, aunque muchos no se den cuenta. Vean abajo de todo de Gmail.

  • Se metió un poco a la fuerza, no daba muchas opciones para no probarlo, y el link para desactivarlo es casi invisible.

  • Todas las cosas son públicas por defecto: posts, listas de seguidores, etc. A mi no me afecta, pero a mucha gente sí, y por ello no debería ser de esa forma.

  • Me llegan los Buzz a la casilla de correo, odio eso. Por cada Buzz nuevo en una conversación que haya participado, me aparece un no leído en dos lugares diferentes: Buzz y Recibidos, y tengo que sí o sí archivarlo o eliminarlo desde Recibidos (si lo leo desde Buzz, el mail no leído sigue estando). Eso es MUY molesto.

  • No es tan visualmente fácil darse cuenta de los Buzz no leídos.

viernes, 29 de enero de 2010

Python Regular Expressions

Bueno, me complace anunciarles mi pequeño aporte a la comunidad pythónica:


Python Regular Expressions

El sitio aún es beta, revienta en unos cuantos lugares. Pero lo voy a seguir puliendo en mis ratos libres.

Espero que les guste y les sea útil!

miércoles, 27 de enero de 2010

If en los templates de Django 1.2 (alpha)

Una de las cosas que mencioné en el post anterior sobre frameworks web, fue que en Django el sistema de templates tenía algunas cosas que no me terminaban de convencer.

Más específicamente, no me agradaba demasiado que sea bastante limitado (aunque sea intencionalmente), y que redefinía una sintaxis a veces rara para cosas que eran comunes, y que todos estamos acostumbrados a hacer de otra manera.

Ejemplo: si queríamos hacer un If comparando si dos variables son iguales, en lugar de un clásico "if a == b", teníamos que escribir algo como "ifequals a b" (una sintaxis que me recuerda más a LISP que a Python, jeje).


En estos días se liberó la versión 1.2 alpha 1 de Django, y para mi felicidad, descubrí que el tag "if" de los templates está muy renovado. Ahora lo veo mucho más natural y Pythónico!


Entre otras cosas, permite hacer cosas como "if a == b", "if a < b", o con cualquier otro operador de la lista normal de operadores de comparación.

También permite mezclar ands y ors en la misma sentencia, algo que antes no se permitía y limitaba un poco.


Notas de release de Django 1.2 alpha 1.

Link directo a la sección sobre el tag if.

lunes, 25 de enero de 2010

Rails, Django, Web2py

No voy a hacer una comparación objetiva. Lo aclaro desde el principio.

Lo que quiero escribir en este post es simplemente un breve resumen de mi opinión sobre los tres frameworks basado en mi propia experiencia. Es super subjetiva, y estoy abierto a que me cuenten los demás qué opinan.


No quiero con esto convencer a nadie de usar uno u otro framework. Creo que lo mejor es que cada uno experimente y decida por sí mismo.


Por razones de longitud, no voy a incluir las cosas buenas o malas que son comunes a los tres frameworks. Ya todos sabemos que plantean metodologías avanzadas, agilizan el desarrollo, etc. Voy a destacar solo lo que en mi experiencia, diferenció (para bien o para mal) a cada uno.


Rails



  • Fue mi puerta de entrada al mundo del desarrollo web, tengo que reconocerle eso. Si no fuese por Rails nunca me hubiese agradado ese mundo.

  • Tiene algunas utilidades que para un novato pueden ayudar mucho, aunque después no se usen tanto. Ej: scaffolds.

  • Posee una comunidad muy activa y abierta, que lo hace conocer y avanzar mucho. Y además es una comunidad muy distendida, agradable.

  • Su documentación es muy buena, detallada y con ejemplos útiles. Realmente ayuda a aprenderlo.

  • Me obligaba a hacer las cosas de una determinada manera, cuando a veces prefería hacerlas de otra. No me dejaba demasiada libertad para elegir cómo hacer las cosas.

  • En algunos aspectos suele ser complicado innecesariamente (IMHO). En especial, las migrations y la estructura de archivos, que opino pueden simplificarse enormemente sin perder funcionalidad.


Django



  • Muy flexible. Propone una manera de hacer las cosas pero deja casi total libertad para hacerlas como uno considere mejor, y sin tener que "romper" nada o meterse en código extraño.

  • Enfoque más simplista, pero sin dejar de ser explícito y potente. (me gusta que sea explícito porque me ayuda a entender lo que sucede, y no tener que confiar en la "magia")

  • Aprovecha mucho el dinamismo de Python. Los CRUD de la aplicación de administración son un excelente ejemplo: detectan la estructura de los modelos y arman los forms y listados de forma dinámica.

  • Comunidad activa, abierta y agradable como la de Rails, y a veces bastante delirante.

  • Exelente documentación e información. El Django Book y la documentación oficiales son muy buenos.

  • No me termina de cerrar el sistema de templates. Entiendo el argumento de los diseñadores y la separación de lógica de presentación, pero creo que se le podría dar más potencia. Aunque me gusta muchísimo el sistema de bloques, da mucha flexibilidad.



Web2py



  • Muy, muy sencillo de instalar y poner en marcha por primera vez. En eso es ideal para novatos. Django y Rails están lejos en este aspecto.

  • También es muy sencillo de aprender y utilizar, a veces bastante más que Django o Rails.

  • Me gustó mucho la idea de poder editar los archivos del sitio, desde el sitio mismo. En tiempo de desarrollo resulta muy útil.

  • Pero su simplicidad se logra ocultando al desarrollador muchas de las cosas que suceden. Cuando surge un problema, no siempre se llega a comprender lo que está pasando.

  • Similar a lo que sucedía con Rails, suele obligar a hacer las cosas de una determinada manera y dificulta hacerlas de otra forma.

  • Prefiero mucho más un ORM como ActiveRecord o el ORM de Django, antes que la DAL que provee web2py.

  • Su desarrollo es cerrado. Todos pueden aportar ideas o parches, pero hay una única persona que es dueña del proyecto y que decide su destino, y el destino del aporte de cada uno.

  • Poca documentación. El libro oficial solo puede verse gratuitamente en scribd (muy molesto), y si se quiere el PDF hay que pagarlo.