Provedores vs Anatel: Será que é errado limitar a transferência de dados?

Gostaria de trazer o problema do limite na transferência de dados sob um ponto de vista técnico, para tentar acrescentar mais à discussão.

Provedores vendem mais banda do que podem entregar. O objetivo deste texto é mostrar que isso é necessário para que o negócio seja viável. Mas primeiro preciso explicar, de forma simplificada, como a internet funciona.

A internet nada mais é do que vários computadores ligados em rede. Essa rede possui várias ramificações, tipo uma teia, e cada nó dá origem a outros nós, e por aí vai. Existem cabos oceânicos ligando os continentes por todo o planeta, e é dessa forma que você consegue, por exemplo, abrir um site que está hospedado nos Estados Unidos.

unnamed

Esses cabos não foram colocados lá pelo governo, mas sim por empresas privadas, através de consórcios. Nesse site aqui você consegue ver a lista dos que existem no Brasil, e quais são as empresas que os colocaram lá.

A internet brasileira é formada por várias conexões entre computadores, por todo o país. Tudo também ligado em forma de teia, feito através de acordos de cooperação entre empresas. As vezes quando você acessa a Globo.com, por exemplo, você sai pela GVT, passa pela Embratel e desemboca na rede da Globo.com. Existe até uma forma de ver por onde os dados passam, é bem legal. Mas aí já está ficando um pouco técnico demais. Vamos agora à relação entre provedores e clientes.

Quando você contrata internet, esse “link de internet” nada mais é do que o acesso a um cabo que vai levar informações do seu computador para um Datacenter do provedor, e o mesmo precisa “rotear” os dados para outros provedores, que por sua vez passam os dados a diante até que chegue no destino desejado (um website, por exemplo). Assim como os seus clientes, provedores também tem de pagar para acessar a internet e repassar as informações que estão saindo e chegando no seu computador.

Os cabos que interligam essa “teia” possuem limitações físicas de velocidade. Portanto, quando um provedor vende um link de 30Mbits/s (vulgo 30 mega) a 1000 clientes, se eles utilizarem a banda toda ao mesmo tempo, seria necessário que esse provedor tivesse um cabo que o ligasse a essa “teia” com a capacidade de transmissão de 30.000Mbits/s. É até possível, mas estamos falando de apenas 1000 clientes. Um grande provedor na cidade de São Paulo provavelmente possui centenas de milhares de clientes. Ou seja, é tecnicamente impossível cumprir essa promessa. Mas como pode? Calma, vou explicar.

Na verdade, as pessoas não usam toda a velocidade de suas conexões o tempo todo. Quando você contrata uma internet de 30Mbits/s, isso não quer dizer que tudo o que você faça será nessa velocidade. Na verdade você está pagando por um link de até 30Mbits/s. De fato, a única forma de se utilizar toda a velocidade é fazendo downloads de arquivos grandes, streaming de vídeo, torrents, etc. Vou tentar esclarecer melhor utilizando um exemplo.

Suponhamos que o provedor “A” tenha um link de 10.000Mbits/s para distribuir entre 10.000 clientes. Se todos os clientes estivessem assistindo Netflix ao mesmo tempo, eles só teriam como utilizar 1Mbit/s cada um. Se apenas 5.000 desses 10.000 estiverem assistindo ao mesmo tempo, cada um poderia utilizar 2Mbits/s. E por aí vai.

Até bem pouco tempo atrás, antes da era Netflix, a maioria dos usuários de internet residenciais não utilizavam mais de 10-15% da velocidade contratada, tendo apenas alguns picos em certos horários. Isso fazia com que os provedores pudessem atender mais clientes sem ter que aumentar proporcionalmente a velocidade do seu link para a “teia”. É por isso que a Anatel diz que um provedor só é obrigado a garantir 10% da velocidade que vende. Isso fica claro quando você vê a diferença de preço entre internet empresarial e residencial. A empresarial é mais cara simplesmente porque em uma empresa utiliza-se uma porcentagem maior da banda contratada quando comparamos com uma residência. Isso porque uma empresa geralmente têm várias pessoas usando ao mesmo tempo, enquanto residências estão vazias em horário comercial.

Os provedores possuem soluções para empresas que precisam da garantia de 100% de velocidade o tempo todo. Estes são chamados de “links dedicados”. Um link dedicado é caríssimo, pelas razões explicadas acima. A última vez que pesquisei, um link de 5Mbits/s custava por volta de R$1.000 por mês.

