martes, 8 de septiembre de 2015

Carta abierta para "Atención al Cliente" de Seur

Para que al menos el esfuerzo de escribir este correo no haya sido en valde. Los "blas", "bles", "blus" y "fulano" es para no poner mi dirección ni señalar a nadie en concreto.
Buenas tardes:

Quería transmitirles mi profundo malestar por la gestión en la entrega de los pedidos de la empresa Tienda Animal a mi domicilio. Mis datos y los datos del último pedido al cual me refiero figuran al final de este correo. Ya he recibido 3 pedidos con Uds. de Tienda Animal. Con el primero de ellos no hubo problemas, el segundo ya nos puso un poco en alerta, y esta queja es sobre todo por este último pedido.

El primer correo que recibo para la entrega de este pedido es del 4 de septiembre. Me dicen que lo entregarán el lunes 7 de septiembre en la calle "bla bla bla". Debido a que con otras entregas ya figuraba esta dirección incorrecta (realmente es calle ble ble ble, en mis datos de Tienda Animal figura esa dirección también y en el correo de confirmación que me manda Tienda Animal también figura la dirección correcta) pero se acabaron entregando correctamente, no me preocupo ya que supongo que finalmente llegará.

El lunes por la mañana no recibo ningún correo indicándome la hora de entrega (como en otras ocasiones), por lo que supongo que o me lo mandarán más tarde o me llamarán para concretar la entrega. Para mi disgusto, me llega un correo el lunes a las 16:09 diciéndome que no estaba en mi domicilio a las 13:22. ¿Cómo podía saber yo que el paquete iba a ser entregado a esa hora?

Llamo a su número 902 (cada vez que llamo me tienen en espera como mínimo 4 minutos y la última vez que he llamado hoy he estado esperando 9 minutos) preguntando por el pedido y comunicándoles que en realidad no sabía a qué hora se iba a entregar. Su empleado "fulano" (sin apellidos) me atiende. Le cuento mi caso y le comunico además que por las mañanas no hay nadie en casa para recepcionar los pedidos y que si acaso deberían pasarse a partir de las 15:00 de la tarde de hoy (martes). Parece que anota en la incidencia o su sistema de gestión este particular y que al día siguiente podré recepcionar el pedido.

Hoy martes tampoco recibo correo alguno concretando la hora de entrega, pero como hemos quedado ya que sería a partir de las 15:00, salgo del trabajo un poco antes y consigo llegar a casa a las 15:15. Cierto, 15 minutos después del "a partir" que informé pero no mucho más tarde. Recibo entonces un correo a las 15:57 de la tarde diciéndome que "Debido a su ausencia en su domicilio el día a las , no fue posible...". No indican los datos concretos de a qué hora se han pasado ni tampoco la dirección de mi domicilio. Tampoco me llaman al móvil. ¿Cuándo intentaron de nuevo la entrega? ¿Lo hicieron en la dirección correcta?

Llamo otra vez al 902 y me indican que la mercancía está disponible en la calle blu blu blu. Voy allí sobre las 19:00 de esta tarde y su empleado me indica que está en el almacén central en Vallecas, que vuelva mañana. La zona donde está la oficina es de pago y en la que es difícil aparcar. Con lo cual se pueden imaginar mi entusiasmo para volver al día siguiente.

Les pregunto finalmente, a quien le pueda interesar: ¿por qué tengo que estar haciendo tantas gestiones y tomarme tantas molestias cuando me hubiera sido mucho más cómodo ir a comprar eso mismo a un centro comercial?

No sé si a Uds. les parece normal todo esto, pero desde luego si no me dan una solución o me compensan de alguna forma, me pondré en contacto con Tienda Animal informándoles del asunto y recomendándoles trabajar con otra empresa de transporte en un futuro. Y si puedo intentaré no tener que volver a tratar con Uds. ya que parece que tengo que hacer yo el servicio que les estoy pagando a Uds.

Gracias por el tiempo que le han dedicado a leer este correo.

Un saludo.
Guillermo.
[Datos del pedido omitidos]
No me extraña que Amazon trabaje con MRW. Pero unos saben tratar bien a la gente y otros no. O eso creo yo.

Ahí queda por escrito.



Actualización 22-9-2015:

