domingo, 28 de abril de 2013

ShareIt! 1.1.1: Cloverfield

During the last weeks I was not able to publish too much here, specially because I'll start my exams the next week. But, since I got to be able to publish ShareIt! as my practice for my Networks-II class, I've been able to dedicate some time to it (maybe too much compared with the other asignatures... :-/ ) and develop some improvements directed by my tearcher Luis López, just in time not only for the lecture of the practice (tomorrow Monday on the morning :-P ) but also for the final phase of the championship, so here I'm showing to you the third public release of ShareIt! 1.1.1 "Cloverfield" (and no, although is the third release, the version is not written in unary ;-P)

It would be a fairly minor release because it only have two issues, but the fact is that it required some work on another ones and has added some great features and improvements on the architecture:

Manage duplicates: one of the problems that had ShareIt! previously is that since it was using the files hashes as unique identifiers of the files, if one of them was included twice only one of the copies whas showed (and served) also if it has different names. The solution was to identify them independently so both entries would coexist, and the ideal solution was to use the file's path. But what happens with the hashes? How I would be able to look for them if I'm not using them anymore as keys? I have been been putting off this thing a lot of time up to the point I didn't remember why I didn't do it before... and when I remembered it, I desired to forget it again.

IndexedDB: the reason why I have been been putting off so much the management of duplicates is because the optimal solution was to use IndexedDB's indexes, in fact a keyPath (multiple fields) for the primary key, and a non-unique index for the hashes (so they would be duplicated). What's the problem? Chrome hasn't still fixed the support of Blob and File objects inside IndexedDB (after almost one year and a half...), so I was alone using my polyfill. Two options: accept it, and told the reason to my teacher, or get mad myself, go for it and implement index support on my polyfill. At the worst, I would reuse later on my upcoming implementation of IndexedDB for Node.js for the headless version of ShareIt!... So I went directly for it, and after 8 hours listening to Daft Punk and the discography of Ke$ha and Demi Lovato (no comments), I got support for indexes on my own (in-browser, memory-only) pure Javascript IndexedDB implementation. #feelingLikeABoss... B-)

Sharedpoints: after that achievement another interesting point would have been detecting when a file has been added to a sharedpoint so it could be shared automatically without adding it by hand. Until this moment it was only able to detect when a file was deleted so it would be removed since I was using an input tag and its FileList object, that's mainly a photograph of the files that where available when the user selected it (although you can detect when it has beem removed checking an error when accessing to a file), and also it was done in a not maintable way, being all the management of the sharedpoints inside the hasher. Taking that in account, I decided to develop a new sharedpoint using DirectoryEntry from scratch, so I could be able to take in account the diferences and make it more portable. Now is fairly easier to add new types of sharedpoints like the ones I have been thinking about for Dropbox and Mega, and also I have been thinking about consider that internally the other peers would work as sharedpoints so I could simplify the way to access to them. Problem is, that I didn't notice until I finished it that Chrome has another bug not populating entries on the input tag and also I didn't be able to make drag&drop to work (this probably my fault...) so I've let this to be finished later.

And lastly by not least, the biggest feature added to this release and the one that made me think about tagging it as a mayor one, is the fact that now we have searches!!! :-D It's very primigenic and required some hacks (the fileslist is being shared between the peers after connection, having all of them the info of what are sharing others), but thanks to Lun-r.js now we can search by keywords, giving us a list of the files and hashes that correspond the them ready to be downloaded. It need some improvement in the future (like for example sending request to the others) but definitely it works :-)

But the reason why I didn't released it as a mayor release besides the fact that it has few (but important!!!) improvements, is that it will be the last of the 1.x series. This week I've discovered that ShareIt! doesn't work on Chrome browsers equal or newer than the current stable v26 because some API changes (the ones that almost crash the 1.1 release some weeks ago), so being only able to work on a legacy browser (Chrome v25) with my DataChannel-polyfill and without time in the next weeks to fix it because of the exams, I've decided to go directly to the 2.0 version after that and start using native DataChannels (I hope that by then reliable support will be implemented...), try to remove all the polyfills and develop all the backward incompatible features of the new protocol, like multiple and independent channels per PeerConnection on WebP2P or change the protocol to be RPC-based to increase reliability.

Good luck DataChannel-polyfill, and thank for the fish! :-D

martes, 16 de abril de 2013


I know that at this moment the WebP2P library is very tied to ShareIt!, specially because the universitary championship requires to have only one repository, but since I'll split it in the near future and in prevention of stealing it, I've decided to bought the (rather expensive...) domain WebP2P.io to host there the library project, focused in allow a server-less and distributed signaling channel for WebRTC applications. At this moment it only host a default webpage, but in the next weeks after I split the code I'll fill it with more info :-)

