domingo, 16 de agosto de 2026

Leitura: O Império da IA

Após assistir a várias entrevistas com Karen Hao, resolvi comprar seu livro.

A omnipresença da IA em foros de TI e a pressão de forças de fora da TI para que soluções sejam adotadas antes mesmo que problemas sejam identificados somaram-se aos aumentos absurdos dos preços de componentes (memórias,GPUs, SSDs) e acabaram por alimentar uma tremenda má vontade em mim.

A IA certamente será uma tecnologia útil em alguns ramos e em alguma medida, embora não creia que seja a panaceia que está sendo vendida; com certeza será mais útil que as criptomoedas.

Dada a crise climática, o modelo de negócio que está sendo vendido certamente não é o melhor. Ultimamente, tenho a impressão que qualquer coisa está sendo usada para evitar ter que atacar os problemas do planeta. O formato atual do capitalismo (ou economia de mercado, se preferir), não é capaz de evitar o apocalipse ecológico que estamos preparando há décadas.

Este é o tema principal do livro: os maiores proponentes da IA agem como imperialistas, enquanto vendem ora a solução para todos os problemas, ora um futuro distópico. O comportamento errático mal disfaça o fato de que ainda não encontraram um modelo de negócios que resolva a grande dívida que estão acumulando.

O livro é longo: mais de 400 páginas. Boa parte dele relata os atritos internos e as intrigas entre os maiores personagens da IA. Além disso, há relatos interessantes sobre os problemas gerados pelas maiores empresas: consumo de recursos e abusos de trabalhadores em países periféricos.

As últimas páginas relatam o caso de uma organização neozelandesa que usou a IA para documentar e criar materiais de ensino da língua dos Maoris. Essa organização responsavelmente e respeitosamente: escutou a comunidade; trabalhou em conjunto com a comunidade; e usou recursos com economia (apenas duas GPUs). Mesmo assim, os resultados foram muito bons.

A filósofa Carissa Véliz argumenta que a maneira como as tecnologias são criadas importa, porque a intenção acaba ditando os resultados. Essas empresas vendem a noção de que a IA curará doenças e solucionará a solidão, mas, ao mesmo tempo, agem para controlar recursos e aproveitam-se de trabalhadores vulneráveis, assim como os Impérios doutrora.

As grandes empresas de tecnologia vendem as soluções de nuvem como se fossem benéficas aos usuários. Em alguma medida, elas realmente o são, mas a intenção verdadeira é estabelecer um feudo e dele extrair uma renda vitalícia. Aos poucos, isso vai se revelando: versões novas que só funcionam na nuvem, custos altos de tráfego de dados, licenças que subitamente mudam os termos, etc.

Em meu trabalho diário, vejo a IA sendo vendida como a solução para domar a complexidade burocrática, quando seria muito mais inteligente racionalizar a burocracia. Documentos são gerados no Word, impressos, assinados, escaneados como imagens, e então processados por IA. Documentos são gerados por IA e depois resumidos por IA. E isso me leva a pensar: se um documento é gerado por uma IA apenas para ser interpretado por outra IA, ele realmente precisa existir?

Eu achei o livro um pouco longo demais, mas ainda assim achei que foi uma leitura interessante, embora os comportamentos de alguns bilionários sejam bastante revoltantes. Felizmente, o livro encerra com histórias positivas de projetos mais humanos; são essas histórias que eu gostaria de ver nos meios de comunicação.

quinta-feira, 13 de agosto de 2026

Combinações de Quartas de Final

O recente sorteio das quartas de final da Copa do Brasil levantou suspeitas por juntar os clubes por proximidade.

Há 105 possíveis quartas de final (8!/(2!*2!*2!*2!*4!)), mas é mais divertido calcular na linha de comando com grep.

Primeiro, uso o código de combinações para calcular todos os enfrentamentos possíveis (são 28):



my @jogos=qw(AB AC BC AD BD CD AE BE CE DE AF BF CF DF EF AG 
             BG CG DG EG FG AH BH CH DH EH FH GH AB AC BC AD);
             

Depois, uso o mesmo código para encontrar todas as combinações de enfrentamentos, mas uso o grep para eliminar as combinações em que um time aparece mais de uma vez:



