As gambiarras mais impiedosas que já fiz: parte 2
Dando continuidade à parte 1 . Antes da gambiarra da parte 1, eu trabalhava, em meu segundo emprego, com mídia indoor. Para quem não sabe, mídia indoor são aquelas televisões informativas instaladas em elevadores, supermercados e outros locais com média ou grande circulação de pessoas, que também exibem propagandas de vez em quando. Quando cheguei lá, eles já tinham um sistema que funcionava muito bem. Era um player de vídeo que usava o MPlayer ou, às vezes, uma distribuição Linux chamada MoviX . O único problema era o acesso remoto e o gerenciamento das playlists, que às vezes era feito por SSH ou exigia que alguém fosse até o local. Porém, além do gerenciamento remoto, que seria relativamente fácil de resolver, havia outro problema: A banda de internet. Naquela época, não existiam CDNs ou, caso existissem, custavam uma nota preta e eram de difícil acesso. A Amazon Web Services até existia, pois surgiu em 2006, e estamos falando de aproximadamente 2008, mas ainda era desconhecida, cara e não tinha infraestrutura no Brasil. Essa ideia de cadastrar um cartão em um serviço cujo valor oscilava estava completamente fora da realidade da minha bolha naquela época. Talvez uma VPS servisse, mas, de qualquer forma, esse não é o ponto. Nós tínhamos alguns “servidores”, também conhecidos como computadores pessoais antigos, lentos e que já não estavam sendo utilizados, além de uma conexão de 1 megabit compartilhada com todo o escritório. Naquela época, eu já era um grande fã da Valve, da Blizzard e de outras empresas que, por baixo dos panos, usavam BitTorrent para distribuir seus jogos. No instalador da Blizzard, inclusive, era possível ver detalhes como a quantidade de seeders e leechers durante o download, além da velocidade da transferência. Então, munido desse conhecimento, decidi criar um player de vídeo em C++ com uma biblioteca de torrent embutida. O player fazia polling constantemente, pois WebSocket ainda não existia. Ao receber uma playlist, ele calculava a diferença para descobrir quais arquivos precisavam ser baixados e quais deveriam ser excluídos do disco. Depois de identificar as mídias necessárias, iniciava os downloads usando torrent. Para deixar as coisas ainda mais interessantes, eu usava um HTTP seed , por meio do qual alguns dos primeiros pedaços eram baixados por HTTP, de forma aleatória. Na época, tínhamos algumas dezenas de máquinas. Como todas compartilhavam os arquivos entre si, a carga sobre a conexão do escritório diminuía bastante, enquanto os downloads se tornavam muito mais rápidos. Seria possível até saturar a conexão dos locais onde as máquinas estavam instaladas, mas, por precaução, o próprio cliente torrent limitava o uso da banda. Bem, talvez isso não seja exatamente uma gambiarra , mas foi um feito memorável da minha carreira. Espero que gostem e compartilhem as gambiarras de vocês nos comentários.