domingo, 5 de junho de 2011

☕🍂 Wabi-Sabi: o debug espiritual que o Japão fez na vida perfeita

 

Bellacosa Mainframe em momento wabi-sabi colocando miniaturas

☕🍂 Wabi-Sabi: o debug espiritual que o Japão fez na vida perfeita

 

Se tem um conceito japonês que eu considero um ABEND cultural necessário, esse conceito é o Wabi-Sabi. Ele é o oposto absoluto do mundo polido, plastificado, otimizado e “certinho” em que vivemos hoje. É como se o Japão tivesse olhado para a existência humana e dito: “isso aqui nunca vai compilar perfeito — e tá tudo bem.”

🌿 Origem: quando o erro virou virtude

O Wabi-Sabi nasce lá atrás, no Zen Budismo, principalmente entre os séculos XIV e XV, muito ligado à cerimônia do chá. Enquanto a elite buscava porcelanas chinesas caríssimas e impecáveis, os monges zen começaram a valorizar tigelas simples, rústicas, tortas, com rachaduras e marcas do tempo.

Wabi vem da simplicidade, da vida modesta, do pouco.
Sabi vem do tempo, da pátina, do envelhecimento bonito.

Traduzindo para o dialeto mainframeiro:
👉 dataset antigo, meio remendado, mas confiável e rodando há 30 anos em produção.

🍵 O famoso easter egg: Kintsugi

Aqui entra um dos meus easter eggs favoritos: Kintsugi.
Quando uma cerâmica quebra, ao invés de jogar fora, os japoneses colam os pedaços com laca misturada com ouro. As rachaduras ficam visíveis e valorizadas.

Isso é Wabi-Sabi puro.

Não é esconder o erro.
É dizer: “isso quebrou, sobreviveu e agora vale mais.”

Quem nunca viu um programa COBOL feio, cheio de IF aninhado, comentário em caixa alta, mas que salva a empresa todo dia às 3 da manhã, não entendeu o Wabi-Sabi ainda.

🧠 Como entender o Wabi-Sabi (sem filosofar demais)

Eu costumo explicar assim:

  • Nada é permanente

  • Nada é completo

  • Nada é perfeito

Aceitar isso traz uma paz absurda.
O Wabi-Sabi não pede que você melhore tudo. Ele pede que você observe, aceite e cuide.

É viver sabendo que:

  • O tempo vai passar

  • As coisas vão desgastar

  • As pessoas vão mudar

  • E você também

E tudo isso faz parte da beleza.

🛠️ Wabi-Sabi na prática (vida real)

Alguns exemplos simples:

  • Uma mesa de madeira cheia de marcas de copo ☕

  • Um caderno usado, amarelado 📓

  • Uma casa antiga com rangido no assoalho

  • Um bairro simples, sem glamour, mas cheio de história

  • Uma amizade longa, com silêncios confortáveis

Nada disso seria “instagramável”.
Mas tudo isso tem alma.

🗾 Importância do Wabi-Sabi para o Japão

O Japão é um país que convive com:

  • Terremotos

  • Tsunamis

  • Incêndios históricos

  • Reconstruções constantes

O Wabi-Sabi ensina que perder faz parte, que recomeçar é normal, que o transitório é a regra.

Talvez por isso o japonês respeite tanto:

  • Estações do ano

  • Folhas caindo

  • Flores que duram poucos dias (olá, sakura 🌸)

  • Objetos antigos

  • Profissões tradicionais

😏 Fofoquices filosóficas

Wabi-Sabi é o terror de:

  • Influencer de lifestyle perfeito

  • Coach de produtividade tóxica

  • Cultura do “sempre melhorando” sem parar

Ele sussurra no ouvido:
👉 “Calma… você já é suficiente.”

📌 Dicas Bellacosa Mainframe

  • Não jogue fora tudo que é velho

  • Repare mais do que substitua

  • Valorize histórias, não só resultados

  • Aceite suas falhas como parte da arquitetura

  • Nem tudo precisa de refactor agora

