Páginas

Mostrando entradas con la etiqueta internet. Mostrar todas las entradas
Mostrando entradas con la etiqueta internet. Mostrar todas las entradas

miércoles, 21 de agosto de 2013

Teaching the hard way

When we teach kids to ride a bike, at some point we have to take the training wheels off. Here’s an idea. When they hit eleven, give them a plaintext file with ten-thousand WPA2 keys and tell them that the real one is in there somewhere. See how quickly they discover Python or Bash then.
EPIC

jueves, 30 de mayo de 2013

Achievement unlocked

Banned from W3C Restricted Media mail list for being critic with EME & DRM on HTML5. I love to be on the first line of fire... >:-D

martes, 16 de abril de 2013

WebP2P.io

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, 25 de marzo de 2013

P2P networks everywhere

A lot of people has said already that WebRTC and Peer-2-Peer comunications in the browser would be the next Internet revolution ("Internet 3.0", they call it), but I wouldn't suspect that this would start so soon: the next 7th April will be released PeerKit, the first WebRTC P2P enabled application (besides my P2P filesharing application :-P ), this case oriented as a distributed, zero cost Content Delivery Network. I don't know how effective or speed it would be (search a peer with the data, delegate the request...) and there's the problem of using the client connections to distribute the content (and with mobile phones connections this would be a serious problem), but don't doubt that if it works the server costs will drop abruptly world-wide... :-D

sábado, 23 de febrero de 2013

if you can not beat them, get yourself a window and jumps

During the last six months I have been waiting for just-this-week. Why? Easy: last wednesday was the expiration day of the best domain for the project: share.it. The fact is that it was abandoned (although being a good one...) so I waited for it, but at the last moment it was renewed for one more year without any reason, and in fact currently is empty and also without a parking page. I tried to contact with it's current propietary without success, so the best option was to forget about it.

...until yesterday. I was reading the newspaper during the lunch time when I saw a full page ad from a new domain provider offering .es domains for 5€, and then got an idea: I checked out for share.it, shareit.com, shareit.net... without success, but NOT for shareit.es!!! So I quickly runned to the free-access room just to find that for inaugural promotion, the domains will be for a week at just 1€... and that the .es was free :-)

So here we are, I'm proud to show you the new ShareIt! home page, ShareIt.es:


It needs some clean-up and to fill it a little, but it a good start :-)

Also, if someone can reach me the infamous .it domain, I will thank him indefinitelly :-P

lunes, 11 de febrero de 2013

Admiration


With comments like this...

I have not the pleasure of meeting this guy personally, but I know his work and I can tell you that is available to very few. And when you consider their age and other circumstances, we can say that is one of a kind.
So what can I say. He is good and he knows it, his work is there and anyone who knows what this is all he knows. A wretched HR dauber come to waste your time and make stupid questions, I see it a lack of respect. The problem is from the HR department who have failed to assess their profile before interview. Does negotiate their contracts a top player like a regional division one? That's it.
And finally, I think you confuse arrogance with pride. If usually we would had a little bit of pride in this sector, sure we all would go much better.

...you, dear stranger, made me smile :-)

Ok, the Slashdot effect thanks to this publicity was not bad, too... :-P

sábado, 9 de febrero de 2013

Finalist on T3chFest!

With a punctuation of 19.2 over 20 and currently in the second position on the classification (the first one is for an universitary social network, that being the truth, I would love to see it being used as my university virtual campus... :-D ), I've been finalist on the T3chFest and the next friday I will present ShareIt! in front of a crowd of 70 persons and also compete for the final points for the first position :-D It will be recorded and also streamed, so I will upload the video when I get it :-)

A little bit more work, and the next step the final of the national Universitary Free Software Championship! :-D

lunes, 28 de enero de 2013

When ShareIt! met Gnutella...

On the recent post on HackerNews has appeared a curious comment:
Hmm, it sounds like you're reimplementing Gnutella for the browser, which is not necessarily a bad thing!
I've never been a P2P guy since I was connecting to Internet using neigtbours wifi (and it was already dificult to do just plain e-mail and web surfing...), so the other times I read about how the diferent P2P protocols worked I only got the more superficial idea. That's the reason why this comment got my interest and take a look on wikipedia.