Me escribieron hace unos días desde el departamento de atención al cliente de Seur pidiéndome disculpas por las molestias que he sufrido y prometiéndome tomar medidas para que no vuelva a ocurrir. O eso interpreto yo:
"Asimismo, tomamos nota de los hechos que han ocasionado este incidente, con el fin de tomar las acciones correctoras necesarias y poder garantizarle un servicio adecuado en el futuro."
No sé por qué, pero me temo que esta entrada no ha terminado aquí.

Continuará... :)

Actualización 03-11-2015:

Después de que Atención al Cliente de SEUR me respondiera al correo como indico en mi nota anterior, hoy después de realizar un pedido hace más de 7 días me ha vuelto a suceder lo mismo. Sólo me queda mandarles un correo indicándoles que no pienso volver a trabajar con ellos ya que no me tratan como cliente sino como un enemigo.

En fin... Ahora voy y lo twitteo también :)

viernes, 21 de agosto de 2015

La neutralidad de Telemadrid y Onda Madrid

Escribo esta entrada debido a que no me dejan enviar un comentario al post "Los presos del Valle de los Caídos" escrito por Miguel Platón en la web de telemadrid.es accesible en la URL:

La excusa que da el formulario es que mi dirección IP está excluida por ser origen de spam. Después de cambiar de IP varias veces (apagando y encendiendo el router) me sigue dando el mismo error. Por supuesto huelga decir que yo no me dedico a enviar spam a la web de Telemadrid. Intentaré escribir a los administradores de la página como sugieren pero soy muy escéptico.

Comentario al post de M. Platón :

Desde luego el libro tiene que conseguir explicar muchas cosas.

Como por ejemplo:

- Las cifras de siniestralidad durante esos 20 años, ¿quién las recopilaba? No me vale como respuesta que era el gobierno franquista.

- La conclusión de que en la realización de la obra los obreros  participaban de forma voluntaria me parece obscena. Supongo que el autor se apoyará en testimonios corroborables de trabajadores.

- Que un libro tan controvertido se publicite en un medio público con un comentario tan sesgado también me parece muy cuestionable.

Ahí queda mi opinión, si no es vetada de antemano.

Guillermo.

Actualización 8-9-2015: No, parece que lo tienen configurado por defecto para que no podamos opinar. Así es la libertad de expresión. Todavía tengo pendiente lo de pedírselo a los administradores. Pobrecitos, ¿qué excusa me pondrán?

Actualización 22-9-2015: Cualquier intento de contactar con los administradores de sistemas ha sido infructuoso. Esperado, pero no por ello menos decepcionante ;) Me pregunto desde qué rangos denegarán los comentarios. Ya que lo he intentado desde muchos sitios y desde todos se deniega. No hay más que decir. Adjunto captura con el error que me da. Por cierto, como chascarrillo: la IP que figura en el error está mal ya que ahora mismo lo estoy haciendo desde una IP estática y no es la que me están indicando.

Actualización 20-01-2016: Nada, parece que con el cambio de año tampoco deja. Lo dejaré por imposible. Malas noticias para la libertad de expresión.



Actualización 05-09-2016: Ahora da otro error. Bravo por los administradores de esta página. Aunque conociendo a Telemadrid seguro que los ha despedido.



viernes, 26 de diciembre de 2014

Lenguajes de alto nivel para microcontroladores

Últimamente estoy bastante interesado en la búsqueda de algún lenguaje funcional que me pueda servir para programar microcontroladores. En concreto investigo acerca de lenguajes funcionales que se puedan usar para programar las dos familias más populares de microcontroladores: los PIC y los Atmel AVR.

Hay muchas opiniones en internet sobre cuál de las dos familias es mejor que la otra. Después de leer varios post sobre este tema, mi conclusión es que ambas están muy parejas y que la elección tal vez dependa de nuevo de los gustos de cada cual. Aunque si me tuviera que decantar por alguno de los dos yo tiraría por los Atmel quizás porque últimamente son más populares que los PIC (con el apoyo de la comunidad que tiene detrás) y porque tienen algunas versiones que pueden funcionar con 0.7V de alimentación (para poder alimentarlos con una celda solar barata).