🧘 Conclusão

Wabi-Sabi não é tristeza.
Não é resignação.
Não é desistência.

É maturidade.

É olhar para a vida como um sistema legado:
cheio de gambiarras, histórias, remendos…
mas ainda funcionando, entregando valor e carregando memória.

E no fim das contas, meu amigo,
isso é lindo pra caramba 🍂☕

sábado, 4 de junho de 2011

🔥 DB2 Buffer Pool e a Família de Pools – Onde o DB2 Guarda o Cérebro (e a Paciência) 🔥

 

Bellacosa Mainframe apresenta o Db2 e seus pools

🔥 DB2 Buffer Pool e a Família de Pools – Onde o DB2 Guarda o Cérebro (e a Paciência) 🔥

 


Se o DB2 fosse um organismo vivo, o buffer pool seria o cérebro de curto prazo.
Não é onde o dado nasce.
Não é onde o dado mora definitivamente.
Mas é onde tudo passa antes de fazer sentido.

Quem entende buffer pool:

  • entende performance

  • entende CPU

  • entende por que “não mexemos nisso em produção”

E quem não entende…
culpa o SQL.


🕰️ Um Pouco de História – Quando Disco Era Lento de Verdade

No DB2 antigo (e não tão antigo assim):

  • disco era caro

  • I/O era lento

  • memória era luxo

A IBM fez o óbvio (e genial):
👉 ler do disco uma vez e reutilizar o máximo possível.

Assim nasceu o buffer pool:

  • páginas lidas do tablespace

  • mantidas em memória

  • reutilizadas enquanto fizer sentido

💡 Resultado:
Menos I/O.
Mais performance.
Menos gritos no plantão.


🧠 O Que é um Buffer Pool, na Prática?

Buffer pool é uma área de memória onde o DB2 mantém:

  • páginas de dados

  • páginas de índice

Antes de ir ao disco, o DB2 pergunta:

“Isso já está no buffer?”

Se estiver:
🚀 rápido
Se não estiver:
🐢 I/O físico

💡 Regra Bellacosa:
DB2 rápido = buffer pool feliz.


📦 Tipos de Buffer Pool no DB2

🔹 BP0 – O Histórico

O buffer pool default, o “pai de todos”.

💡 Fofoquinha:
Ambiente que só tem BP0 geralmente tem performance “misteriosa”.


🔹 Buffer Pools Customizados (BP1, BP2, …)

Criados para separar:

  • dados críticos

  • índices quentes

  • tabelas gigantes

  • tabelas raramente acessadas

💡 Boa prática:
Índice quente em buffer pool separado = ganho imediato.


🔹 Buffer Pools Especiais

  • BP32K → tabelas com page size 32K

  • BP8K / BP16K → workloads específicos

🥚 Easter egg:
Criar BP32K sem necessidade é desperdício elegante de memória.


📊 Page Size – O Detalhe que Muda Tudo

Page size define:

  • quanto dado cabe por página

  • quantas linhas por I/O

Page SizeQuando usar
4KOLTP clássico
8KÍndices largos
16KLOB leve
32KLOB pesado

💡 Dica Bellacosa:
Page grande = menos I/O
Mas também = menos páginas no buffer pool.


🔄 Outros Pools Importantes no DB2 (Além do Buffer Pool)

🧾 EDM Pool (Environmental Descriptor Manager)

Guarda:

  • SQL dinâmico

  • Planos preparados

  • Descrições de objetos

💡 EDM pequeno = SQL recompilando toda hora.


🧠 Sort Pool

Usado para:

  • ORDER BY

  • GROUP BY

  • DISTINCT

💡 Comentário:
Sort indo para disco = SQL chorando.


🧵 RID Pool

Controla:

  • listas de RIDs para acesso indireto

