- Dwitter é uma plataforma onde é possível criar e compartilhar demos visuais com código JavaScript de até 140 caracteres
- Cada publicação é chamada de "dweet" e exibe, junto com o código, animações gráficas executadas instantaneamente
- Os usuários interagem por meio de comentários, remixes e hashtags, e a modificação e recriação de código acontece de forma ativa
- É possível explorar conteúdos populares com vários critérios de ordenação, como hot, new, top (semana/mês/ano/geral)
- Um espaço de experimentação em programação criativa que implementa efeitos visuais complexos com código curto
Visão geral do Dwitter.net
- O Dwitter.net é uma plataforma web para criar demos visuais com código JavaScript limitado a 140 caracteres
- Cada demo é chamada de "dweet" e gera gráficos animados executados instantaneamente no navegador
- Após fazer login, o usuário pode criar um novo dweet ou remixar (remix) uma obra existente
- O site permite explorar conteúdos populares com vários critérios de ordenação, como hot, new, top (semana/mês/ano/geral)
- Cada dweet inclui funções de compartilhar, tela cheia, denunciar e comentar
Exemplos de dweets em destaque
- "Bubble universe colour expansion" é valorizado por suas cores variadas e efeito visual marcante
- Nos comentários, recebeu reações como "A whole universe!"
- "Ants! 🐜" é uma obra que retrata um grupo de formigas com código curto, recebendo elogios como "god level dweetage!"
- "Trees, shadows, hills." é uma animação que descreve árvores, sombras e colinas, e recebeu comentários como "Amazing stuff!"
- "Flight Over Destroyed City ✈️" implementa uma cena de voo sobre uma cidade destruída
- Nos comentários, surgiram reações bem-humoradas como "i love the smell of sulfur and uranium in the morning"
- "Solar Orbit ☀️🌘" implementa uma órbita planetária em 140 bytes e provoca espanto com comentários como "How did you fit a whole planetary system in 140 BYTES OF JAVASCRIPT!?!?"
Atividade da comunidade e cultura de remix
- Cada dweet pode ser remixado com base no código de outro usuário, com o link do original indicado
- Os comentários misturam feedback técnico, impressões e humor, formando um ambiente de comunidade bastante ativo
- Com a função de hashtags, é possível explorar temas como #space, #galaxy, #lighting, #scene
Características técnicas
- A maior parte do código é compactada na forma eval(unescape(escape
...)), implementando o máximo de efeito visual dentro do limite de 140 caracteres
- No código, o foco está no uso da Canvas API para representar formas, cores e movimento
- Cada dweet mostra o comprimento do código (por exemplo, "// 136/140"), fazendo de otimização e técnicas de compressão elementos importantes
Um espaço para experimentação em programação criativa
- O Dwitter combina code golf e arte visual, incentivando uma competição criativa entre desenvolvedores
- O processo de criar resultados visuais complexos com código simples é visto como uma forma de estética da programação
- A plataforma funciona como um espaço experimental que explora a fronteira entre expressão artística e compressão técnica
2 comentários
É realmente impressionante.
Comentários do Hacker News
Desculpem por ter que reiniciar o servidor rapidinho. Graças à lição que aprendi da última vez que algo parecido aconteceu, redimensionei o DigitalOcean droplet
Por exemplo, algo como
eval(unescape(escape\<<97 wide characters>>`.replace(/u../g,'')))`, restaurando 194 caracteres ASCII a partir de 97 caracteres UnicodeEu preferiria um acordo no estilo do diálogo entre Ford Prefect e Mr Prosser: “vamos considerar que colocamos 194 caracteres dentro de 140 e simplesmente mostrar”
É uma lógica parecida com o limite de 4096 bytes nas demoparties, em que na prática você comprime 12~20KB com Crinkler para caber
Fui procurar uma entrevista antiga e achei interessante: entrevista no Medium
A verdadeira mágica está na comunidade: comunidade no Discord
GIF animado
Mais detalhes no post do fórum do Autohotkey
Com restrições, a diversidade explode. Ilusões visuais, frases curtas, experimentos em direções inesperadas
Restrições induzem foco e reduzem o custo do fracasso, incentivando a experimentação
A maioria das plataformas tenta expandir a criatividade adicionando recursos, mas acaba tornando tudo mais complexo
Eu sempre volto à regra de que restrição cria diversão
Fico curioso sobre quando restrições produzem resultados melhores e quando elas parecem artificiais
Essa experiência mudou completamente a minha forma de pensar código
Em uma pequena comunidade, compartilhávamos técnicas para economizar bytes e fazíamos de tudo, de renderização de Mandelbrot a resolvedores de Sudoku
Dez anos depois, fiquei realmente surpreso ao encontrar uma implementação de UUID que eu havia feito naquela época no codebase da minha empresa
Links relacionados: vídeo no YouTube, Byte-saving techniques, UUID gist
js_funcé chamado como um tagged template literalAgora vou começar a usar coisas como
console.log\weeee``Ex.: htm, lit.dev
Armazenei pequenos dados SVG em código inline para criar um sampler de 13KB
link de exemplo
Ex.:
evalEm vez disso, seria melhor adicionar mais atalhos. Por exemplo,
ssignificaMath.sign, mas isso poderia ser expandido ainda maisSe isso mudar depois, o alvo fixo desaparece e parte do encanto se perde
beta.dwitter.net melhora a acessibilidade de codificação sem perder esse alvo fixo
Exceções como Math.sin ou codificador de cores CSS foram adicionadas por motivos práticos
No Dwitter 2, também houve discussões sobre incluir mais caracteres predefinidos para que os usuários possam expandir por conta própria
No fim das contas, o que importa é a criatividade. Mesmo distorcer as regras já é, por si só, um ato criativo
evalpela raizAinda seria possível comprimir dados em literais de string, mas a compressão do código como um todo diminuiria
eval. Regra é regra (ou ausência de regra)