But this time it was diferent: I'm developing my own P2P protocol, so now I know what all that words means, and maybe just a trick of my unsconscious or maybe just serendipity, but I got a good surprise... both protocols and priorities ARE ALMOST THE SAME!!!! :-D This have two direct implications:

  1. ShareIt! and the WebP2P protocol are not a total innovation "of my own", so this would be a little bit annoying (the "not invented here" complex... hey, what's the matter? I was raised using Macintosh... :-P )
  2. on the other hand, having both projects the same concepts in mind I could learn from their errors, and also adapting the protocol to use theirs and creating proxies in the same way of the SIP-over-WebSockets ones, I would be able to access to the currently in active most used P2P network in the world by free :-D
I don't know, but by the moment, I'll try to send an email to the Gnutella guys to see what's happens... :-P

sábado, 26 de enero de 2013

Unexpected consequences

Yesterday I published about WhatAreYouDownloading, isn't it? Ok: this morning his author ShirsenduK has finally uploaded his project to internet, but also it put a post on HackerNews about it. I can only say one thing:

What a madness!!! :-P

The fact is that in just some hours that's got crazy and people it's totally enthusiasmated about my project and they are forking, publishing and starring it on GitHub like there's no tomorrow!!! And the same it's happening with WhatAreYouDownloading. In fact, in just 8 hours I've got a 50% more stargazers than in the previous 6 months. Pfeu! :-P However, the most annoying thing I found reading the HackerNews comments (appart from some interesting links about networks and P2P security) was:

An in-browser BitTorrent client using my technology?!?! O_o

I don't know if I should get happy about building it, or get angry because nobody told me it... :-P

Also, one unexpected side effect of so much forks is that I didn't knew that they are done also with their branchs, so the production branch is also being copied... and automatically published by GitHub :-D This has lead me to the decision that it's the best for the project to split WebP2P on an independent project and improve the documentation to make sure that all this forks follow a common standard and can keep living, whatever finally happens with the championship regarding to the source code repositories.

Finally, the revolution it's starting, and I have first row tickets and a pop-corn bucket to see it... :-D

Dear Santa...

...although a little bit late (or very early, it depends how do you see it) I'm writing to you to say that I've been a good child and I want this t-shirt:


Or if not, I want a pony. Or both things. Whatever it's easier to you.

Loving, Piranna


:-P

viernes, 25 de enero de 2013

The cake is NOT a lie

One month ago I published a post asking about if I could be able to get something better than a job thanks to ShareIt!... this week I got the answer to this question: that ShareIt! would be used as a basis for a product on a multi-national company :-D

This week I received an email from Shirsendu Karmakar, an engineer at SlideShare (recently bought by LinkedIn) telling me that he was impressed by ShareIt! and that he will use it for a free an open project. It's nice to know about it... but it's nicer that he give me administrator priviledges on the repository without asking about it :-P

So WhatAreYouDownloading it's mainly a fork of ShareIt! with a cleaner interface based on Bootstrap instead of plain jQuery (that by the way I was thinking about it at a first for UI homogeneity, althought it didn't fit too well with my original desing and I dropped it very early on the development process) but with a radical UI design more minimalistic (it reminds me to Windows 8 Metro) using dialogs instead of tabs for the diferent sections and, being sincere, with a better fit for mobile phones :-)

Main screen
Sharing "tab", now a dialog, the same as the other ones :-)
Also he linted the source code and did a code organization fairly interesting, using WebP2P as a library although I didn't finished yet to isolate it. What a nice piece of cake... :-)

The best of all, since it's just an aesthetic (and code) make-up, the WebP2P protocol is intact so WhatAreYouDownloading it's totally compatible with ShareIt! that was one of the design purposses I had in mind during development (allow others to develop their own applications being compatibles with other ones using the same protocol), so this made me think that I should split ShareIt! and WebP2P source code as soon as possible to allow more applications like WhatAreYouDownloading to appear :-) As a first approach, I'll try to re-merge the linted code inside ShareIt! source code tree and sync WhatAreYouDownloading interface to the latest modifications of ShareIt! code so they could interoperate better, let's see later where the rabbit's hole ends... :-P