lunes, 15 de abril de 2013

Yoigo no cuida sus clientes, verdad verdadera

Hoy voy a dejar de hablar de ShareIt! para hacer una queja publica, de ahi que la entrada sea en español.

Recientemente he tenido problemas con mi telefono movil, los cuales el operador Yoigo (con el que tengo contratada la linea) no ha querido hacerse responsable de ellos sino que encima me han tratado con prepotencia y desden y se han estado pasando responsabilidades unos a otros, motivo por el cual estoy muy seriamente decidido a cambiar de compañia (a no ser que ahora se me presenten con que me regalan un movil nuevo, lo cual haria pensarmelo segun cual sea el modelo...). Despues de un mes peleandome con ellos al final les critico en Twitter, momento en el que entran a razones y me piden que les envie un email contandoles mi problema. Pues bien, este es el email que les he mandado (cuidado, es largo):

Buenas tardes, tal y como os comente por Twitter, aqui muestro las
razones que me han llevado en menos de un mes de querer renovar mi
telefono movil con Yoigo e incluso recomendar Yoigo a mis conocidos
(especialmente porque es la unica compañia de las grandes con la que
no siento que me estafan con las tarifas), a estar decidido a cambiar
de compañia de forma inmediata.

Actualmente, poseo un telefono movil Samsung Galaxy SCL que me
ofrecisteis de regalo hace algo menos de año y medio como contraoferta
cuando intente cambiarme de compañia al terminar mi periodo de
permanencia. El motivo por aquel entonces fue que mi telefono habia
sido robado meses antes y desde atencion al cliente se desentendieron
del problema incluso despues de haber puesto una denuncia, por lo que
despues de varios meses pagando por un terminal y una conexion a
internet de los que no disfrutaba y tener que usar un movil antiguo
que tenia perdido por casa, decidi cambiarme para obtener un nuevo
terminal puesto que el internet en el movil se me habia hecho algo
imprescindible. Sin embargo, como contraoferta me ofrecisteis el
telefono antes citado totalmente gratis, y viendo que era un buen
detalle decidi continuar con vosotros.

Volvamos al presente. Dicho terminal empezo a darme problema de
bateria hara medio año, llegando dificilmente al final del dia. Es
normal, las baterias se ceban.. pero desde navidades ya empezo a darme
problemas mas serios: la interfaz se notaba pesada e incluso saltaba
el salvapantallas sin llegar a reaccionar, se sobrecalentaba en exceso
hasta el punto de no poder sugetarlo con la mano, se reiniciaba solo e
incluso a veces despues de tenerlo recien cargado, lo guardaba en el
bolsillo y al cabo de una hora notaba que me quemaba la pierna y la
bateria estaba completamente agotada. Sin embargo, aunque ya la
bateria me duraba unas 6 horas, desde semana santa la duracion ha
caido en picado hasta apenas 4 horas, ademas de que el terminal empezo
a hacer cosas raras como cortar llamadas (no me duran mas de dos o
tres minutos), pasar de estar con 4 rayas y 3G activado a un segundo
despues decir que no hay cobertura y un instante despues volver a
conectarse mediante roaming, bloquearse por completo teniendo que
sacar la bateria para reiniciarlo, apagarse y decir que la bateria
esta agotada pero despues indicar al recargar que esta por encima de
la mitad...

Debido a todo esto, empece a mirar terminales de Renuevo. Faltaban
menos de dos meses para el fin de la permanencia y estaba muy contento
con vosotros, asi que decidi continuar con vosotros. Mirando los
terminales que teniais disponibles vi que me ofreciais el Galaxy Note
II por 15€ al mes durante 24 meses, y puesto que no tengo tablet y me
vendria bien para estudiar los apuntes de la universidad, decidi ir a
por el.

Primer problema: mi telefono estropeado sigue en permanencia, y aunque
estuviera convencido de desear continuar con vosotros y ademas con una
permanencia de dos años y pagando un telefono movil caro, me indicais
que tengo que pagar la penalizacion de la permanencia del telefono
antiguo. ¡Pero si esta estropeado y no funciona, y ademas voy a seguir
con vosotros y no me voy a ir a la competencia! Idealmente al estar
permanencia y garantia lo suyo seria que se me ofreciera otro terminal
totalmente gratis en su lugar. Pues nada, que la unica solucion es o
pagar la penalizacion, o aguantar estos dos meses... Visto lo cual,
creo que lo mejor es intentar arreglarlo ya que no tengo ningun otro
terminal y ademas necesito estar conectado 24 horas por el trabajo y
las clases.