💡 RID pool insuficiente = access path ruim sem aviso claro.


📥 Log Buffer

Onde o DB2 guarda logs antes de gravar no disco.

💡 Dica de guerra:
Log buffer pequeno = commit lento = aplicação reclamando.


🧰 Utility Pool

Usado por:

  • LOAD

  • REORG

  • RUNSTATS

💡 Ambiente sem utility pool dedicado sofre em batch pesado.


🔥 Buffer Pool e Performance – Onde os Adultos Conversam

Indicadores clássicos:

  • Hit ratio alto

  • Read I/O baixo

  • Write eficiente

💡 Fofoquinha séria:
Hit ratio alto não garante bom desempenho.
Às vezes o dado certo está fora do pool certo.


🧪 Buffer Pool vs Lock – O Drama Oculto

Buffer pool cheio:

  • mantém páginas sujas

  • segura lock mais tempo

  • aumenta contenção

💡 Dica Bellacosa:
Performance não é só memória.
É equilíbrio.


⚠️ Erros Clássicos que Todo Mundo Já Viu

  • Tudo no BP0

  • Índice crítico no mesmo pool que tabela fria

  • BP gigante sem uso real

  • BP pequeno para workload OLTP pesado

🥚 Easter egg de produção:
“Mudamos só o buffer pool” já causou tanto incidente quanto ALTER TABLE.


🧠 Buffer Pool no Mundo Moderno (DevOps & Observabilidade)

Hoje monitoramos:

  • hit ratio por pool

  • read/write por objeto

  • aging de páginas

  • comportamento por workload

💡 Regra moderna:
Tune sem métrica é chute elegante.


🗣️ Fofoquices de Sala-Cofre

  • “DB2 está lento hoje” → buffer pool cheio

  • “Nunca mexemos nisso” → por isso mesmo

  • “É só aumentar memória” → nem sempre


🧠 Pensamento Final do El Jefe

Buffer pool não é detalhe técnico.
É arquitetura viva.

Quem entende pool:

  • evita I/O

  • reduz CPU

  • ganha previsibilidade

Quem ignora:

  • otimiza SQL errado

  • culpa o hardware

  • trabalha de madrugada

🔥 Regra final Bellacosa Mainframe:
No DB2,
o dado pode morar no disco…
mas a performance mora na memória. 💾🧠

quinta-feira, 2 de junho de 2011

🔥 Different Types of RETURN Statements no CICS

 


🔥 Different Types of RETURN Statements no CICS

 


☕ Midnight Lunch, ENTER pressionado e… RETURN errado

13h07.
Usuário pressiona ENTER.
A tela some.
Nada acontece.

No fundo da sala alguém pergunta, com medo:

“Esse RETURN tá certo… né?”

Hoje vamos falar de um comando pequeno na sintaxe, mas gigante no impacto:
o EXEC CICS RETURN e suas variações.

Porque no CICS, retornar errado é desaparecer da aplicação.


🏛️ História: o retorno como base do online

Desde o início do CICS, o RETURN é o ponto onde:

  • A task termina

  • O controle volta para o CICS

  • A transação decide se continua ou morre

Muito antes de frameworks web, o CICS já dominava o request/response.

📌 RETURN é o “commit emocional” da transação.


🧠 Conceito essencial (grave isso)

RETURN não é só sair do programa.
É decidir o destino da transação.

Cada tipo de RETURN muda o comportamento do sistema.


🔁 Tipos de RETURN no CICS

Vamos aos principais, sem enrolação.


1️⃣ RETURN simples – fim da linha

O que faz?

  • Encerra o programa

  • Finaliza a task

  • Nenhuma continuação

EXEC CICS RETURN END-EXEC.

📌 Usado quando:

  • Processamento acabou

  • Nenhuma tela a exibir

  • Nenhuma navegação

⚠️ Usado errado → usuário perdido.


2️⃣ RETURN com TRANSID – chama outra transação