miércoles, 2 de enero de 2013

How to hack a contest

During the last two weeks until the end of the year there was a contest on the Youth Card of Madrid webpage about finding their mascots dressed as the Three Wise Men.

The fact is that I have been looking for them and only found two of them, so I decided to make a mirror of the page and looking for locally... just to find that in fact there were only two of them ¬¬ After sending them an email to know if it was a bug or a bad trick, they confirmed me that the third one only will appear from time to time since she (it's the girl with glasses ;-) ) is very shy, but will appear at least one time until the end of the year on the morning. I didn't wanted to be pushing F5 all the time but I want to win one of the prices, so I decided to do it my way.

Challenge accepted

The first of all is to be able to know how to identify if one of the mascots is on the page, so when I founded one of them, quickly I went to the Chrome Inspector to look on the page content, seeing references to a nice "navidad2012" folder and that the animated icons where made on Flash. Now I know what to look for, so now it's time to know where to look for. Since the page is mainly static (bizarre, I know, but what would you expect from a gubernamental institute? :-D ), for this I've made a mirror of the website on my local harddisk using wget so I could be able to look on their files for that string. Since wget show a lot of output, I'll silence it with the quiet argument:
wget -mq http://$BASE_URL
and later, searched on all the files using grep looking for the previous checked folder and for the Flash files, getting only the path of the files that have them:
grep -lR 'navidad2012/.*\.swf' $BASE_URL/*
Now it's time to get notified by mail when the pages where found. This was a little bit complicated since GMail protect itself for sending spam, so some additional config steps are required so we send the emails authentificated with our own account. First of all, we need to install the mailutils package for the mail command and ssmtp package for the output mail server:
sudo apt-get install mailutils ssmtp
and later configured the smtp server following these instructions (I didn't need to follow the steps regarding removing sendmail, so maybe it's not yet necesary at all). After that, we now are able to send emails from the command line (content is introducced via the standard input):
mail -s "$BASE_URL" "$EMAIL"
But receiving an email each time it checks it is not a good idea since we are only interested to check it when we have the Three Wise Men, so we'll check it before:
FILES=$(grep -lR 'navidad2012/.*\.swf' $BASE_URL/*)
WISE_MEN=$(echo "$FILES" | wc -l)

if [ $WISE_MEN -eq 3 ]
then
   ...
if
Now it's time to let this run each 5 minutes. A simple infinite loop and sleep would be enough, but removing the useless files if we didn't found what we wanted would be nice (after being sure to don't remove them using break on the condition)...:
while :
do
   ...
   rm -r $BASE_URL
   sleep 5m
done
Et voilá! Now it only needs to add some echo messages to now how it's working when I'm on the machine (mainly studying for the exams I have after holydays... ¬¬), remove all data before starting to work, a shebang and execution permissions and now I can be able to go to the gym without worrying to don't get the prize :-D

Full code of the script:
#!/bin/bash

BASE_URL=www.carnejovenmadrid.com
EMAIL=piranna@gmail.com

rm -rf $BASE_URL

while :
do
    wget -mq http://$BASE_URL
    FILES=$(grep -lR 'navidad2012/.*\.swf' $BASE_URL/*)
    WISE_MEN=$(echo "$FILES" | wc -l)

    if [ $WISE_MEN -eq 3 ]
    then
        echo
        echo "*** FOUNDED 3 WISE MEN!!! ***"
        echo "$FILES"

        echo "$FILES" | mail -s "$BASE_URL" "$EMAIL"
        break
    fi

    echo "Only found" $WISE_MEN "wise men at"
    echo "$FILES"
    echo "Removing files"
    echo

    rm -r $BASE_URL
    sleep 5m
done

jueves, 27 de diciembre de 2012

How to run Chromium v26 on Ubuntu

As you would know, since several months ago there's no official Chromium Nightly builds PPA, but since last week was enabled the support for native DataChannels on Chrome Canary (yeah!!! :-D ) I was decided to test it whatever it cost.

To do it, here we have two options: Canary versions only available for Windows, or hack a way to get to run a Nightly release on Linux. The Canary was fairly easy, just reboot on my dust-filled Windows partition, but to test and debug DataChannels-polyfill was a PITA thanks to Windows files protection idiosyncrasy so this morning I've managed to achieve the second method... and won :-D

First of all, we need to get a Nightly build. We can download or compile it by ourself, but I find fairly better to use this script that also makes a backup of previous versions, a command called chromium-cont to distinguish it from the stable one, and create a shortcut on the apps menu. Just a piece of cake. The problem here is that it's a vanilla compilation of Chromium, so it will try to use our default profile and if we have a previous version of Chromium running, it will just open a new window tab on it, so we'll need to launch it with a flag telling him a new folder where to store his config info. A good one would be ~/.config/chromium-cont, to be on pair with Chromium and Google Chrome config folders:
--user-data-dir=~/.config/chromium-cont
To do this just add the flag when launching from command line, or to add it to the shortcut right-click on the apps menu, select "Edit menus" and navigate up to "Internet > Chromium Updated" and set it there. Another option would be to just change the chromium-cont symlink to a full-fledged shell script that also pass automatically the selected config folder (more or less what Chrome Canary does) so it will be used everywhere is being launched, but I'll leave this as an exercise for the reader :-)

Finally, to enable native DataChannels on it you will have to add a --enable-data-channels flag when launching it, or better put on the browser navigation bar "about://flags", scroll down to the bottom of the page and click on "Enable RTCDataChannel". Now you have a full fledged Chromium v26 ready to start experimenting with native DataChannels directly from Linux!!! :-D

jueves, 6 de diciembre de 2012

I have competence!

It was really a surprise when on the ShareIt! commits network graph I see a new history line under mine. Who is that guy? What's doing? And why didn't tell me he is working on my code?

QuickShare is a little web page whose only purpose is just share files between two peers though an intermediate server using websockets in a similar way to how PasteBin works, that it's exactly the idea I had when started to build ShareIt! up to the most minimal details before knowing the existence of the WebRTC technology and changed it to a full fledged P2P filesharing application. The truth is that is not using my code at all... it's a fork done directly from the same commit of DirtyShare where I started ShareIt! so our projects are somewhat siblings :-P

But hey, at least I would be able to use its terms of use as basis for my own ones... :-D

sábado, 1 de diciembre de 2012

A game changer

The last week I told you about the crazy weekend I had with the ReatTimeWeb conference and the 3DS seminary, but also I promised you to talk about some ideas they give me related to the signalling problem. Ok, here we go: they worked :-D

The problem is simple, althought not easy to solve (someone told me I touched the Holy Grail of Internet... :-P ): a web browser on a LAN can go and surf over Internet without problems, since it's a request from the internal network to a server the bigger Internet, there's no mistery here. Since this way every browser can access to Internet, they could be able to be reached on the other way from one browser to another, but how to do this without using a server, or at least without deploying a custom one, just using currently available Internet technologies?

On a first point, I though about SIP, and specially SIP-over-WebSockets, a specification to use WebSockets as transport layer for SIP communications instead of plain BSD sockets (and whose author I was able to meet and talk on person on the conference :-) ). I worked hard here until I got noticed by a bad point: public SIP servers require to have a registered account somewhere to allow to connect to them, what breaks annonimity in a very bad way (and having the user to create a new random account on every page reload it's all except user friendly...). Thinking about it, I took a look at XMPP (Jabber), since being a from-the-people builded protocol it would probably to have an annonimous session option... and yes, it has it, but only on the EJabberD server implementation and any of the public servers has it enabled. End road.

Being so frustated by not being able to send a little piece of text from one end to another one without a server or a previously created PeerConnection (who give us up to the chicken-or-the-egg problem...) and not being able to use directly the STUN servers (PeerConnection manage the connection creation just doing what I wanted to do, but the specification doesn't give access to this low-level functionality) I decided to wait until the conference, where they gave me a little proposition about how to solve it, although I was a little reluctant about it, and in fact I believe they didn't hope it would work flawlessly: PubNub.

PubNub is a web service that allow to publish messages to a group of peers subscribed to a channel. It's say:   you send a message, and it's received by everyone it's listening. It's a little bit like killing a fly with a gun since the signalling message is sent to everyone is connected, but checking by hand that the message is for you the problem is easy to solve and also it has several advantages:

  1. It's not a dedicated server, it's a public server, so it's dificult to break it down (there would be too much affected...)
  2. there are other alternatives, and also it's being developed a public specification
  3. the free accounts have a very restrictive limit about the number of connected peers, what helps to focus on it as a bootstrap protocol and change inmediatelly on a DataChannels based one, increaing the network density just as I designed originally (the last week I was too much focused thinking about using the signalling channel for everything...)
But also it has another good point: since I have been testing so much protocols these day and thinking about to be able to use several of them at a time since no one gave me the flexibility and annonimity I wanted, the fact is that I ended developing a SignalingManager that could be able to abstract the signalling mechanism and adding a new one was just a matter of build a little class, so I did a new one for PubNub (after registering me as a developer on their page), launched the webapp... and it worked, period. Just like magic the both peers were talking though PubNub without a dedicated server... and also from two different host domains!!! :-D This means that you can download the webapp from different hosting and all of them could be able to communicate, allowing more heterogenety: if one of them gets down, you just need to navigate to another one and keep sharing :-) I need to investigate about how to share IndexedDB between the different domains in case of problems, but it seems will be something difficult to achieve and will only be able to show "backup cache" link so you can import it on another one... :-/

But these are only the good news? No, there's another one, maybe more little, but with greater consecuences: yesterday I was helping to Arindra Das over Skype with her problems with ShareIt! (really, he found a bug :-P ) and asked to him to share something so I could be able to make some test on my side, and the fact was that "magically" a PDF was shared with me from Findland to Spain. Yes: ShareIt! WORKS!!! :-D Having problems previously on some demos and not able to test it before between machines (just my main computer and my parent's one, both on my home LAN), it was a great surprise to see that it worked on the wild Internet, so adding this the "server-less" signalling thanks to PubNub, when we got native DataChannels on the browsers this project will be able to take flight :-D Let's hope they will be ready for New Year Eve... ;-)

lunes, 26 de noviembre de 2012

The longest journey: the movie

One thing that I forgot to mention on my previous post related about my last freaking awesome weekend was the fact that I have proves about it happened, so like they say in Facebook "if there's no picture it didn't happen", here it's the video about my WebRTC DataChannels & ShareIt! project I did the last friday in front of 75 persons on the RealTimeWeb conference (sorry, audio in spanish... Having only about three minutes you don't have too much time to think in english and you can only hope to talk as fast as possible... :-P).



If you can't be able to see the video you can download it on MP4 or WebM.

Just to say that althoug in the video it "doesn't work" later I investigated and was a bug of Chrome v25 unstable (obviusly... ¬¬) and just closing the tabs and openning them again it worked the second time (now I need a new video to show that it happened... :-P )

Slides are availables on the RealTimeWeb site and also the ShareIt! repository.

The longest journey

The last 72 hours have been one of the longest and most full-filled weekends I have had ever.

First of all, the friday I did my first wide-spread demo and presentation of ShareIt! (if we don't take in account the little one that I did some weeks ago for the Python Madrid guys) at the RealTimeWeb conference here at Madrid in front of 75 persons (the biggest public I have had in a presentation). In short: an awesome success :-D It was just a little and fast presentation because the organization run out of time and also I needed to go the the 3 Day Startup later, but the fact is that in less of 3 minutes I did the presentation, showed a demo, and the public exploded in ovations :-D (the fact that being the (almost?) only one in all the world working in some really awesome high-edge technology just because it's not ready yet would be the cause... :-P) Also, the fact that I got some propositions from the UPM teachers to work on their investigation projects related with WebRTC and they also gave me some good ideas to solve the signaling problem are some really great news too, by the way... :-P Keep listening... ;-)

But if this was not enough, as I have just say I needed to go the the 3DS so didn't be able to participate on the hackathon of the afternoon (with some iPad-mini as prices, just some kind of deviavious temptation after my Galaxy Tab I won on the CUSL two years ago with PirannaFS was stolen the last week... ¬¬). What to say about the 3DS? Crazy, period. It was about just like a small-sized CampusParty but without my sleep sack under the table. Some of the projects were really interesting and in fact I needed to flip a coin in the last moment just to select between two of them about were to work (maybe with some telekinetics since It was complementary to my Priorities project... :-P), and the fact is that in the last three days I have work more hours than in a normal job week and spend more energies than in a month :-P Add to this the fact about going to bed not before of 4 o'clock and waking-up at 8:00 to be early in the morning on the event (I didn't want to do it, by finally they convinced me to take some beers all the nights... :-P) and now you would understand why this morning I seems a brain-less zombie :-P The bad news is that it was a one-shoot, so I will not be able to use the experience and propose the next year a better project (I was thinking about a "producer for genious" company to take out all the burocrazy and mind-disturbing things and let "genious" to concentrate on their work in a similar way movies producers take in account all the boring details and let the movies directors to do the magic) so maybe this is something I would change about it... :-( In any case, if I can, I'll repeat the experience :-D

But on the personal area the best news would be that after four years working on the private sector and forced to "back to the basis" (no job, no money and just have part-time university classes and being full-time freaking with my geek personal projects :-P) I'm remembering why I wanted to work on computers programming and how I spected my live would be, and yes, THIS is what I wanted (or at least is on the good way :-D). Maybe add some romantics and action-packet and this is the kind of blockbuster I would like to live ;-)

So in few words... in the last four days I would have sleep about no more than 16 or 20 hours :-P

viernes, 16 de noviembre de 2012

FirefoxOS and HTML5 myths

Recently I have had some discussions and mocks regarding being FirefoxOS as the platform of the future (they was the ones that joke about me being an Apple fanboy and now they got crazy with the Nexus 4 availability issues like Justin Bieber fans... :-P ), so this links would be useful to get the things clear: first steps about hacking on FirefoxOS and some HTML5 Myths unveiled. Just a piece of cake... :-)

Hosting anywhere

During this week I have got the good news that ShareIt! will be included as part of two PhD thesis (woah!!!) that it's something several light years far away about what I would consider a success (Stefan Dühring and Arindra Das, truly thanks you so much! :-D ) with the exception of an e-mail with a job offer from Google :-P

But in both cases they had problems to deploy and test the code locally because they didn't finish to get the concept of being a pure client-side webapp, but at the same time requiring a handshake signaling server and a DataChannels backend server, so both asked me about a non-existent node.js server that hosted and served the app (I got problems while developing ShareIt! and DataChannel-polyfill to change my mind from a client-server way of thinking to a pure distributed one, and the telling the truth the WebRTC specification doesn't help about this for the non-specialized people...). I got a little bit obsesed about this point and to prove that being a pure client side webapp there's no necesity of a hosting server (just a simple static file web server), inspired by a recent idea I got about using DropBox to increase speed of downloads (enabling more host peers) and as backup of peers transfer, I decided to retake the fact that DropBox can be used as a basic static web server and improve the support for it. This included change all external references to use secure connections since DropBox serve the files through a SSL enabled connection, and if the content is not secure the web browsers would complain to protect the user (and that's ugly). On the other hand this allowed to encrypt all the communications so it's a win-win situation :-)

But this was not enough, I needed to show more versatility, and got it: I found this blog entry that explain in an almost step-by-step way how to explote DropBox and GitHub as free static pages web servers, and specially for deploiment of webapps. Just a sweet :-)

So here we are, currently I'm able to serve and host ShareIt! on three different web services, all directly availables on the web and interoperable between them: 5Apps, DropBox and unexpectedly GitHub, and also it's installable as browser extension. Add to this the fact that Firefox 18 "Alder" now start to have native support for DataChannels and WebKit already has it (Chrome v25 will have to wait a little bit more), and we are almost up to a point where ShareIt! will be impossible to take down (I hope that on the RealTimeWeb hackathon I would be able to get a way to drop-off the handshake server and reach the Holy Grail of Internet... :-P).

Let's the revolution begin!!! :-D

jueves, 8 de noviembre de 2012

Scream if you wanna go faster

PageSpeed Insights is a webpage that allow to check the performance of a web page (specially about load time and bandwidth) both for desktop and mobile, but also give suggestions to improve it solving some typical errors, and also there are extensions for Firefox and Chrome to run it locally :-) At this moment it give a 73% value for desktop and 63% for mobile, I'll try later to make Google scream a little bit more (pun intended ;-) ).