Como resultado de mi investigación (no muy fructífera) he encontrado algunos proyectos interesantes. Enumero a continuación no sólo lenguajes funcionales sino toda la variedad de lenguajes de alto nivel que he encontrado para programar microcontroladores (a parte del ensamblador del propio microcontrolador que no lo considero de alto nivel, aunque en él hay que programar las partes que requieren mayor rendimiento):
  • OCaPIC (OCaml)
  • PicoBIT (Scheme) - PIC
  • Forth: (la opción más viable, porque al menos a priori puede caber fácilmente en un micro)
    • avrforth 
    • amforth (8 a 12 KB de flash, 80 bytes de EEPROM, y 200 bytes de RAM). El amforth es muy prometedor.
    • rforth1: Un compilador de Forth para la familia 18Fxxx de microcontroladores PIC. Este mismo autor tiene también un Forth para la familia 16Fxxx de PICs.
  • .NET Micro - Aunque no investigado mucho este, parece que es sobre dispositivos más grandes.
  • uJ (Java) - PIC
  • NanoVM (Java) - Atmel.
  • B#: la "huella" en memoria es un poco grande (<24KB de flash y <2KB de RAM). Pero es un lenguaje de programación orientado a objetos específicamente diseñado para MCUs.
  • PyMite (Python): Huella de memoria grande (64KB de flash, 4KB de RAM).
  • eLua. Para MCUs muy grandes, me da la impresión.
  • ¿Alguna opción más? Seguro. Dejádmelo en los comentario y la pongo ;)
En uno de los enlaces que refiero abajo también sugieren programarse un intérprete personalizado de "pcode" que interprete un conjunto de instrucciones que tú definas.

Esto último parece una idea interesante así como también suena bien eso de poder crearse una especificación de máquina virtual que pudiera correr sobre dispositivos como MCUs. Hay algunas ya, pero visto que la JVM de Oracle/Sun son unas 200 microinstrucciones en la capa de VM parece factible poder generar un estándar o conjunto de instrucciones que pudiera servir para dispositivos de recursos más limitados.

¿Existe ya ese estándar? Porque estos dispositivos tienen una serie de características hardware que se podrían abstraer para luego poder programarlos más fácilmente.

Por último, hace poco terminé de leer y entender (que son dos cosas distintas) el paper de investigación que propició la creación del lenguaje Lisp y toda la belle époque de la inteligencia artificial de los años 80 y 90. Se trata de un artículo del gran John McCarthy titulado "Recursive Functions of Symbolic Expressions and Their Computation by Machine" (¡del año 1960! y todavía hoy en día relevante, que se lo apunten algunas mentes pensantes de nuestra época).

A partir de este paper se pueden extraer las operaciones fundamentales que dieron lugar a las primeras implementaciones del lenguaje Lisp. Con este germen tan prometedor: ¿se podría definir una VM basada en estas operaciones sobre MCUs?

En resumen:
Aunque parezca contradictorio, el poder programar un microcontrolador (MCU) con un lenguaje de alto nivel diferente a C (y al ensamblador, que de por sí no se puede calificar de alto nivel) aunque pueda resultar una idea peregrina a mí al menos me resulta altamente interesante. Máxime cuando la tendencia es que haya cada vez más dispositivos "embebidos" / empotrados / móviles como son los que constituyen la "Internet de las cosas" (IoT ó Intenet of Things en inglés).

¿El futuro o el pasado? Dejo al lector elegir.

Enlaces:

miércoles, 4 de diciembre de 2013

Características de las diferentes versiones de Java

A partir de Java 5 (1.5 en la numeración estándar de Oracle/Sun) se añaden a este lenguaje algunas características muy interesantes que intentan acercarlo a otros lenguajes "más modernos" diseñados "para el siglo XXI". Me refiero por ejemplo a Ruby, Python, Scala, etc. Enumero a continuación cada una de ellas, con la esperanza de poder hacer un artículo de cada una en el futuro.


Java 1.5


  • Genéricos (generics)
  • Bucle "for/in" (for/in loop)
  • Autoempaquetado/desempaquetado (autoboxing/unboxing)
  • Enumeraciones seguras con tipo (typesafe enums)
  • Argumentos variables (varargs)
  • Importaciones estáticas (static imports)
  • Anotaciones/metadatos (annotations/metadata)

Java 1.6


  • Servicios web y procesado de XML (web services and XML processing)
  • JDBC 4.0
  • Programación basada en anotaciones (annotation-based programming)
  • APIs de compilación de Java (Java compiler APIs)
  • APIs de escritorio (desktop APIs)
  • Scripting


Java 1.7


