lunes, diciembre 26, 2011

revolucionando paradigmas

un amigo me paso esta nota:

http://www.comercioyjusticia.com.ar/2011/08/09/crea-software-sin-programar-y-en-la-mitad-de-tiempo/

es de una herramienta que ese amigo ya me había contado pero que nunca pude conseguir información concreta como ejemplos concretos.

leyendo el articulo se me prendió el detector de buzzwords muchas veces así que como me siento quejoso hoy voy a hacer un análisis del mismo.

si quieren sacar sus cartones de buzzword bingo :D

http://en.wikipedia.org/wiki/Buzzword_bingo

disclaimer

me encantan las tecnologías nuevas, innovadoras, que prueban cosas distintas.

no creo que el desarrollo de software este en su punto máximo, pero a veces algunas tecnológicas nuevas vienen con mucho discurso de relaciones publicas y pocos ejemplos concretos.

si bien al final explica que ya tiene implementaciones concretas me voy a centrar en la promesa de "hacer software sin programar" que predica el titulo.

hago muchas preguntas y algunas cosas que digo son muy genéricas o pueden ser falacias, solicito a los guardianes de la argumentación que sean cariñosos con migo :D

empecemos

Un nuevo paradigma revoluciona la tradicional forma de desarrollar programas.
http://images3.wikia.nocookie.net/__cb20090909220405/en.futurama/images/thumb/8/8b/ThatGuy.jpg/727px-ThatGuy.jpg

"that guy" en futurama ya lo dijo
"I'll handle this, Fry. You get back to the farm, shift some paradigms, revolutionize outside the box"
luego
OMP es una calculadora que “modela” implementando operaciones.
calculadora podría ser sinónimo de interprete, "modela" podría ser sinónimo de interpreta, implementando operaciones podría ser sinónimo de método/función etc. (muchas asunciones por supuesto)