O que faz?

  • Finaliza a task atual

  • Inicia nova transação

  • Novo task number

EXEC CICS RETURN TRANSID('TRN2') END-EXEC.

📌 Ideal para:

  • Navegação controlada

  • Separação de fluxos

  • Segurança transacional


3️⃣ RETURN com COMMAREA – estado preservado

O que faz?

  • Finaliza a task

  • Preserva dados para a próxima

EXEC CICS RETURN TRANSID('TRN2') COMMAREA(WS-COMMAREA) LENGTH(LEN) END-EXEC.

📌 Base do pseudo-conversacional.


4️⃣ RETURN com CHANNEL – o jeito moderno

O que faz?

  • Mesmo conceito da COMMAREA

  • Muito mais flexível

EXEC CICS RETURN TRANSID('TRN2') CHANNEL('CHN01') END-EXEC.

📌 Padrão moderno. Escalável. Elegante.


5️⃣ RETURN IMMEDIATE – sem passar pelo fluxo normal

O que faz?

  • Termina a task agora

  • Ignora pseudo-conversacional

EXEC CICS RETURN IMMEDIATE END-EXEC.

📌 Use com cuidado:

  • Emergência

  • Erro crítico

  • Saída forçada


🥊 RETURN vs XCTL vs LINK (mini comparativo)

ComandoRetorna?Nova task?Uso típico
RETURNNãoDependeEncerrar
XCTLNãoNãoTroca de fluxo
LINKSimNãoSub-rotina

📌 Confundir isso gera bug fantasma.


🛠️ Passo a passo Bellacosa (antes do RETURN)

1️⃣ O usuário precisa ver outra tela?
2️⃣ Preciso preservar estado?
3️⃣ Nova transação ou mesma?
4️⃣ COMMAREA ou CHANNEL?
5️⃣ Estou encerrando cedo demais?

📌 RETURN é decisão arquitetural.


⚠️ Erros clássicos (easter eggs)

🐣 RETURN sem TRANSID em fluxo pseudo-conversacional
🐣 COMMAREA com tamanho errado
🐣 RETURN antes de liberar lock
🐣 Misturar XCTL e RETURN sem lógica
🐣 Esquecer canal ativo

📌 Todo sumiço de tela começa aqui.


📚 Guia de estudo para mainframers

Para dominar RETURN:

  • Pseudo-conversational design

  • Program Control

  • COMMAREA vs CHANNEL

  • Transaction lifecycle

  • Error handling

📖 Manual essencial: CICS Application Programming Guide


🤓 Curiosidades de boteco mainframe

🍺 RETURN existe desde os primeiros CICS
🍺 RETURN IMMEDIATE já salvou produção quebrada
🍺 Muitos “bugs de tela” são RETURN errado
🍺 Web frameworks copiaram o modelo sem saber


💬 Comentário El Jefe Midnight Lunch

“No CICS, voltar é escolha.
Sumir é consequência.”


🚀 Aplicações reais hoje

  • Sistemas de atendimento

  • Core bancário

  • Sistemas governamentais

  • Aplicações híbridas CICS + API


🎯 Conclusão Bellacosa

O EXEC CICS RETURN parece simples.
Mas ele define:

  • Fluxo

  • Estado

  • Experiência do usuário

🔥 RETURN não é sair. É decidir o futuro.


quarta-feira, 1 de junho de 2011

📜 Crônicas da Rua Ultrecht – Volume “Novo Horizonte”

 


📜 Crônicas da Rua Ultrecht – Volume “Novo Horizonte”
Ao estilo Bellacosa Mainframe, para os leitores fiéis deste escriba desorganizado e feliz

