Facilitando o início do dia com uma dessas tomadas inteligentes

Aqui em casa a chaleira da água para o café da manhã está conectada a uma dessas tomadas inteligentes da Alexa, aí eu já a ligo da cama mesmo, por voz, enquanto levanto pra escovar os dentes.

Quando chego na sacada a água já está no ponto, e é só passar!

A garrafa térmica, o filtro, o pó de café e a xícara já estão também todos à mão, e essa parte ainda não está automatizada, mas eu chego lá (e sem retroceder para uma cafeteira automática, se possível).

Como fazer controle financeiro simples na vida pessoal

💰 Começar a fazer controle financeiro doméstico é muito mais difícil quando a gente percebe essa necessidade em um momento em que a grana já está faltando - mas vale o esforço, e eu aprendi na prática algumas maneiras de fazer dar certo.

A maior causa de dar errado é achar que orçamento doméstico é saber para onde o dinheiro foi. É o contrário disso: controle financeiro é sim acompanhamento, mas serve para poder escolher e priorizar, antes, para onde o dinheiro vai. O objetivo, geralmente, é decidir como gastar bem (e conseguir cumprir), se possível gerando saldo positivo.

Isso não quer dizer que não precisa olhar para onde o dinheiro vai 💸 – precisa sim, e da forma mais ampla e realista. Se você está gastando diferente do que decidiu e priorizou, isso tem que aparecer nos registros, para que você saiba que precisa ajustar, e onde – mesmo que a causa sejam imprevistos fora do seu controle.

Outro equívoco comum é confundir a visão financeira com a econômica. Controle financeiro é olhar para o hoje - dinheiro que entra e dinheiro que sai. Quando a situação permite, haverá saldo positivo e oportunidade para a visão econômica (investir, ou quitar dívidas na melhor ordem).

Faça um plano realista, para reduzir a vontade de trapacear na hora de cumprir o planejado!

Quanto menor o espaço entre a sua renda e os seus gastos inevitáveis, mais estrito, inflexível e chato 🙅️ ficará seu plano. Não desanime: no começo, concentre-se em tentar fazer um plano que na hora de executar não leve você a querer trapacear (emergências não são trapaça!)

Um primeiro passo pode ser olhar os extratos dos últimos 2 ou 3 meses, para ter uma visão do que se repete e do que varia. A partir daí, defina como passar a medir – com realismo. Talvez precise passar a tomar notas, ou escolher um dos vários bons apps.

Depois dessa visão inicial, faça o seu primeiro plano semanal ou mensal de gastos (conforme a frequência em que você recebe sua renda), e o acompanhe. A tendência é o primeiro plano ser descumprido. Vá ajustando: é um processo de maturidade e envolve motivação.

Há lugar para otimismo – mas não para fantasia. Se você vai manter alguma despesa 🍔 que sabe que poderia evitar, inclua-a no plano, não a transforme em razão para trapacear. O controle ajuda a permitir que você comece a gastar melhor, mesmo assim.

O melhor momento para começar a controlar já passou, e o segundo melhor é hoje. De modo geral, quem passa a medir, controlar e fazer os ajustes necessários ao longo do tempo tem resultado melhor, mesmo se começar tarde, em um momento em que os saldos já estão negativos. Não desanime, e boa sorte!

E vice-versa

Na data de hoje, mas em 2011, anotei um comentário esportivo de Roberto Alves que representa a quintessência da profissão.

Em um mesmo spot de 60 segundos, ele disse que “agora a situação está clara: o Figueira precisa jogar, e sobretudo jogar”, e que “evidentemente que torcedor é torcedor”.

Nos dois casos, faltou ele dizer “e vice-versa”. O Miguel Livramento, na época ainda vivo, certamente não teria perdido a oportunidade de complementar.

Motivação SQN

Em um dos melhores materiais sobre motivação no ambiente de trabalho que li recentemente, os trabalhadores contavam sobre os programas “motivacionais” que suas empresas tentaram realizar recentemente e NÃO os motivaram nadinha.