pareciera que usara sinónimos para que no parezca algún lenguaje de programación o herramienta 4GL tradicional (http://en.wikipedia.org/wiki/Fourth-generation_programming_language)
Resuelve por medio de metamodelos la solución con base en los requerimientos del cliente.
mmm meta (http://en.wikipedia.org/wiki/Metacrap)

osea que son modelos sobre los modelos, simplemente un modelo de indireccion mas?
A famous aphorism of David Wheeler goes: "All problems in computer science can be solved by another level of indirection"; this is often deliberately mis-quoted with "abstraction layer" substituted for "level of indirection". Kevlin Henney's corollary to this is, "...except for the problem of too many layers of indirection."

sigamos

Consultores Pyme se asoció a la firma Onirus, de Tandil,
un poco de publicidad gratis
para promover el uso del Paradigma Semántico de Modelado de Software,
me encanto la conjunción de paradigma y semántico para hacerlo parecer mas cool.

se referirá simplemente a programación declarativa con palabras mas difíciles?

http://en.wikipedia.org/wiki/Declarative_programming
una solución que revolucionará el concepto de construcción de software en las empresas que programan con tecnologías tradicionales.


Se trata de una herramienta innovadora creada por la ingeniera en sistemas Nadia Huebra y su equipo, fundadores de Onirus, una empresa con presencia en Buenos Aires y Mendoza.
mas publicidad
Sobre la base de un paradigma conceptual denominado MORE®
antes era un paradigma semántico, ahora es conceptual.
(propiedad intelectual de Nadia Huebra), se creó una herramienta denominada OMP® (Onirus Modeling Platform) capaz de modelar software sin programar, es decir sin generar código procedural, tal como se conoce.
desde cuando programas "es decir" sin generar código procedural?

podes generar DSLs, programación declarativa, interpretarlo directamente etc.

prolog define hechos y pregunta cosas y sin embargo es un lenguaje de programación y es considerado programar.
“Funciona como una calculadora de procesos funcionales. OMP implementa axiomas, operaciones y argumentos MORE para resolver mediante metamodelos la creación del software. Esto conlleva la mitad del tiempo que se tarda en desarrollar un programa común”, explicó su creadora, quien patentó la idea.
los axiomas no se implementan se definen (creo :D)

se refiere a axiomas como un "fact" en prolog o en un sistema experto?

http://en.wikipedia.org/wiki/Expert_system
Para la creación del software, el profesional responsable de la captura del requerimiento (equiparado al programador en la tecnología tradicional)
osea que cambiaste el nombre del programador-analista.
imparte -en lenguaje natural-, una especificación funcional a partir de la cual se modela el problema funcional.
si se imparte en languaje natural y no un lenguaje formal, como resuelve el requerimiento:

"cuando el valor es entre 1 y 5..."

1 y 5 inclusivo? exclusivo?

si eso se tiene que especificar o esta formalizado que significa entonces no es lenguaje natural, es simplemente un lenguaje de muy alto nivel.

por ejemplo, esto es lisp:

(loop for i from 1 to 10 sum i)

parece lenguaje natural, salvo que si lo cambio un poco ya no anda, entonces
es un lenguaje de muy alto nivel nomas.

otro ejemplo (entre tantos), cucumber: http://cukes.info/ aunque parezca ingles es ruby, o un interprete sobre ruby
La calculadora cuenta con una cantidad definida de modelos y N cantidad de ensambladores, que combinan los modelos con base en las especificaciones de los requerimientos solicitados por el cliente.
cuenta con una cantidad definida de modelos, osea que serian como bibliotecas o patrones prediseniados?

ensambladores como linkers o como glue code entre los modelos? osea que son como bibliotecas?
Luego, los testers funcionales validan las especificaciones del software resultante. “Aquí una de las máximas ventajas es que, no habiendo errores en la calculadora, no hay posibilidad de error de programa, sólo pueden surgir ajustes funcionales”, añadió Huebra.
osea que los testers hacen de compiladores?

si no hay errores en la calculadora es como decir que no haya errores en el interprete de python.

si no hay posibilidad de error en el programa, no importa lo que escriba va a andar bien? para que lo escribo?

un quote de un tal Babbage
On two occasions I have been asked, 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.

Read more: http://www.brainyquote.com/quotes/quotes/c/charlesbab141832.html#ixzz1hfJ779dD
por "ajustes funcionales" se refiere a debugging/bug fixing?
“Es un cambio absoluto de paradigma, se trata de un metalenguaje de máximo nivel de abstracción de la semántica del requerimiento funcional”, explicó Huebra, segura de que éste modelo revolucionará el tradicional método de desarrollar software.
otra vez revolucionando los paradigmas

porque metalenguaje y no lenguaje? osea que si es un lenguaje de programacion?

máximo nivel de abstracción? osea que no hay nada mas abstracto? no puedo decir "resolve este problema"?

empiezo a detectar abuso de vocabulario.

ventajas

De lo cambios: OMP incorpora el cambio como variable endógena, es decir, los sistemas son evolutivos y pueden ser oportunos.
ah? sistemas evolutivos? como el software actual basado en metodologías ágiles? o programación evolutiva/genética?

http://en.wikipedia.org/wiki/Evolutionary_programming

menos mal que no son inoportunos :P
Las modificaciones se pueden realizar en los momentos que se necesiten, adecuando los tiempos a la madurez conceptual de los usuarios del negocio; no se requiere compilación.
no se requiere compilación, como un lenguaje dinámico digamos.
Del conocimiento: esta tecnología hace portable el conocimiento del negocio en formato dato. Los modelos de negocios (que serían los módulos si los comparamos con el software tradicionales) son independientes y capaces de funcionar juntos o separados.
conocimiento en formato dato, me suena a homoiconicidad, algo que lisp hace bastante bien desde digamos... 1958

http://en.wikipedia.org/wiki/Homoiconicity

ya que estamos, portable a que otra plataforma?
Del tiempo: en relación con la programación de un software tradicional, la modelación permite reducir los tiempos de un proyecto en 50%.
citation needed, que estudio de campo muestra estos resultados? paper?
Del requerimiento: Huebra asegura que MORE permite captar con alta precisión el requerimiento del cliente, y encarar la solución a su “exacta medida”.
como nos prometieron los de UML con la especificación de casos de uso?
Múltiple Son grandes empresas nacionales las que confían en Onirus. Enarsa, para sus 65 plantas, utiliza un sistema para el procesamiento de datos de despacho térmico. Hidroeléctrica Piedra del Águila, Centrales Térmicas Mendoza, Central Puerto y La Plata Cogeneración lo emplean para facturación de energía eléctrica del mercado a término. “Es aplicable a cualquier tipo de industria; algunas pymes usan sistemas con esta tecnología para administración contable, soluciones agrícolas, trazabilidad vitivinícolas, sanidad equina, entre otros”, agregó la especialista.
osea que es un lenguaje turing completo http://en.wikipedia.org/wiki/Turing_completeness

que bueno que tenga casos de éxito, osea que no es vaporware al menos, pero el lenguaje del articulo le resta bastante credibilidad.

veremos que sale de esto, espero ser probado incorrecto, a nadie le gusta hacer ABMs :)

jueves, diciembre 08, 2011

rst2html5 se mueve

una de las ideas cuando empece rst2html5 era tener la posibilidad de transformar el documento generado despues de transformarlo a html.

recien acabo de empujar los cambios para tener post processors en rst2html5

un ejemplo?

dado el siguiente archivo:

https://raw.github.com/marianoguerra/rst2html5/master/examples/slides.rst

corriendo el comando:

./rst2html5 --deck-js --pretty-print-code examples/slides.rst  > slides.html

se obtiene lo siguiente (hint, apreta enter, la barra espaciadora o las fechitas):

http://marianoguerra.com.ar/rst2html5/slides.html

hacer un post processor no es mas que manipular el elementtree resultante, escucho ideas para mas postprocessors :)