perl choose.pl  |  grep -Ev '(\S)(.*\1)'
DE CF BG AH 
CE DF BG AH 
CD EF BG AH 
DE BF CG AH 
BE DF CG AH 
BD EF CG AH 
...

A expressão -E "(\S)(.*\1)" procura por coisas diferentes de espaço que sejam repetidas ao menos uma vez e -v as elimina do resultado.

O resultado são 105 combinações de quartas de final e a combinação específica aparece apenas uma vez (claro):


perl choose.pl  |  grep -Ev '(\S)(.*\1)'  | grep "AB CD EF GH"
AB CD EF GH 

Dada a quantidade absurda de jogos a que os jogadores são submetidos no Brasil, organizar os campeonatos por proximidade, a fim de minimizar as viagens, seria uma medida interessante.

segunda-feira, 27 de julho de 2026

Grep com Saída Programável

O grep permite usar expressões regulares do Perl e, portanto, comporta expressões bastante complexas.

Por exemplo, se quero filtrar por textos como "sequence=123", posso usar:


$grep -Po "sequence=\d+" data.txt
sequence=123
sequence=321

Se eu quiser só os números, posso usar lookbehind:


$grep -Po "(?<=sequence=)\d+" data.txt
123
321

Fica um pouco complicado, mas ainda é possível ler. Entretanto, se seu quiser uma lista das sequencias, não tenho recurso. Se eu quiser filtrar campos distintos e trocar a ordem deles na saída, tampouco há recurso disponível, exceto fazer pipe para um awk.

O que eu realmente gostaria é de poder fazer algo assim:


$grep -P "sequence=(\d+)" -p "$1,"
123,321
  

Como isso não está disponível, resolvi escrever um pouco de Perl. A solução ficou bastante sucinta e flexível. Inicialmente, eu pretendia chamá-la de pgrep, mas como já há um comando pgrep para procurar processos, acabei por nomeá-la grepp (grep++).


$grepp
Usage: grepp regex [output] [filename]

$grepp 'sequence=(\d+)' '$1\n' log.txt
20
30
40

$cat log.txt | grepp 'sequence=(\d+)' '$1,'
20,30,40,

$cat log.txt | grepp 'sequence=(\d+)' 
sequence=20
sequence=30
sequence=40

$gunzip -c data.log.gz | grepp 'id=(\d+)' '$1,'
150647,160346,150648,160347,160348,150649,

$gunzip -c data.log.gz | grepp 'id=(\d+) val=(\d+)' '$1=$2\n'
150647=7
160346=9
150648=4
160347=5

$grepp 'enabled=(\w+)' '$filename: $1\n' *.ini
abc.ini: true
xyz.ini: false

$grepp 'weight=(\d+) items=(\d+)' '@{[$1*$2]}' data.txt
34
110

