Todos os posts de Krull

Compressão no divã, digo, DivANS

A equipe do Dropbox publicou recentemente em seu blog esse post sobre um novo algoritmo de compressão em que vêm trabalhando. O post é bem interessante, e compara o DivANS com várias das tecnologias já existentes. Em algumas simulações, há bons ganhos na compressão. E para uma empresa que lida com quantidades absurdas de informação, 1% de ganho é muito significativo. Talvez ainda seja necessário melhorar a velocidade (não adianta melhorar o espaço, mas demorar o dobro do tempo para conseguir ler/escrever o arquivo...), mas sabemos que é assim que várias iniciativas de sucesso começam.

E como acelerar a melhoria do algoritmo? Disponibilizando para a galera em Open Source, claro. Eis que fizeram isso mesmo, e a ferramenta está disponível em https://github.com/dropbox/divans para quem quiser testar, estudar, melhorar.

O algoritmo se baseia numa compressão em (pelo menos) 3 fases. Ao invés de uma geração direta para o arquivo final, o algoritmo gera uma "IR" (representação intermediária), numa segunda fase a IR serve de entrada para ser otimizada, e por fim a IR é convertida para um formato que possa ser eficientemente escrita para o arquivo final através das técnicas de compressão.

O mais interessante é que, na prática, cada fase é 'meio independente' e pode ser mesmo melhorada de forma separada das outras - contanto que a IR seja criada de forma padronizada.

Nos testes demonstrados pelo Dropbox, usaram algoritmos padrões já conhecidos. O LZ foi usado para gerar a IR. A otimização da IR foi feita com o método ANS (Asymmetrical Numeral Systems) - que tem boa performance de compactação, e é bem rápida (bom, isso explica o nome DivANS: "dividedANS")

Por fim, uma coisa bem interessante: a equipe criou o sistema usando a linguagem Rust - linguagem de boa velocidade, como o C,  que não precisa de "garbage collector" e programas em Rust podem ser embutidos em outros que utilizem a interface de função do C - ou seja, fica muito fácil o reuso de rotinas e programas. Fica fácil embutir o codec em páginas com WASM!

Sim, WEBASSEMBLY!

(Ainda não tivemos tempo de comentar sobre o WebAssembly por aqui, mas o que tenho lido tem me animado. Acho que está na hora de estudar um pouco mais do assunto e postar novidades por aqui. Alguém aí interessado?)

Revision 2018

Está acontecendo nesse fim de semana do feriado, terminando amanhã de manhã, demoparty Revision 2018 - ver 2018.revision-party.net/

Patrocinado pela Assembly (no júri, posso jurar que já vi o barbudão na Asm no ano passado) o que tenho visto é uma festa grande e animadíssima na Alemanha. Já vai entrar em definitivo no meu calendário de demoparties a acompanhar.

Quem ainda quiser, dá tempo de assistir, tem link para a live stream no site deles.

Instanssi 2018

Começa amanhã, e segue até o dia 4, a demoparty Instanssi 2018. A festa ocorre na Finlândia, mas, diferente da sua irmã mais famosa (Assembly), essa ocorre em Jyväskylä, e é bem menor.

Ainda que seja menor que a festa Assembly, pelo material que vi ali nos últimos 2 anos, eu acho que seja uma festa que valha a pena acompanhar. A qualidade não deixa nada a desejar. Apenas são menos competidores, menos compos, etc.

Não tive  a confirmação ainda de se terão uma live stream como a Asm faz, mas pelo canal do Youtube vemos material do ano passado. Eu chutaria que, se houver live stream, será por aí. Vou ficar de olho - e tentar contato com a equipe, pelo Twitter. Vai que... 🙂

Enfim, seja como for, pelo menos após o dia 4 eu sei que vou ter mais músicas para ouvir no rádio do carro...