Segundo problema: en la tienda se me indica que la reparacion tardaria
25 dias, durante los cuales no podria disponer de mi telefono ni de
ningun otro ya que no tienen telefono de sustitucion disponible (¿no
pueden abrir una caja de los que tienen en la trastienda y dejarmelo?
Ademas, les serviria de demostracion y prueba de los nuevos terminales
y la gente podria convencerse de usarlos...), aparte de que me
dejarian uno antiguo que solo sirve para llamar con lo que estaria
pagando por un internet que no solo uso sino que necesito por trabajo.
Al no ser esta una solucion viable, decido llevarlo directamente al
servicio tecnico de Samsung, que no solo esta cerca de mi casa, sino
que ademas tardan solo una semana en lugar de los 25 dias que tardaria
dejandolo en tienda.

Tercer problema: el telefono lo recibi directamente por mensajero, sin
tener ningun documento que certifique que soy su propietario. Decido
acercarme a la tienda solicitando una copia de la factura la cual me
deniegan y me entregan un "Certificado de Activacion de IMEI"
indicandome que con eso puedo ir al servicio tecnico sin problemas. Es
lo que hago... y alli me indican que "ese papel no vale nada, no es
mas que una plantilla que rellenan con el Word en la tienda y le ponen
un sello, necesitan una factura aunque sea de cero euros al ser un
regalo o un albaran de entrega", y tambien que estan hartos y cansados
de tener que explicarles a los clientes de Yoigo siempre la misma
historia, dejando a los clientes insatisfechos por un problema que no
es suyo sino de Yoigo. Por otra parte, en el servicio tecnico me
indican cual es el problema y que la unica solucion es sustituirlo por
un terminal nuevo especialmente estando en garantia, ya que es un
fallo de diseño de fabrica de este modelo en concreto (la CPU y el
chip de memoria se calientan en exceso y se producen los fallos que he
indicado antes).

Cuarto problema: ante esta situacion, vuelvo a la tienda solicitando
una copia de la factura tal y como me indicaron en el servicio
tecnico, diciendome igualmente que son tonterias suyas y que deberian
aceptarme el certificado (la misma historia que el servicio tecnico
oficial de Samsung, pero cambiando los roles). Al ser incapaz de
ofrecerme una factura puesto que el terminal no fue vendido en tienda
sino por "internet" (realmente fue una contraoferta por telefono,
aunque supongo que se referiria a que internamente los procedimientos
serian los mismos en ambos casos...) que llamara a Atencion al Cliente
en la central (telefono 622). Una vez ahi, me confirman la situacion y
proceden a enviarme la factura, indicandoseme que la recibiria durante
la semana pasada. Al no tener noticias de vosotros decido volver a
llamar y me notificais que eso es totalmente imposible, puesto que
hace meses que no enviais facturas, que no teneis medios materiales
para hacerlo posible y que la chica que me atendio se debio confundir,
que si quiero una factura la solicite en tienda, aparte de decirme la
encargada de seccion que "tuviera cuidado" porque no sabia si al
utilizar un servicio tecnico distinto al de Yoigo lo cubriria la
garantia (¡pero si lo iba a llevar al servicio tecnico oficial!)
notandose en su tono de voz como una amenaza.

Quinto problema: otra vez en la tienda me cuentan la misma historia de
solicitarla a la central, momento en el que llamo directamente desde
la tienda para que se pongan de acuerdo y al final todo se aclara
resultando que no se dan facturas de ningun tipo, lo cual despues de
consultarlo en Consumo me notifican que es algo ilegal y que Yoigo
esta obligada a otorgarme una factura y permitirme llevar el terminal
directamente al servicio tecnico oficial si asi lo deseo. Sin embargo
tambien me notifica que el proceso tardara unos tres meses y lo mejor
que puedo hacer por el momento es aceptar el servicio tecnico de
Yoigo, el cual me dejara sin telefono durante casi un mes.