Em tempos de Netflix, onde as residências estão consumindo uma maior porcentagem da banda contratada, os provedores estão em apuros. Se eles comprarem mais conexões com a “teia” para suprir a necessidade de todos os clientes que baixam filmes e assistem Netflix, eles vão ter que aumentar bastante o preço da mensalidade, repassando o custo para o cliente. Mas aí vem o governo e cria regulações, dizendo que os provedores precisam vender internet a preços populares, ao mesmo tempo em que dificulta a competitividade com taxas altíssimas e controle de licenças. Sendo assim, os provedores possuem apenas 3 alternativas:

1) Aumentar significativamente o preço da internet – não é viável, imagina só se da noite pro dia a sua internet de 50 mega passa a ser de 1 mega pelo mesmo preço? Vai ser o maior panelaço da história

2) Reduzir a velocidade para 10% da banda após um limite de transferência de dados

3) Cobrar extra após um limite de transferência de dados, e cortar o acesso de quem não optar por pagar extra

A alternativa 1, como eu disse, não é viável. A alternativa 2 já tentaram, não sei se resolveu. Agora estão tentando a 3.

Espero que tenha ficado claro, sob um ponto de vista técnico, que a solução não é impedir que os provedores limitem a transferência de dados. Isso vai prejudicar apenas o cliente, que vai ter que pagar mais caro, ou ser enganado, ou ter um serviço de péssima qualidade.

A solução é informar a todos sobre real problema (explicado acima) e exigir que a Anatel favoreça mais a livre concorrência, reduzindo o custo para os provedores.

burrow-black

Put your localhost online with Burrow.io

I had a pain at work: develop code to take actions based on Stripe webhooks. Why was that a pain? Well, how could Stripe send a webhook to my http://127.0.0.1:3000? I know some people will say that I can mock, stub, etc, but I like to see it working at least once, to make sure everything is alright. After a little bit of googling I stumbled upon a tool called Ngrok.

Ngrok’s premise is awesome: it gives you an URL that will forward traffic to your localhost on any port you want. So, I downloaded the executable, followed the instructions but unfortunately I could not get it to work. Maybe something with my laptop, or maybe some temporary failure on Ngrok’s servers… who knows? I want to register here that Ngrok is a great tool, used by many people. It has some neat features like replay requests. But I got a little frustrated and decided to solve the problem myself. Also because I’m always up for a new challenge, and I love building things. So, I decided to create a tool that would allow me to do the same, but without the download requirement.

I managed to put together a Rails app that helps me create SSH reverse tunnel commands on a simple and easy to use graphical interface, and use Nginx to reverse proxy requests to the SSH tunnel port. The interface would automatically setup Nginx virtualhosts (server blocks) for me, and give me random URL’s of my personal domain.

Now, all I have to do is figure out a way to not have to type giant SSH commands in a terminal window every time I want to open a tunnel. I thought: how can I solve that problem, and make it work on any computer I want? That’s when the swiss army knife of sysadmins came in handy: Bash! (sorry Windows users, no luck for you, unless you use cygwin)

So, instead of typing a large SSH command inside a terminal window, all I have to do now is to paste a CURL command generated by my app, and pipe the output to bash -s, and voilà! The output of the CURL command has all I need to start the tunnel, plus some nice features like reopen the tunnel if the connection drops. CURL will use a unique URL, randomly generated to avoid security problems.

Will it work?

So, it’s time to test. Tunnel created via web interface. Check. Paste a command on a terminal window and open the tunnel. Check. Random URL generated. Check. All I have to do is to tell stripe to send webhooks to that URL. And it worked like a charm!!!

Enter Burrow.io

This app solved a huge pain for me. Turns out that it solved a different pain for my coworkers – quickly showing each other what they are working on, without having to memorize IPs or setup DNS.

After that I decided to give it a name and put it online: https://burrow.io.

burrow-black

Go check it out and let me know how Burrow solves a problem for you!

ShareFrog v2 is online!

You know when you go to a networking event, or a conference, and you collect all those cards, or you Bump everyone but 2 weeks later you can’t remember when/where you met that person? What about when you are in a group and nobody have the same phone or contact-sharing app? There is gotta be a better way! That’s why I created ShareFrog.