jueves, diciembre 01, 2011

mozilla rhino 1.7R3 javadocs apidocs mirror

hasta que los muchachos de mozilla arreglen sus links rotos y suban de nuevo los javadocs de mozilla rhino este humilde servidor las postea aca

http://marianoguerra.com.ar/docs/rhino-1-7R3/index.html

PD: SEO friendly title :P

jueves, noviembre 10, 2011

simbolitis en scala

hace un tiempo estoy desarrollando un proyecto en scala.

de los lenguajes estaticamente tipados es el mejor que he usado hasta ahora, pero hay algo que no me gusta hasta ahora...

algunos desarrolladores parecen nenes que nunca los dejaron hacer nada y a la primera oportunidad se mandan cualquiera.

resulta que en scala los metodos pueden tener cualquier nombre, letras, simbolos, unicode etc.

y eso lleva a cosas como lo siguiente:

<< es POST (yo: .... ok ....)
<<< es PUT (no notas la diferencia? es obvio)
ah! me olvidaba <:< es agrega headers al request (yo: O.O)

les dejo una para el camino:

>/ es 

Set the default character set to be used when processing 
the request in <<, <<<, Handler#>> and derived operations
 >~, as_str, etc.
diviertanse

patea la arenita y dice bajito "explicit is better than implicit"

viernes, septiembre 23, 2011

lift 2.4-M4, scala 2.9.1, sbt 0.11.0-RC0, jetty 7.3 and xsbt-web-plugin 0.1.1

installing sbt 0.11.0-RC0

run the following commands:
# go to your home directory
cd

# create a bin folder there (if you don't have it yet)
mkdir bin

# download the latest sbt
wget http://repo.typesafe.com/typesafe/ivy-snapshots/org.scala-tools.sbt/sbt-launch/0.11.0-RC1/sbt-launch.jar
now we need to create a launcher for sbt, create a file called sbt in the bin directory you just created and put the following inside:
java -Xmx512M -jar `dirname $0`/sbt-launch.jar "$@"
now run the following commands:
# give execution permissions to the file
chmod u+x sbt
if you don't have $HOME/bin in your path variable you should add it, for this do the following:
# open $HOME/.bashrc in your favorite text editor
vim $HOME/.bashrc
and add the following line at the end of it:
export PATH=$PATH:$HOME/bin
save and close and run the shell again so it loads the new definitions:
bash
you can check that the path was updated by running:
echo $PATH
you should see something similar to this:
/sbin:/bin:/usr/sbin:/usr/bin:/home/test/bin
see that the last one is $HOME/bin (with $HOME expanded to my current home location)

installing scala 2.9.1

if your operating system has this in the package manager then install it from there but since the release is new and some distributions are a little behing we will install it from the download section of the scala site.
run the following commands:
# download the latest version of scala
wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1.final.tgz