Sexto problema: visto lo cual, acepto mi derrota y ante la vision de
estar sin terminal decido pagar la penalizacion de la permanencia de
mi movil estropeado y solicitar el Galaxy Note II que queria... solo
para encontrarme que mi oferta especial ha desaparecido y que ahora el
terminal cuesta 20€ al mes, un 33% mas que antes, haciendo que tenga
un precio comparable a comprarlo libre y perdiendo la oferta de
cualquier interes. Quizas se pueda argumentar que sea por haber bajado
mi consumo ultimamente (lo cual me pareceria algo realmente rastrero),
pero lo cierto es que el hecho de "dosificar mis llamadas" ultimamente
es por el hecho de que no me duran mas de dos o tres minutos antes de
cortarse y apagarse el movil, motivo por el que solo hago las
imprescindibles. Asi pues, el ultimo punto que despues de toda esta
historia todavia me hacia plantearme el seguir con vosotros habia
desaparecido, asi que a partir de ahora ya no habia nada mas que me
mantuviera unico a Yoigo.

Asi que esta es mi situacion: un servicio de atencion al cliente que
me ningunea e ignora mi interes en querer seguir siendo cliente
vuestro, un servicio tecnico lento y deplorable que me da mas
problemas que soluciones, falta de coordinacion entre los distintos
miembros de la empresa "pasandose la pelota" unos a otros y delegando
responsabilidades en los demas y viendo recientemente que las "ofertas
exclusivas" no son tan exclusivas y que hay otras compañias ofreciendo
tarifas similares sin requerirme mantener permanencias de ningun tipo,
he tomado la decision de que cuando termine mi permanencia dentro de
poco mas de un mes (justo el tiempo que estara mi terminal en el
servicio tecnico) solicitare la liberacion de mi terminal y la
portabilidad a otra compañia mientras espero a que la reclamacion en
consumo me otorgue la factura para poder reparar y actualizar mi
terminal en los restantes 6 meses de garantia que me ofrece el

Sin otro particular y esperando su respuesta con sus impresiones al
respecto de mi sucesion de problemas con su compañia, se despide Jesús
Leganés Combarro.
A lo cual, solo se han dignado a responderme con un escueto, insulso y autogenerado mensaje:
Buenos días,

Por favor, facilítanos tus datos (nombre, apellidos, DNI y número de línea) para pasar tu correo al departamento correspondiente.

Un saludo.
En resumen, que siguen pasandose la pelota unos a otros, y ahora mi movil esta totalmente muerto durandole la bateria menos de 10 minutos desde esta mañana y estoy pagando por un linea y un servicio que no estoy recibiendo a pesar de estar el movil en permanencia y en garantia.

Definitivamente, Yoigo no cuida a sus clientes, verdad verdadera. Oh Amena, mon amour...

lunes, 8 de abril de 2013

ShareIt! 1.1: Braveheart

Today is an epic day for ShareIt!. Lately I have been able to use the project for my networks class, and this "extra time" about working on in during my study time and also with the guidance of my teacher have lead me to make some great improvements on it, and now I'm proud to show you ShareIt! 1.1: Braveheart.

This new release not only has a lot of bugfixes, but also has a really better code structure that would allow to be easier to accept external collaborations and start adapting it to became a general purpose P2P framework, but also some great improvements on security, being the most important one the fact that now it uses by default anonimous XMPP servers to manage handshakes while being still compatible with the old system using PubNub, connect automatically to other peers on load to start creating a network mesh and speed up the connections, and not only that, now it's integrated a mobile version of the application, so if you access from your mobile phone or tablet you will be able also to use it and transfer files wherever you are. Also, all this things are ready not only for my tearcher's revision that I have in some hours that also for the keynote I'll have this afternoon at #JoinBiz10 :-D

So here you are, happy testing and don't forget that the user feedback, issues and pull requests are always welcome... :-D

sábado, 6 de abril de 2013

ShareIt! working on anonimous XMPP (at last!!! :-D )

It was fairly more difficult to achieve that what I though at a first, but finally now it has been possible: ShareIt! is using an anonimous XMPP server to do the initial handshake instead of PubNub, so now it's not using a centralized server (it keeps the DataChannel-polyfill backend, but it's a matter of some more weeks until native support gets more stabilized) and it's using a distributed, federated network. I needed to change several things on the protocol and the implementation so now the inter-peers routing doesn't work, but I hope to fix it easily after changing WebP2P to be able to use several DataChannels at a time. This is really a HUGE step on the project viability, by the way, and just in time for the next milestone... :-D

jueves, 4 de abril de 2013

ShareIt! on #JoinBiz10

 I have been selected to do the next monday a keynote (really, a 'lighting talk') on the #JoinBiz10, an entrepreneurship event where interesting IT projects can meet managers and MBAs and viceversa. Leets see if I can get some patrocinators for ShareIt!... :-D

And in other news, my networks teacher has accepted to use ShareIt! as final practice and has give me some guidance, and also I have just got to use XMPP instead of PubNub as handshake server. Please don't change the dial... :-P