ShareFrog lets you share contacts in a group the way it is suppose to be: lightspeed, no downloads, no typing, no bumping. Just ask your group to go to http://sharefrog.me on their smartphones with geolocation enabled and tap the faces of whom you want to share contacts with!

After the double opt-in is detected, both of you will get an email with each other’s contact info with the address, venue and time you met!

ZERO hassle!

Youporter gets selected for the The Johns Hopkins Innovation Factory Summit

youporter.comUPDATE: During the LAX shooting (november 1st 2013), while CBS was trying to get information from people coming out of the airport (with no luck), Youporter was able to get real time information about the situation inside of the airport, direct from Twitter users.

I am pleased to announce that my startup Youporter was one of the 7 selected among 36 startups that subscribed for the contest!

Youporter combines the power of social media with geolocation data and live stream of content to help media organizations to break news faster and/or achieve better pulverization with low cost, reaching anywhere there is a person with a smartphone and internet connection.

Check out the video:

Before Youporter, a small tech blog from Brazil could not afford sending someone to cover events like Google I/O, for example. Now the same blog can hire a correspondent at youporter.com, and be able to have much richer content on their website, by hiring a youporter that will send them live streams of video,audio or pictures of the event. And that same youporter can get another request from a german newsroom, giving him a specific question to ask, while the audio is recorded and sent to the newsroom.

We do that by providing a mobile app to youporters that links them to virtual newsrooms, giving anyone, wether in the blogsphere or in the mass media, the power to activate youporters on the ground.

Here is another example:

Imagine there is a shooting at the mall (or imagine any other breaking news event). A TV channel finds it using social media, or listening the police radio, or any other method they might have. They want to send a team there to do the coverage, but they are all busy or too far to get there in 5-10 minutes. With Youporter, the TV channel would be able to see on a map everyone that is close to that area with a smartphone (we call them youporters), and send them a request to go do a coverage from their phones, sending live video, photos or audio, while they being directly controlled by the TV channel’s newsroom. As a result, the TV channel will cover much more areas, at a much lower cost.

 

Sharing contacts with ShareFrog = no hassle

SharefrogImagine you are in a group of people, and you want to share contacts with each other. How would you do it? Your answer might be Bump, but  I’ve tried it many times, and it’s always a hassle – not everyone in the group has the app or want to install it, and even if they had, we would have to bump with each other multiple times. In a group of 3 people it works ok, but with 6 or more people it starts to be really annoying. A month ago I was in a situation like that, where we ended up writing our contact info on a white board, and each one took a picture of it. That’s just unacceptable! The solution for this problem should be simple and universal.

That night I went home and created ShareFrog – a webapp that lets you share contacts the way it should be! It uses a combination of a PIN and geolocation to create a list, where each person of the group can add their own contact info, and then they can add each other to their phone address book by tapping their names. It is a no-brainer!

Try it yourself. Make sure your GPS is active on your phone, go to sharefrog.co/myfirstlist. Then ask a friend that is close to you to do the same. Add your contact info and you are all set. It’s that easy! No downloads, no waste of time 🙂

I hope ShareFrog will help you as it has been helping me, especially at startup and hackaton events. If you like it, share with your friends!

A coding journey

I keep having those crazy website and mobile apps ideas. The problem is that my coding skills were always close to zero. Don’t get me wrong, I’ve coded before, but it was a long time ago. All those years as sysadmin helped me master my bash-scripting-fu, but anything objected oriented always seemed very obscure to my mind. Since I moved to Canada, I’ve been working from home and decided to walk my way through the developer’s world.
I decided to learn Ruby after reading many articles about it, and also because it seems that its community is huge, which makes it easier to find help online in case I’m stuck on some error. The learning curve is impressive. I spent a week watching the Ruby Kickstart classes, then jumped on the book “Ruby on Rails Tutorial” – from Michael Hartl. I strongly recommend those links if you want to learn Ruby on Rails (RoR). One month after my first contact with the language, I started working on a idea with a friend. It’s called Spottaneous. Go check it out 🙂
Feels really good to have an idea and be able to actually prototype it. My advice is, if you have an idea but you can’t build it on your own, learn how to code and then build it. It’s a nice learning experience, and in the end, if your idea proves itself wrong, at least you will have a new (and profitable) skill.