# unpack it
tar -xzf scala-2.9.1.final.tgz

# move the folder to the standard place
sudo mv scala-2.9.1.final /usr/share/scala

# create links so the commands are visible
sudo ln -s /usr/share/scala/bin/scala /usr/bin/scala
sudo ln -s /usr/share/scala/bin/scalac /usr/bin/scalac
sudo ln -s /usr/share/scala/bin/fsc /usr/bin/fsc
sudo ln -s /usr/share/scala/bin/sbaz /usr/bin/sbaz
sudo ln -s /usr/share/scala/bin/sbaz-setup /usr/bin/sbaz-setup
sudo ln -s /usr/share/scala/bin/scaladoc /usr/bin/scaladoc
sudo ln -s /usr/share/scala/bin/scalap /usr/bin/scalap

installing the rest

first create the project folder and setup the structure:
# define the name of the project
PROJNAME=demo

# create the direcotry where our project will be
mkdir $PROJNAME

# get the latest lift with sbt support
wget https://nodeload.github.com/lift/lift_24_sbt/tarball/master

# extract lift
tar -xzf master

# remove the downloaded file
rm master

# copy the basic example to our project directory
cp -r lift-lift_24_sbt-*/scala_29/lift_basic/* $PROJNAME

# move to our project folder
cd $PROJNAME

# remove older sbt versions
rm sbt sbt.bat sbt-launcher.jar

# remove the project structure
rm -r project/

# create the new project structure
mkdir -p project/project
the change in the project directory structure is because it changed in sbt 0.11, see more about this here:
https://groups.google.com/forum/#!searchin/simple-build-tool/plugins/simple-build-tool/ep_63fA_Gzk/32xiPzGkCqAJ
create a file at $PROJNAME/build.sbt:
vim build.sbt
with the following content:
seq(webSettings :_*)

scalaVersion := "2.9.1"

libraryDependencies ++= Seq(
        "net.liftweb" %% "lift-webkit" % "2.4-M4" % "compile",
        "net.liftweb" %% "lift-mapper" % "2.4-M4" % "compile",
        "org.eclipse.jetty" % "jetty-webapp" % "7.5.1.v20110908" % "jetty",
        "junit" % "junit" % "4.8" % "test",
        "ch.qos.logback" % "logback-classic" % "0.9.26",
        "org.scala-tools.testing" %% "specs" % "1.6.9" % "test",
        "com.h2database" % "h2" % "1.3.160"
)
create a file at $PROJNAME/project/plugins.sbt:
vim project/plugins.sbt
with the following content:
resolvers ++= Seq(
        "Web plugin repo" at "http://siasia.github.com/maven2",
        Resolver.url("Typesafe repository", new java.net.URL("http://typesafe.artifactoryonline.com/typesafe/ivy-releases/"))(Resolver.defaultIvyPatterns)
)

addSbtPlugin("com.github.siasia" % "xsbt-web-plugin" % "0.1.1")
now run:
sbt
when you get to the console write:
jetty-run
note that the first time it will take a while, that's because it's downloading lot of stuff and compiling some other things, after the first run everything becomes faster.
after a moment some information will appear, after that navigate to:
http://localhost:8080
and play with the app.

generating a war file to deploy in web containers

just run:
sbt package-war
to test you can run:
sbt test
note that the new version of jetty changed namespace from org.mortbay.* to org.eclipse.* so some code may be broken.

some extra packages

here are some other packages you may want to have, copy the lines your are interested in and add them to $PROJNAME/build.sbt:
libraryDependencies ++= Seq(
    "com.novocode" % "junit-interface" % "0.6" % "test->default",
    "org.scalatest" % "scalatest_2.9.0" % "1.6.1",
    "com.sun.jersey" % "jersey-server" % "1.9",
    "com.sun.jersey" % "jersey-client" % "1.9",
    "com.sun.jersey" % "jersey-core" % "1.9",
    "com.sun.jersey" % "jersey-json" % "1.9",
    "javax.ws.rs" % "jsr311-api" % "1.1.1",
    "javax.xml.bind" % "jaxb-api" % "2.2"
)

martes, agosto 16, 2011

500 posts intrascendentes...

...de un blog intrascendente.

si seniores, pensar que hace varios anios cree este blog cuando mi hermano se compro su primera camara compacta para postear fotos*.

el experimento no duro mucho  y empece a variar entre informacion interesante, rants de odio hacia el software :P, la etapa de postear screenshots de mi desktop, la etapa de quotear y repostear cosas y ahora que es simplemente un log de lo que considero vale la pena eternizar para cuando este viejo y solo y ya me haya leido todos los mails y chats de gmail en orden cronologico (?) y me ponga a ver que pavadas decia "cuando era joven".

al menos vino ian curtis y nos tomamos una pepsi


* mi hermano ahora labura de fotografo en berlin, para que se den una idea del paso del tiempo, pasen y vean que bonitas fotografias: http://kaig-hu-arg.com/

...then you win...

recien leo esto:

http://www.zdnet.com/blog/open-source/linux-snickers-at-microsofts-victory-declaration/9405

habla de que exceptuando desktops, linux es la fuerza mayoritaria en cloud, servers, mobile y 2da en tablets.

y que como el desktop esta en salida* linux es la fuerza dominante o el segundo en casi todos los segmentos.

esto me hizo acordar dos cosas:



y que por estas epocas hace 10 anios instalaba por primera vez linux en mi maquina :)

feliz decada linux

ahora hay que ponerse a ver cual es el sistema operativo que destrone a linux, no vaya a ser que se quede dormido en los laureles

a la espera del proximo rey**, viva la diversidad :)

* si ya se, tiene para rato
** que el nuevo rey sea libre

sábado, agosto 13, 2011

me gane una mochila un libro y un titulo de ingeniero en sistemas

dia de regalos, se anunciaron los ganadores del spawnfest y gane en la categoria "" por qrly

el premio es una mochila de erlang solutions y un libro de Erlang OTP in action (IRL!)

la UTN por haber aguantado 6 anios asistiendo a sus aulas le entrego a mi viejo por cuestiones geograficas (el E5 no llega hasta Inglaterra todavia) un titulo de ingeniero en sistemas de informacion.

demasiados premios para un dia

lista de lecturas 06/08/11

viernes, agosto 12, 2011

mlog, logging for human beings

siempre empiezo un modulo y empiezo a poner prints, pienso "tendría que usar logging", pero el hecho de no poder recordar como se configura un logger y tanta verbositud hace que siempre termine usando prints.

peor cuando tengo que cambiar a logging tengo que leer la documentación y termino haciendo copy paste del código de los ejemplos.

para eso cree un wrapper que me hace la vida mas simple en mis casos de uso simples.

pego acá parte del readme del modulo (en ingles por fiaca a traducirlo).

si les gusta el código esta acá:

https://github.com/marianoguerra/doodles/tree/master/python

si ven algún error, problema o tienen alguna observación para hacer son bienvenidos, nunca termino de entender el modelo de logging ya sea en python o en java (el único que entiendo es console.log y console.error de js :D)

acá va un ejemplo de uso:



import time
import mlog

# create a logger for the console with default logging level, default format
# and default everything (but nice defaults)
log = mlog.console()
# log some stuff
log.info("hey!")
log.warn("warning...")
log.error("something went wrong! (no it didn't just testing log.error)")

# add a file handler to the logger we where using (see how I pass the logger?)
# if I don't pass the logger instance I get a brand new logger that is
# unrelated to the last one, but in this case I add a handler to the one I have
mlog.file("mlog.log", logger=log)

# log some more stuff
log.debug("I'm on a file now!")
log.info("of course I'm on both")

# who wants file loggers without rotation?
# I give you a nice notation to specify the rotation policy
# add this handler to the logger I already have
mlog.file("every-minute.log", when=mlog.every(1, mlog.MINUTE), logger=log)

log.info("im on a file that rotates every minute")

# give time so it rotates
time.sleep(65)

log.info("65 seconds passed!")

# this is a new logger not related with the others
# change the module name so it's not in the same hierarchy
# as the other ones
other_log = mlog.file("unrelated.log", name="test_mlog_1")

# log something
other_log.info("unrelated logger is unrelated")
running it produces the following output (and files):

$ python test_mlog.py
[2011-08-12 11:44:30,491] test_mlog INFO: hey!
[2011-08-12 11:44:30,491] test_mlog WARNING: warning...
[2011-08-12 11:44:30,491] test_mlog ERROR: something went wrong! (no it didn't just testing log.error)
[2011-08-12 11:44:30,492] test_mlog INFO: of course I'm on both
[2011-08-12 11:44:30,492] test_mlog INFO: im on a file that rotates every minute
[2011-08-12 11:45:35,491] test_mlog INFO: 65 seconds passed!

$ ls
README.rst                              mlog.log                                test_mlog.py
every-minute.log                        mlog.py                                 unrelated.log
every-minute.log.2011-08-12_11-44       mlog.pyc

$ cat mlog.log
[2011-08-12 11:44:30,491] test_mlog DEBUG: I'm on a file now!
[2011-08-12 11:44:30,492] test_mlog INFO: of course I'm on both
[2011-08-12 11:44:30,492] test_mlog INFO: im on a file that rotates every minute
[2011-08-12 11:45:35,491] test_mlog INFO: 65 seconds passed!

$ cat every-minute.log
[2011-08-12 11:45:35,491] test_mlog INFO: 65 seconds passed!

$ cat every-minute.log.2011-08-12_11-44
[2011-08-12 11:44:30,492] test_mlog INFO: im on a file that rotates every minute

$ cat unrelated.log
[2011-08-12 11:45:35,495] test_mlog_1 INFO: unrelated logger is unrelated

miércoles, agosto 10, 2011

csv table to rst table -- python <3

update: roberto alsina sabe! :D hay una directiva no muy conocida en reST que permite hacer lo que hice (csv-table), y anda muy bonito en el wiki de github, dejo el codigo abajo porque es codigo python muy bonito :P

problema, documentar estructura de tablas sql en algun lado

preferiblemente:

  * formato editable con editor de texto
  * versionable
  * facil de escribir y bonito de leer

la forma mas facil de escribir es algo asi como un csv, pero la forma mas facil de leer es algun formato tabular, el wiki de github soporta varios markup pero el markup para tablas siempre es un perno, asi que elegi escribir un conversor de csv a tablas restructured text.

el resultado esta aca



ejemplo:

$ cat personas.csv                                           
dni, nombre, apellido, observacion
1, bob, esponja, vive en una pinia debajo del mar
2, patricio, estrella, amigo de bob que perno seria tener que escribir el markup para una columna tan larga no?
$ python csv2table.py personas.csv > tablas.rst                                    
$ echo >> tablas.rst
$ python csv2table.py personas.csv "Personas con titulo (la tabla no las personas)" >> tablas.rst
$ rst2html tablas.rst > tablas.html

resultado rst (si, rompi todos los estilos de la tierra):

=== ========= ========= ========================================================================================= 
dni  nombre    apellido  observacion                                                                              
=== ========= ========= ========================================================================================= 
1    bob       esponja   vive en una pinia debajo del mar                                                         
2    patricio  estrella  amigo de bob que perno seria tener que escribir el markup para una columna tan larga no? 
=== ========= ========= ========================================================================================= 

Personas con titulo (la tabla no las personas)
==============================================

=== ========= ========= ========================================================================================= 
dni  nombre    apellido  observacion                                                                              
=== ========= ========= ========================================================================================= 
1    bob       esponja   vive en una pinia debajo del mar                                                         
2    patricio  estrella  amigo de bob que perno seria tener que escribir el markup para una columna tan larga no? 
=== ========= ========= ========================================================================================= 


resultado html:

dni nombre apellido observacion
1 bob esponja vive en una pinia debajo del mar
2 patricio estrella amigo de bob que perno seria tener que escribir el markup para una columna tan larga no?

Personas con titulo (la tabla no las personas)

dni nombre apellido observacion
1 bob esponja vive en una pinia debajo del mar
2 patricio estrella amigo de bob que perno seria tener que escribir el markup para una columna tan larga no?

martes, agosto 02, 2011

llego el momento

si seniores, basta de intentar evitar lo inevitable, hoy me voy a aprender de memoria los shorthands de CSS.

parece que la cosa es como un reloj, empezando en las doce y girando en sentido horario (como va a girar un reloj sino).

osea que es: top, right, bottom, left.

si se especifican 3 simplemente el segundo se refiere a left y right: top, right - left, bottom.

si se ponen dos se aplican de a pares: top - bottom, right - left.

espero habermelos aprendido bien porque ahora me quedaron grabados con lo del reloj :D

solo me tomo como 5 anios de consultar w3schools cada vez que necesitaba recordarlo.

PD: te conte que la documentacion de mozilla le pasa el trapo a la de w3schools y que tendrias que linkear a MDC CSS Docs cuantas veces puedas asi rankea arriba de w3schools en google y todos somos felices?

miércoles, julio 27, 2011

Portishead - Nick Cave - I'll Be Your Mirror

pasteo un mail que mande con una descripcion por que da fiaca contar dos veces la misma cosa.


gentes, como algunos sabran y otros no (creo los mas que no que los
que si) hoy fui a ver ATP - I'll be your mirror, un festival hecho con
musica elegida por portishead.


la cosa es que de los que conocia que tocaban estaban PJ Harvey,
Portishead y oh sorpresa nick cave tocando con su banda grinderman (no
soy muy nicolas cuevanero como para saber que tenia esa banda).

las malas noticias primero: PJ Harvey tocaba ayer nomas asi que me la perdi :S

las buenas despues: vi a nick cave en vivo y obviamente a portishead

como algunos sabran y otros no (creo los mas que si, que los que no)
no conozco mucho de nick cave pero resulto que en vivo es una locura,
los vagos tienen una potencia terrible, el primer violero esta de la
cabeza, toca el violin con distorsion y cry baby, las maracas que
eventualmente golpea contra unos platillos que tiene cerca, la
guitarra electrica con un arco. El batero vestido de saco rosa tocando
una bateria rosa. Nick Cave yendo por todos lados, siempre arrojando
por los aires el instrumento que deja de usar (guitarra, piano,
microfono), el unico que parece ser normalito es el bajista, muy
ubicado el tocando muy bien en una esquina. Todo esto sin contar las
barbas epicas que clavan el violero y el baterista.



en el segundo tema nick cave tira la guitarra a la bosta y se tira
sobre las primeras files gritando la cancion y haciendo cantar a la
gente, una locura.

como nota de color, grindman fue la banda que mas fuerte sono que haya
visto en mi vida, literalmente me dolian los oidos cuando termino y en
un momento me tuve que ir para atras porque el primer violero metia un
chirrido en las canciones (el chirrido era deseado, ya que lo activaba
en una consola al costado) que era dificil de aguantar.




por ultimo vi a portishead, la puesta en escena muy grosa, los videos
que usan de fondo estan muy copados (muy larescos diria :P) suenan
terriblemente bien en vivo y te quedas sorprendido como le sacan esos
sonidos a los instrumentos (fuera de dos teclados y unas bandejas no
usan nada raro), el tema fue que suenan tan bien que te pones a pensar
en cualquier cosa y cuando caes en que te estas yendo por las ramas y
que no estas prestando mucha atencion se te pasa a mil (al menos eso
me pasa a mi). Para recontra rescatar, tenian camaritas tipo de
vigilancia por todo el escenario apuntando desde angulos chiflados a
los musicos y a veces lo proyectaban al fondo y en dos pantallas
laterales, lo que permite notar la habilidad y tecnica jazzera del
batero, lo groso que es el violero y la cara de tristeza que tiene
beth gibbons durante todo el recital.



para cerrar, vi algunas otras bandas interesantes cuyos nombres
buscare maniana y vi algunas que realmente o yo soy muy convencional o
ellos haciendo ruido son peores que yo haciendo ruido.



para rescatar lo que me acuerdo ahora, una banda que hizo la banda
sonora de la pelicula muda de juana de arco y la toca en vivo con la
pelicula de fondo, la banda es una mezcla de orquesta, coro y
instrumentos electricos y suena muy groso. Otro, una banda media jam
con un saxo al frente haciendo cualquier fruta que suena muy bien, mas
menos cero para una banda llamada anika o similar, la banda suena muy
bien pero la cantante tiene menos onda que flequillo de coreano.



PD: nick cave les manda esta foto


y un beso en el pupo a todos


Seguidores

Archivo del Blog