Alguns favoritos no show de horror:

🥶 eventos fora do local e horário de jornada

😰 voluntariado obrigatório

🫂 recompensas que não recompensam

😡 caixas de sugestões aonde o que não fosse elogio era visto como falta de espírito de equipe

🤌🏻 competição para estimular colaboração

wtf?

Sou muito prestativo nos sonhos.

Sonhei que estava numa queda de avião mas sobrevivi ileso. Sinal de boa sorte!

Era um Cessna monomotor, o piloto (que fumava cachimbo) era húngaro e não falava nenhum outro idioma, e além disso queria impressionar uma outra passageira e começou a querer inventar manobras enquanto sobrevoava Joinville num vôo sem visibilidade, até que deixou um pedação de uma das asas num canto de prédio e não conseguiu mais recuperar pra um pouso de emergência.

Foram cenas emocionantes :) A aeronave terminou dentro de um boteco pé-sujo, no comecinho da estrada Dona Francisca, mas eu saí andando, pedi um schnaps e ainda ajudei a acalmar os circunstantes.

Comemorando o Trilux

Esse Trilux lança mais versão que o Firefox, já tá na 33!

Feliz Trilux 33 a todos que observam a data!

Gotas de sabedoria

Grande parte da sabedoria humana está relacionada a identificar a hora de sair (de algum lugar ou situação) antes de ficar preso por lá.

Marcha a ré no progresso e na gestão

Nós passamos a segunda metade do século XX (a partir de 1942, principalmente) aperfeiçoando o gerenciamento de projetos, a ponto de conseguir gerenciar cronograma, entregas e qualidade de coisas tão gigantes e diversas como ir à Lua, construir navios gigantes em série, etc.

Aí a partir dos anos 90, a ênfase em ideias como reengenharia, downsizing e outras maneiras de remunerar investidores por meio de redução do custo, e não pelo valor produzido, reverteu essa marcha.

Aí hoje temos agilidade com post-its, e astronautas presos no espaço por culpa da Boeing.

Programando bots para o Mastodon: obtendo dados via API

O Mastodon tem uma API rica e fácil de operar, e desenvolver clientes ou robôs para interagir com ela está ao seu alcance em várias linguagens.

Desenvolver interfaces ou clientes para o Mastodon tem uma escala de complexidade a ser vencida, como em tudo na vida, mas não há razão para começar já tentando operações difíceis, autenticadas e envolvendo múltiplas instâncias: o ideal é começar com operações simples, envolvendo apenas um endpoint de API por vez, e com acesso a dados públicos, até pegar o jeito e alçar voos mais altos.

O artigo de hoje é introdutório a esse tipo de aplicação para quem já programa e está familiarizado com APIs web. Usaremos um script shell para listar as hashtags em destaque na lista de Trending de uma instância, como as deste exemplo - mas obtendo-as via endpoint da API, e não via scraping da interface web do Mastodon.

A API do Mastodon é bem documentada, e desde já recomendo os capítulos "Getting Started with the API", "Playing with public data" e "trends API methods" para entendimento aprofundado do que apresentarei com bem menos detalhes a seguir.

Para rodar os exemplos abaixo, você precisa ter uma shell Bash ou compatível, com o curl e o gron (para facilitar o consumo das respostas em formato JSON) instalados em um sistema compatível com o Posix (como a maior parte das distribuições Linux, o Mac e Unix em geral).

API do Mastodon: consultando e recebendo a resposta

Em primeiro lugar, perceba que a API do Mastodon é acessada pela web, enviando consultas ou comandos (eventualmente com detalhamento – por exemplo, via campos de formulário ou parâmetros da URL de acesso), e recebendo respostas em formato JSON.

Para o nosso exemplo de hoje, usaremos o endpoint "View trending tags" da API do Mastodon, que pode ser acessado – em instâncias abertas – por meio de uma URL como esta: https://social.br-linux.org/api/v1/trends/tags