Há memórias que chegam como dump de sistema: fragmentadas, desalinhadas, registros misturados, datas colidindo como timestamps descompassados num JES2 atolado.
Mas, no meio desse caos mental, há sempre um bloco consistente, um dataset íntegro: Novo Horizonte, interior de São Paulo.
Fim dos anos 1970, início dos anos 1980.
Antes da pré-escola, antes da alfabetização, antes do Dandan — ou depois, quem sabe. A cronologia é um JCL mal comentado. Mas a lembrança, essa sim, é vívida.



🌽 Novo Horizonte — O Parêntese da Infância

Aqueles meses (ou seria um ano?) em Novo Horizonte foram como um fork no meu sistema de vida.
Meu pai, fotógrafo, resolveu tentar sorte na cidade dos primos.
E ali reencontrei três figuras lendárias:

  • Sidney

  • Marcele

  • Duzinho

Filhos de Eduardo e Cleuza, parentes do meu pai e operadores oficiais da oficina técnica da vida real, especializada em tratores, caminhonetes e utilitários rurais.
Era um mundo de graxa, ferro, escapamentos quentes, parafusos, barulho e cheiro de óleo queimado — um parque de diversões para qualquer criatura diabinha em formação.



🌭 O Hot Dog da Iluminação Química

Foi lá que eu vivi minha primeira epifania gastronômica.

Até então, na minha casa, “hot dog” era:

  • pão

  • salsicha

  • molho de tomate caseiro

Delicioso, mas… doméstico.
Quase artesanal.

Então veio o evento.
A mordida.
A descoberta.

Hot dog com ketchup.

Meu Deus.
O choque cultural.
A explosão industrial.
O sabor químico, doce, artificial, processadíssimo — e absolutamente perfeito.

Era como sair de fita magnética e entrar no SSD.
Como trocar gloops de tinta por polímeros sintéticos de primeira geração.
Como sair de CP/M e descobrir mainframe z/OS.

Até hoje — até hoje — quando provo ketchup, uma pequena cena pós-créditos sobe na minha mente:
eu, pequenino, segurando um hot dog e pensando:
o que é esse néctar das fábricas?



⚠️ Epic Fail Nº 271 — A Piscina de Óleo Queimado

Mas nenhuma lembrança supera o grande mergulho.

Na oficina do Edu, havia um reservatório aberto no chão — um fosso pouco profundo onde se acumulava óleo queimado de lubrificação.
Preto.
Denso.
Pegajoso.
Cheiro forte.
Aquele tipo de resíduo que hoje teria uns 47 alertas ambientais e umas cinco multas da CETESB.

Eis que, num momento de inspiração duvidosa, Sidney, provavelmente com a inocência (ou malícia) típica dos primos mais velhos, comenta:

“Olha ali… a piscina!”

Eu, crédulo, aspirante a passarinho, criatura ainda sem firmware de autopreservação, pensei:

“Piscina = pular.”

E pulei.

Sim.
Eu pulei dentro do óleo.



🛢️ O Batismo Petrolífero

Subi do fosso como um personagem bugado de jogo 8-bit:

  • inteiramente preto,

  • grudento,

  • escorrendo óleo,

  • com a roupa condenada,

  • e com a alma impregnada de hidrocarbonetos.

Minha mãe quase teve um AVC.
Meu pai não sabia se brigava ou fotografava.
E eu, no auge da inocência, estava mais curioso do que arrependido.

Hoje, quando vejo fotos de derramamento de crude no mar, aves cobertas de petróleo, tartarugas lutando para mexer a nadadeira…
me bate uma solidária pontada no peito.

Eu sei.
Eu sei o que é viver isso.

Sou praticamente um sobrevivente de derramamento ambiental, versão infantil.


🎞️ Novo Horizonte — O Episódio Perdido da Série

Essas memórias não têm ordem, não têm lógica, não seguem calendário.
São como blocks jogados pelo tempo, soltos na memória, prontos para serem reorganizados por algum futuro arqueólogo digital.

Mas elas existem.
Pulam do passado como aquele hot dog vermelho, aquele pulo no poço, aquele abraço da infância simples.