There is absolutely no doubt for me: if you don't understand ALL of your software code then you're standing in a menace, not a product. I will stay away from vibe coders and their s**t in the same way that I avoided people who only did copy and pasting of code without proper understanding, in the past. The need for this approach is directly proportional to the criticality of the software we develop.
Blog do Tiago Matos
Educação, Ciência, Tecnologia, Inovação, Gestão e Desenvolvimento Sustentável.
sábado, 28 de fevereiro de 2026
sexta-feira, 30 de janeiro de 2026
Generative AI and Repetitive Strain Injury
I've been suffering from Repetitive Strain Injury (RSI) for more than 10 years. Being a heavy computer user since a young age, a disastrous fall from staircase accident and starting my programming career very early might have contributed to this, for sure. So, nowadays, typing for very long periods of time becomes a painful experience. Using generative AI tools as coding assistants is not only saving some of my time but also saving me from some pain. General text writing is a little more trickier when you care about having your own style. In this, case voice typing continues to save me. The next thing I want to see AI to do is some kind of autocomplete for interactions with graphical (GUI) or text (TUI) user interfaces. Maybe there are already some good things that I could use with the Bash shell out there... I'll investigate.
sábado, 27 de setembro de 2025
Usando "shift" + "barra de espaços" para digitar underscore no Linux
Em nosso cotidiano digital, o uso de espaços para separar palavras é natural e intuitivo. No entanto, no universo da programação e na nomeação de arquivos, essa prática aparentemente inofensiva pode se transformar em uma fonte de erros frustrantes e comportamentos inesperados de programas e sistemas.
Tanto em linguagens de programação quanto em interfaces de linha de comando (como o shell no Linux), o espaço em branco é tradicionalmente utilizado como um delimitador, ou seja, um caractere especial que separa diferentes elementos, como comandos, argumentos e parâmetros.
Sendo assim, como alternativa usual para evitar algum tipo de problema, muitos de nós temos a prática de substituir os espaços por outros caracteres ou padrões.
As alternativas mais comuns são:
- Underscores "_": Usar o sublinhado para separar palavras. Exemplo: meu_arquivo.txt.
- Hifens "-": Utilizar o hífen para separar palavras. Exemplo: meu-arquivo.txt.
Eu sou do grupo que utiliza underscores, quase sempre. Tanto que, para aumentar minha produtividade, resolvi aproveitar uma combinação de teclas não utilizada ("Shift" + "Spacebar"), como forma de digitar underscores.
É mais prático que a opção padrão de pressionar "Shift" com "-", esta última a tecla para hífen e underscore, que geralmente fica no canto superior direito do teclado é pequena e requer o uso das duas mãos.
Como essa solução me trouxe enorme satisfação, deixo aqui está dica de como fazer "Shift" com "barra de espaços" produzir o caractere underscore no Linux.
Nota: eu utilizo X11 e um teclado ABNT2. Para layouts de teclado diferentes creio ser possível obter os resultados com pequenas modificações das configurações que estão a seguir.
Passo 1. Como superuser, editar o arquivo:
/usr/share/X11/xkb/symbols/br
E adicionar as seguinte linhas, para criar uma variação de layout contendo a nova combinação de teclas:
// Customizado: Shift + Space = "_"
// by Tiago Matos <tiago@tmatos.net>
//
partial alphanumeric_keys
xkb_symbols "abnt2shiftspace" {
include "br(abnt2)"
name[Group1]="Portuguese (Brazil, com Shift+Space=_)";
key <SPCE> { [ space, underscore, minus, nobreakspace ] };
};
Passo 2. Também como superuser, editar o arquivo:
/usr/share/X11/xkb/rules/evdev.xml
Este arquivo XML contém uma árvore com várias definições de layout.
Procure pelo elemento <layout> que contenha, dentro do mesmo, o elemento: <name>br</name>.
Você deve chegar em algo do tipo:
<layout>
<configItem>
<name>br</name>
<shortDescription>pt</shortDescription>
<description>Portuguese (Brazil)</description>
<languageList>
<iso639Id>por</iso639Id>
</languageList>
</configItem>
...
...
...
Logo abaixo disso, teremos o elemento <variantList>, com cada variação disponível dentro de uma tag <variant>.
Iremos adicionar a essa lista nossa nova variação de layout:
<variant>
<configItem>
<name>abnt2shiftspace</name>
<description>Portuguese (Brazil, com Shift+Space=_)</description>
</configItem>
</variant>
Passo 2.1. Pode ser necessário, depois das edições, executar o comando abaixo para a nova opção de layout ficar disponível:
sudo dpkg-reconfigure xkb-data
Passo 3. Finalmente, modificar a opção de layout do teclado no aplicativo de configurações do seu ambiente de desktop. E usufruir deste novo e prático recurso.
terça-feira, 9 de janeiro de 2024
Dica de livro sobre compiladores
Recentemente, encontrei um livro muito bom (para o nível de graduação) sobre compiladores que tem um ótimo diferencial: cópias são gratuitas para uso pessoal e não comercial. O título é:
"Basics of Compiler Design - Anniversary edition"
De Torben Ægidius Mogensen, que é professor no Departamento de Ciência da Computação da Universidade de Copenhague, na Dinamarca. Esta edição foi publicada pelo próprio autor em 2010.
O livro pode ser encontrado (e baixado) no link seguinte:
http://hjemmesider.diku.dk/~torbenm/Basics/index.html
É importante notar que tal texto serviu como base para uma obra mais recente chamada: "Introduction to Compiler Design", que foi publicada pela editora Springer e está disponível para aquisição em:
domingo, 5 de novembro de 2023
Projetos
Os projetos são as sementes da mudança,
Que germinam em nossos corações
E crescem em nossas mãos.
Com eles nós conseguimos
Transformar ideias em realidade,
E melhorar o mundo ao nosso redor.
Nos permitem
Sonhar e criar,
Inovar e colaborar,
Construir um futuro melhor.
Projetos são como luz na escuridão,
Nos guiam nos árduos caminhos,
E ao mesmo tempo nos desafiam
A crescer e nos tornarmos melhores.
Com eles temos esperança,
E acreditando que é possível,
Com trabalho e dedicação,
Conquistamos o impossível.
domingo, 19 de fevereiro de 2023
Pontos de corte nos principais cursos de tecnologia e engenharia da UFBA em 2023
A Universidade Federal da Bahia (UFBA) está selecionando discentes para os cursos de graduação com início no ano atual, por meio Sistema de Seleção Unificada (SISU).
Fiquei curioso em analisar como anda a procura por cursos nas áreas de engenharia e tecnologia. Para isso, selecionei algumas das principais áreas profissionais: engenharias, geociências e informática, com seus respectivos cursos de bacharelado, e observei a nota de corte para a modalidade de seleção em ampla concorrência.
Como é apenas uma análise superficial, e para simplificar o modelo, não considerei ainda as outras categorias de seleção no SISU e nem a seleção que é feita com os egressos dos Bacharelados Interdisciplinares.
Segue uma tabela, com dados extraídos de ingresso.ufba.br:
| Nome do curso | Vagas em ampla concorrência | Nota de corte |
| CIÊNCIA DA COMPUTAÇÃO | 18 | 749,69 |
| ENGENHARIA QUÍMICA | 18 | 743,00 |
| ENGENHARIA ELÉTRICA | 18 | 740,61 |
| ENGENHARIA DE COMPUTAÇÃO | 18 | 739,43 |
| ENGENHARIA MECÂNICA | 18 | 723,79 |
| SISTEMAS DE INFORMAÇÃO | 18 | 716,41 |
| ENGENHARIA CIVIL | 36 | 710,87 |
| ENGENHARIA DE PRODUÇÃO | 18 | 701,76 |
| ENGENHARIA DE CONTROLE E AUTOMAÇÃO DE PROCESSOS | 18 | 699,81 |
| ENGENHARIA SANITÁRIA E AMBIENTAL | 18 | 673,67 |
| OCEANOGRAFIA | 12 | 667,29 |
| ABI - ENGENHARIA DE MINAS | 20 | 655,09 |
| GEOLOGIA | 20 | 646,09 |
| GEOFÍSICA | 12 | 638,88 |
| ENGENHARIA DE AGRIMENSURA E CARTOGRÁFICA | 18 | 636,89 |
Existem cursos que estão sobrepostos em mais de uma categoria, como exemplo, engenharia de computação, e de certo modo geologia. Contudo, fica evidente que a busca por cursos na área de informática e nas engenharias que têm como foco atuação na indústria de transformação segue sendo alta.
segunda-feira, 23 de janeiro de 2023
O Papel de um Líder na Motivação de sua Equipe
Autor: Tiago Matos Santos
Existe, já há um certo tempo na recente história da administração, um movimento de mudança no paradigma de gerenciamento de equipes. Evoluindo, assim por dizer, de um enfoque autocrático e engessado em suas estruturas, para um outro, focado mais no lado humano. Isto é, no aspectos psicológicos das pessoas e também nas interações sociais de grupos de pessoas.
Posto que a eficiência, o desempenho, e o bom funcionamento das equipes e das organizações depende da forma como se comportam seus indivíduos constituintes, e mais internamente, de seus sentimentos, o desenvolvimento da motivação se configura como um dos fatores cruciais a serem discutidos quando se trata de liderança, pois, a partir disto, é possível levar o ser humano a determinados comportamentos que possibilitam o alcance de resultados positivos.
Segundo a Escola de Relações Humanas, por meio de estímulos, fazem-se surgir necessidades nas pessoas. Tais necessidades as levam a estados de tensão que acabam por conduzi-las a comportamentos que objetivem sua satisfação. Caso a satisfação seja atingida, há uma volta ao estado inicial que é o de equilíbrio. Contudo, caso obstáculos venham a impedir que isto aconteça, é possível que prevaleça o sentimento de frustração.
O sentimento de satisfação de necessidades dos indivíduos se reflete, ainda segundo a Escola de Relações Humanas, no clima organizacional, que pode ser favorável ou não, e no seu moral, que pode ser mais alto ou mais baixo. O moral, por exemplo, pode acompanhar de forma direta as atitudes das pessoas. Se elevado, tem como alguns resultados: mais otimismo, cooperação e aceitação de objetivos. Se por outro lado, o moral for baixo, tende-se a resultados opostos: pessimismo, dispersão, má vontade e até agressividade.
A liderança é necessária e essencial na administração da organização humana. Líderes são os que, através de sua influência, conduzem as pessoas ao alcance de objetivos específicos, e são vistos por essas pessoas como um meio de atenuar incertezas e, em última instância, levá-las à satisfação de suas necessidades humanas. Sendo assim, líderes são figuras centrais no estímulo das atividades do grupo, e nesse ponto a motivação é um dos ingredientes que serão utilizados para focar esforços, dando coesão no processo de atingir os objetivos estabelecidos pela organização.
Existe uma certa variedade nas características do líder e seus estilos de liderança. Enquanto há um certo descredito quanto a influência de características de personalidade do líder, há evidências contudo que suportam a ideia de que os diferentes estilos de liderança implicam em diferentes resultados. E, além disso, cada estilo, seja mais autocrático, democrático, ou liberal, tem um apelo maior em diferentes situações.
Em suma, o líder deve ter a sensibilidade e saber adaptar-se aos diferentes contextos que são apresentados. Deve comunicar-se efetivamente e conhecer o sentimento de seus subordinados. Assim, terá meios de poder usar sua influência para incentivar e explorar os aspectos humanos que levam a comportamentos congruentes com objetivos desejados.