Las características de Java 7 y 8 están sacadas de la página web de OpenJDK, que tiene un formato bastante interesante en plan tabla "plain text".

Category    Description
================================================================================
vm          JSR 292: Support for dynamically-typed languages (InvokeDynamic)
            Strict class-file checking
lang        JSR 334: Small language enhancements (Project Coin)
core        Upgrade class-loader architecture
            Method to close a URLClassLoader
            Concurrency and collections updates (jsr166y)
i18n        Unicode 6.0
            Locale enhancement
            Separate user locale and user-interface locale
ionet       JSR 203: More new I/O APIs for the Java platform (NIO.2)
            NIO.2 filesystem provider for zip/jar archives
            SCTP (Stream Control Transmission Protocol)
            SDP (Sockets Direct Protocol)
            Use the Windows Vista IPv6 stack
            TLS 1.2
sec         Elliptic-curve cryptography (ECC)
jdbc        JDBC 4.1
client      XRender pipeline for Java 2D
            Create new platform APIs for 6u10 graphics features
            Nimbus look-and-feel for Swing
            Swing JLayer component
            Gervill sound synthesizer [NEW]
web         Update the XML stack
mgmt        Enhanced MBeans [UPDATED]

Java 1.8


Category    JEP     Description
================================================================================
--/--       126     Lambda Expressions & Virtual Extension Methods
            138     Autoconf-Based Build System
            160     Lambda-Form Representation for Method Handles
            161     Compact Profiles
            162     Prepare for Modularization
            164     Leverage CPU Instructions for AES Cryptography
            174     Nashorn JavaScript Engine
            176     Mechanical Checking of Caller-Sensitive Methods
            179     Document JDK API Support and Stability
vm/--       142     Reduce Cache Contention on Specified Fields
vm/gc       122     Remove the Permanent Generation
            173     Retire Some Rarely-Used GC Combinations
vm/rt       136     Enhanced Verification Errors
            147     Reduce Class Metadata Footprint
            148     Small VM
            171     Fence Intrinsics
core/--     153     Launch JavaFX Applications
core/lang   101     Generalized Target-Type Inference
            104     Annotations on Java Types
            105     DocTree API
            106     Add Javadoc to javax.tools
            117     Remove the Annotation-Processing Tool (apt)
            118     Access to Parameter Names at Runtime
            120     Repeating Annotations
            139     Enhance javac to Improve Build Speed
            172     DocLint
core/libs   103     Parallel Array Sorting
            107     Bulk Data Operations for Collections
            109     Enhance Core Libraries with Lambda
            112     Charset Implementation Improvements
            119     javax.lang.model Implementation Backed by Core Reflection
            135     Base64 Encoding & Decoding
            149     Reduce Core-Library Memory Usage
            150     Date & Time API
            155     Concurrency Updates
            170     JDBC 4.2
            177     Optimize java.text.DecimalFormat.format
            178     Statically-Linked JNI Libraries
            180     Handle Frequent HashMap Collisions with Balanced Trees
core/i18n   127     Improve Locale Data Packaging and Adopt Unicode CLDR Data
            128     BCP 47 Locale Matching
            133     Unicode 6.2
core/net    184     HTTP URL Permissions
core/sec    113     MS-SFU Kerberos 5 Extensions
            114     TLS Server Name Indication (SNI) Extension
            115     AEAD CipherSuites
            121     Stronger Algorithms for Password-Based Encryption
            123     Configurable Secure Random-Number Generation
            124     Enhance the Certificate Revocation-Checking API
            129     NSA Suite B Cryptographic Algorithms
            130     SHA-224 Message Digests
            131     PKCS#11 Crypto Provider for 64-bit Windows
            140     Limited doPrivileged
            166     Overhaul JKS-JCEKS-PKCS12 Keystores
web/jaxp    185     JAXP 1.5: Restrict Fetching of External Resources



Semántica de las categorías:

vm:     comp, gc, rt, svc
core:   lang, libs, i18n, net, sec, svc
client: gui, sound
web:    jaxp, jaxb, jaxws, corba

lunes, 9 de septiembre de 2013

Error 404 friki

Retomando un poco este mi blog, os pego un error 404 (página no encontrada) que me pasaron el otro día. Es del sitio web GitHub (para colgar código y gestionar proyectos de software libre, uno de los sitios más populares). Siesque, al final, somos todos igual de frikis :D

Error 404 friki