Skip to content

Silveira Neto Posts

“Quem passou pela vida em branca nuvem
E em plácido repouso adormeceu,
Quem não sentiu o frio da desgraça,
Quem passou pela vida e não sofreu,
Foi espectro de homem, e não homem,
Só passou pela vida, não viveu.”

Francisco Otaviano

Com Puta Ação

No Ensino Médio, nos íamos ao laboratório de informática estudar programação. A rotina era sempre a mesma: ir no site da Olimpíada Brasileira de Programação, baixar uns problemas (problemas estilo LeetCode), e passar horas programando em Pascal ou C.

Eis que um dia o site não abria mais. Outros sites abriam mas o site da Sociedade Brasileira de Computação não abria. Até que encontramos o culpado: haviam instalado um firewall no laboratório. O algoritmo do firewall era tão pudico quanto ingênuo. Ele bloqueava URLs que continham alguma palavra de uma lista de palavras bloqueadas. A URL continha a palavra computação. Embora computação por si só não seja digno de censura, o algoritmo ficou escandalizado com a “puta” de “computação”.

Esses dias descobri que existe um nome pra isso, Problema Scunthorpe:

O problema de Scunthorpe é o bloqueio não intencional de conteúdo online por um filtro de spam ou mecanismo de busca porque seu texto contém uma sequência (ou subsequência) de letras que parecem ter um significado obsceno ou inaceitável.

O nome vem da cidade de Scunthorpe da Inglaterra que já teve vários problemas online devido ao “cunt” de “Scunthorpe”.

bash and wget to download a lot of files

Problem:

  • Download 500 large files.
  • Files follow the pattern data_1.zip, data_2.zip, … data_500.zip.
  • All the files are in “https://examples.com/downloads”.
  • Files have from kilobytes to gigabytes in size.

Solution:

  • A naive Bash script to download the files using wget.
  • It is set to use wget with -c (continue). This will skip files already downloaded and continue files that have been interrupted. This only works with FTP/HTTP servers that support the “Range” header.
#!/bin/bash
set -euxo pipefail

PREFIX="https://examples.com/downloads/data_"

for i in $(seq 1 500); do
  wget -c "$PREFIX"_"$i".zip
done

nem sonho nem valsa

Já não sou mais o mesmo. Minhas papilas gustativas já não são mais as mesmas. Tantas memórias de sabores que eu trago da infância são fontes de frustração quando eu tento saciar meus sentidos.

Comprei um sonho de valsa numa loja que importa coisas do Brasil.

O sonho de valsa não é mais o mesmo. Não há sonho nem há valsa. Nem eu sou mais o mesmo mas eu sei que o aqui não foi meu paladar que mudou ou minha memória que me traiu. É bem documentado. Sai o chocolate ao leite e entra cobertura de gordura vegetal hidrogenada.

É nítido o contraste entra a expectativa de um sabor, potencializado pela saudade, com um gosto ruim associado a um chocolate de menor qualidade. O gosto parece daqueles chocolates guarda chuvinha. Sem nenhum desrespeito ao chocolate guarda chuvinha, eles eram ótimos. Eles tinham o gosto que você esperava deles. Eles sabiam o que eles era. Sabe quem não sabe o que é? O sonho de valsa. Bombom sonho de valsa? Pra sonegar imposto eles dizem que nem mais bombom ele é. Opa, sonegar não, maximizar elisões tributárias.

Eu nunca vou perdoar o que eles fizeram com o Passatempo Recheado. O Choquito também se foi. Se foi tudo, eu acho. E prefiro achar, nem quero saber. Não quero ter tantas decepções.

Meu amigo, se você ainda tem a oportunidade eu recomendo que deixe esses sabores nos braços da saudade. Eles tem a marca. Eles lucram com a sua nostalgia. Procure o que há de bom hoje. O chocolate ainda existe e resiste por aí.

iPad apps curation

Some of the apps I used the most over the years. Every app here is a single purchase model and not subscriptions. Some app offer additional paid content inside the App Store or external paid or free assets from third parties.

🎹 Music

KORG Gadget 3. Music production, DAW, instruments. In a single app you can play, create sequences, automations, loops, export and publish a complete song from scratch. It’s the DAW I use the most even though it diverges from traditional DAWs. It’s technically possible to import or record voice and external instruments but it’s not the ideal tool for that.
💰 Price: $19.99* USD

KORG Module. Stand alone instruments ideally played with a MIDI controller (but can be played on screen). As a stand alone app it can be used as an set of instruments to just jam or play professionally. It’s instruments can be used inside of KORG Gadget 3 seamlessly or in other DAWs as AUv3 plugins.
💰 Price: $19.99* USD

* prices of KORG apps are technically double of that but I only buy KORG apps at their 50% sale that happens a few times during the year.

🎨 Graphics

Procreate. Paint, sketch, illustrate. Also does simple animations. Pretty much the de facto standard on digital painting on iPad. Great support for Apple Pencil. A no-brainer.
💰 Price: $12.99 USD.

Procreate Dreams. An stand alone app for 2D animations very familiar to the Procreate interface. You can use resources from Procreate such layered projects and custmo brushes. Very suitable to 2D frame-by-frame animation but it can be pushed further.
💰 Price: $19.99 USD.

Luma Fusion. Video editing. It works well and does all the basic features I need.
💰 Price: $29.99.

Feather 3D. Drawing and modeling in 3D. What Procreate does for 2D this does for 3D.
💰 Price: $14.99 USD.

three-circle venn diagram coin

$fn=100;

HEIGHT = 5;

CENTER_DISTANCE = 10;
OUTER_RADIUS = 40;
INNER_RADIUS = 30;

module inner_circle(position) {
  rotate([0,0,(360/3)*position])
    translate([CENTER_DISTANCE,0,0])
      cylinder(d=INNER_RADIUS, h=HEIGHT, center=true);
}

module logo() {
  difference() {
    cylinder(d=OUTER_RADIUS, h=HEIGHT-0.01, center=true);
    
    union() {
      intersection() {
        inner_circle(0);
        inner_circle(1);  
      }

    intersection() {
      inner_circle(1);
      inner_circle(2);  
    }

    intersection() {
      inner_circle(0);
      inner_circle(2);  
      }
    }
  }
  
  // piece in the middle
  intersection() {
    inner_circle(0);
    inner_circle(1);
    inner_circle(2);    
  }
}

logo();

half-hexagon in OpenSCAD

height = 5;
radius = 20;

difference() {
  cylinder(height, radius, radius, $fn=6);
  translate([-radius, 0, -height/4]) {            
    cube([radius*2, radius, radius]);
  }
}

It works for these parameters but it needs more work to be really parametric. But hey, it’s my first OpenSCAD thing. I actually exported as .STL and printed it.