$grepp while '$filename($lineno): $_' grepp
grepp(22):   while(<$fh>) {
  

quinta-feira, 25 de junho de 2026

MBA de 1,99

Recentemente, como cliente, aprendi três lições importantes sobre negócios.

Um serviço de SMS começou a bloquear nossas requisições quando atingimos o valor orçado no contrato. Eles não entraram em contato, simplesmente bloquearam todas as requisições a partir de um certo número mensal de mensagens.

Isso nos obrigou a imediatamente otimizar as mensagens: muitas podiam ser agregadas (o que também beneficiou os recipientes). Passamos a enviar cerca de 50% das mensagens que antes enviávamos e o nosso custo caiu na mesma proporção.

A nossa necessidade não excedia em muito a quantidade orçada: em geral, menos de 10%. Ao causar esse problema para nós, o provedor acabou perdendo metade da receita.

Além disso, o contrato não indicava que havia um limite; ele indicava uma expectativa de uso.

Penso que a empresa falhou de três formas e que disso podemos aprender o seguinte:

  • Não seja mesquinho com o cliente;
  • Converse com cliente e procure entender suas necessidades;
  • Leia o contrato com atenção (e discuta o contrato com o cliente).

A pequena crise acabou sendo benéfica para nós e custou 50% do contrato para o provedor.

terça-feira, 16 de junho de 2026

Lacunas de Vocabulário

Não é incomum encontrar uma palavra nova num livro ou mesmo conversando com uma pessoa. Sempre encontro palavras interessantes com Saramago ou com pessoas de Caçapava do Sul, a qual, tenho certeza, merece o seu próprio dicionário, dado que essa cidade tem um vocabulário muito particular.

Tenho também certeza que existem lacunas de vocabulário que quase todo mundo compartilha, como os coletivos, assim como há vocabulários específicos de determinadas profissões, faixas etárias, ou grupos sociais.

Entretanto, há palavras que eu julgava universais e nos últimos tempos descobri, para minha grande surpresa, que uma em particular não o é: dúzia. Em três ocasiões nos últimos meses, deparei-me, sempre num balcão de padaria, com pessoas que não sabem do que se trata e não consigo encontrar uma explicação para este fenômeno recente.

Há ainda coisas que são vendidas às dúzias: ovos e caixas de leite, por exemplo. Portanto, sei que ainda é uma palavra relevante. Uma grosa, por outro lado, eu entendo que pouca gente conheça a medida. Almude tampouco. O conjunto de pessoas que conhece grosa e almude posso delinear como o dos netos de alfaiates portugueses. Dada a escassez, tanto de pessoas, como de motivos para usar ambas as palavras, elas vão ficar acumulando pó na minha cabeça.

A dúzia parecia-me uma parte fundamental da língua, como a palavra sim, a qual, estranhamente, há língua que não possua. Pode-se viver sem o sim? Pode-se. Sem o não, tenho dúvidas. Pode-se também viver sem a dúzia; o doze faz bem o papel, embora pareça-me mais natural comprar uma dúzia de ovos que comprar doze ovos.

Sinto que, se tirássemos o sim, as conversas ficariam mais ricas, ao passo que, se tirássemos dúzia, perderíamos um floreio latino que embeleza nossa língua.

Vou insistir com a palavra, mas doravante com ímpeto didático adicional.

segunda-feira, 18 de maio de 2026

O Conto da Aia Brasileira

Maria nasceu numa casinha pequena, longe da estrada. A casinha não tinha nem luz nem água corrente. O ano era 1954, logo depois da morte de Getúlio, o pai dos pobres, e a localidade era o interior de Caçapava do Sul. Ela não foi a primeira Maria a nascer ali, mas foi a primeira que vingou.

Quando completou dois anos, ou mais ou menos isso, dado que ninguém estava contando, o pai de Maria decidiu levá-la à cidade para registrá-la. Ouviu dizer que era importante. Foi até lá sem refletir sobre o nome. Quando o escrivão indagou, teve que pensar um pouco e, finalmente, concluiu que "coloca Maria aí" era o que precisava ser dito.

Aos 6 anos, os pais de Maria decidiram levá-la à sede da fazenda, na esperança de que lá pudesse viver um pouco melhor e, quem sabe, aprender a ler. A esposa do Capitão não precisou pensar muito: era mirradinha e não sabia fazer quase nada, mas não custava nada e ela poderia adestrar a negrinha que logo ela seria útil. Ela não sabia mesmo fazer muita coisa já que a casinha em que morara até então era desprovida de meios. Sabia varrer, sabia buscar água, sabia fazer arroz, ou assar um lagarto com lenha.

Ela cresceu num quarto cheio de ferramentas que era muito frio no inverno e muito quente no verão. Trabalhava todos os dias e descansava um pouco quando a família ia à cidade. Melhor alimentada, ela foi crescendo e ganhando corpo. Tornou-se uma adolescente vistosa: pernas firmes e uma bunda que os homens não conseguiam ignorar. Pedrinho e Fernando, os filhos do Capitão, certamente não a ignoraram. Ela já era moça e os filhos do Capitão eram os únicos machos que não cheiravam mal e não eram muito mais velhos que ela; os únicos adolescentes que ela conhecia no mundo.

Primeiro foi o Pedrinho. Numa noite quente, ele apareceu no quartinho e a convidou para um banho no açude. Pedrinho era bonito e ela não pensou muito no que estava fazendo; precisava de um pouco de afeto. Semanas mais tarde, foi o Fernando. Talvez o Pedrinho o tenha incentivado.

É impossível calcular se foi sorte ou azar ela não ter emprenhado, porque a vida de Maria era como a natureza: ela simplesmente é. A mulher do Capitão notou que algo acontecia e reparou como os homens esticavam os olhos em direção ao traseiro de Maria.

Um dia um amigo do Capitão veio de Santa Maria trocar um dedo de prosa e assar um churrasco. O amigo, Doutor Antônio, professor da Universidade, era viúvo e ele mesmo já não tinha muita saúde, porque bebia e fumava muito. Antônio gostou muito da negrinha da casa. A mulher do Capitão percebeu uma saída e sugeriu ao amigo levar a moça: se der um jeito no cabelo, fica até bonitinha.

Doutor Antônio propôs um negócio. Maria casaria com ele e viria morar em Santa Maria. Em troca, ela poderia estudar e, quando o Doutor morresse, ela herdaria alguma coisa e poderia seguir sua vida. Talvez ela tivesse que cuidar dele por uns 20 anos e logo estaria livre. A mulher do Capitão, por outro lado, deixou claro que ela não poderia mais ficar na fazenda. A vida decidiu por ela mais uma vez.

Maria estudou um pouco em Santa Maria. Ela tinha dificuldade e quando chegou à quinta série o Doutor achou que bastava para cuidar da casa. Nos anos 1970, uma mulher precisava de autorização do marido para abrir crediário, para ter um emprego, os passaportes eram familiares e o portador era o chefe da família, e uma mulher não podia pernoitar sozinha num hotel. Maria não ficou sabendo de nada disso, porque o Doutor viajava sozinho. Talvez ele tivesse vergonha da esposa.

Essas limitações todas eram só para as mulheres ricas, as quais ela invejava um pouco. As da novela pareciam livres, mas só existiam nos sonhos.

Muito antes de completarem 20 anos de casados, o Doutor ficou seriamente doente e faleceu. Maria cuidou do Doutor nos últimos e terríveis dias; sentiu pena do velho que estava sofrendo como um cão. Os filhos do Doutor vieram lá de São Paulo e organizaram tudo. Sem saber como tomar posse do que lhe tinha sido prometido, ela acabou com um pouco de dinheiro que os filhos ofereceram para não a deixarem completamente desprovida e também para incentivá-la a sair do apartamento o quanto antes.

Ela passou a trabalhar como doméstica, morando em quartinhos, às vezes quentes, às vezes frios, sempre sem ventilação. Pelo menos na fazenda ela pudera dar uma volta pelo campo e tomara banho de açude.

terça-feira, 12 de maio de 2026

Templates de Serviços com o systemd

Aos poucos estou começando a gostar do systemd. Minha última descoberta foram os templates, os quais permitem usar um único arquivo de configuração para gerenciar vários sistemas semelhantes.

Eu administro vários bancos Oracle que possuem integração com outros bancos via um mecanismo muito precário chamado Heterogeneous Services. O FDW do Postgresql é muito melhor, mas não é importante para esta discussão.

Infelizmente, o Oracle desliga os listeners desses serviços sem qualquer motivo aparente. Então, resolvi experimentar criar um serviço do systemd para cada um. Eu não queria ter que criar um arquivo para cada serviço, então descobri os templates.

Criei um arquivo chamado hs-listener@.service. O arroba indica que é um template.


[Unit]
Description=Oracle HS Listener %I
After=network.target

[Service]
Type=forking
User=grid
Group=oinstall
Environment="ORACLE_HOME=/u02/app/23.0.0.0/gridhome_1/"
ExecStart=/u02/app/23.0.0.0/gridhome_1/bin/lsnrctl start listener_%i
ExecStop= /u02/app/23.0.0.0/gridhome_1/bin/lsnrctl stop  listener_%i
Restart=always

[Install]
WantedBy=multi-user.target

Dentro do template, %I e %i serão substituídos pelos parâmetros usados a seguir. O %I não é formatado, mas o %i é.


  systemctl enable hs-listener@db2
  systemctl enable hs-listener@pgsql
  systemctl enable hs-listener@mysql
  systemctl enable hs-listener@sqlserver
    

Como se pode perceber, isso evita ter que criar vários arquivos semelhantes.


  systemctl start hs-listener@db2
  systemctl start hs-listener@pgsql
  systemctl start hs-listener@mysql
  systemctl start hs-listener@sqlserver
  

E isto evita ter que investigar o que houve com o listener uma vez por mês.