Acesse a URL acima em um navegador, e você terá como resposta uma longa linha de texto, em formato JSON, listando as hashtags que aquela instância visualiza como estando em destaque naquele momento, e para cada uma delas expondo alguns atributos, como o número de contas que a mencionou, e quantas vezes ela foi mencionada, entre outros.

Trabalhando com a resposta da API

Ao fazer o acesso acima no navegador, você já usou a API da mesma forma que outros recursos mais avançados fariam, porém recebeu a resposta em um formato inconveniente para operar - ao contrário do que aconteceria quando acessamos por meio de bibliotecas mais avançadas, como a Mastodon.py e várias outras bibliotecas Mastodon para várias linguagens.

Vamos conhecer e destrinchar a resposta da API de trending tags, item por item.

Hoje não veremos o uso dessas bibliotecas, mas sim destrincharemos a resposta da API nesse endpoint - escolhido como exemplo por ser simples – para fixar melhor o funcionamento.

Em primeiro lugar, acesse o endpoint a partir da shell, usando os já mencionados curl e gron, para ver uma versão formatada da resposta da API. Para isso, digite:

curl -s "https://social.br-linux.org/api/v1/trends/tags" | gron

Observe que a resposta traz uma série de tags, e para cada uma delas são apresentadas as estatísticas diárias, como no trecho do exemplo:

(...)
json[7].history[0] = {};
json[7].history[0].accounts = "22";
json[7].history[0].day = "1720483200";
json[7].history[0].uses = "29";
(...)
json[7].name = "introductions";
json[7].url = "https://social.br-linux.org/tags/introductions";
(...)

Veja que destaquei duas linhas, por serem justamente as que nos interessam para esse exemplo: a visão da instância sobre o número de contas diferentes que usaram a tag hoje (history[0].accounts) e o nome da tag (name).

A partir dessa percepção, e com uso de expressões regulares para selecionar linhas como as duas destacadas acima, chegamos ao script a seguir:

#!/usr/bin/env bash
#
# bot_exemplo.sh - exibe as hashtags em destaque em uma instância do Mastodon
#
# Copyright (c) 2024,  Augusto Campos (http://augustocampos.net/).
# Licensed under the Apache License, Version 2.0.
#

instancia="https://social.br-linux.org"

curl -s "$instancia/api/v1/trends/tags" | gron | awk '

/0].accounts/ { gsub(/(.* = |[";])/,""); contas=$0 }
/\.name/      { gsub(/.* = |[";]/,""); print contas, $0 }

' | sort -nr 

Ele faz a consulta à API (curl e gron), filtra com o awk as linhas como as destacadas acima, extraindo delas só os valores (removendo as aspas, os ponto-e-vírgulas e tudo o que vem antes do sinal de igual), e ao final classifica (sort) as tags em ordem das que foram mencionadas por mais contas.

Executá-lo hoje gerou a saída a seguir:

Note que no formato atual, esse script seria mais adequadamente descrito como um cliente do que como um bot. Mesmo assim, a funcionalidade dele é parte integrante do bot que gera os dados para a curadoria do perfil @TrendsBR, e possivelmente outras peças desse mesmo bot (ou de outros que mantenho) voltarão a ilustrar artigos futuros aprofundando os conceitos que hoje começamos a ver.

Minha receita de almoço gostoso e prático

🍳 Minha receita infalível de almoço gostoso e prático, pro #almocodedomingo de hoje, é na airfryer.

Deixa pré-aquecendo enquanto pega e tempera os ingredientes, aí reúne:
- legumes picados (temperados com shoyo, manteiga ou azeite)
- um bife (com sal e pimenta do reino)
- um punhado de batatas fritas congeladas.

Coloca tudo junto, conta 7 minutos, aí desliga a airfryer sem abrir e aguarda mais 2 minutos.

🍽️ Só servir!

Se usar uma marmitinha de papel alumínio fica ainda mais fácil limpar! (mas menos sustentável)