# Bucket List of the Dead
Caloni, 2023-08-02 cinema animes [up] [copy]A ideia é bem boa. Garoto trabalha como um morto-vivo para uma empresa exploradora e quando começa o apocalipse zumbi ele renasce. E vai comprar umas brejas de bike no meio da horda dos novos mortos-vivos. No entanto, por ser um anime adolescente ele perde pontos. É muita enrolação. O conceito é uma bucket list que o jóvi preenche de coisas que ele quer fazer e nunca teve tempo ou chance ou aquelas desculpas que damos a nós mesmos. A analogia pós-pandemia é muito óbvia. A graça é que é como se ele estivesse em pleno lockdown. Eu lembro minha felicidade nerd na época do coronga, que sabia que não viveria um apocalipse, mas que o vírus era o acontecimento mais próximo disso e estava de bom tamanho. Esta série tem alto astral. Se você é jóvi e se ficar na moda vai curtir.
# Brincando com Fogo
Caloni, 2023-08-02 cinema series dorama [up] [copy]Esta novela japonesa chega a ser um pouco engraçada, mas é involuntário. Seu elenco é tão caricato. Será influência de anime? O roteiro não ajuda também. Sem conexão com reais personagens de um drama, a história de investigação de uma filha em busca da verdade para sua debilitada mãe por um acontecimento do passado apresenta personagens estereotipados até o talo. É um exagero estilizado (como certos animes) com trilha sonora moderninha. Não chega a ser curiosa esta versão pop dos valores nipônicos.
# Chungking Express (Amores Expressos)
Caloni, 2023-08-08 cinema movies [up] [copy]Não são fascinantes as rimas que encontramos pelo cinema? Esta Amelie Poulain nasceu antes mesmo que a original, em 1994. É a gamine mais espontânea de todos os tempos. Isso porque ela não é atriz de verdade, mas a cantora mais famosa de Hong Kong. Ela dança ao som de California Dreamin' e canta sua própria versão de Dreams (The Cranberries). Faye Yong é a alma de um projeto de baixo orçamento, introduzida em seu filme pelo diretor Wong Kar Wai como um estabanado, o que não é costume do cineasta e que ajuda a explicar o caos interno da personagem e das filmagens com uma improvisadora por vocação.
E esta é apenas a segunda e mais comportada metade do filme. Em sua primeira parte existe mais ação, com tiros inclusive, em uma metrópole que não liga para corações atribulados, que mesmo assim insistem em bater. Curiosamente ambos os corações masculinos são de policiais. E mais curioso ainda é a breguice do primeiro.
Seu nome é He Qiwu e ele termina com uma garota chamada May no dia primeiro de abril. Quer dizer, ela termina com ele. Para ele se certificar que ela de fato o abandonou, ele compra uma lata de abacaxi por dia, a fruta favorita dela, até que ela retorne. Ou ela retorna ou todas as latas irão vencer no dia do aniversário dela: primeiro de maio. Em uma história paralela uma peruca loira de óculos escuros inclusive à noite foge pelas ruas depois que um plano de contrabando envolvendo indianos termina mais azedo que os abacaxis do policial. Tiros são trocados neste episódio mais almodovariano da carreira do diretor asiático. É charmoso, bagunçado, clichê e adorável.
Tudo isso empalidece quando começa a história de Faye Wong e sua paixonite pelo segundo policial do longa, que também levou um fora de sua garota, uma comissária de bordo, muito boa por sinal. Assim como ela, Faye mantém sua cabeça nos ares, mas com os pés fincados em terra firme, e invade a casa do moço e cuida dela como se já fosse sua. E eis que nasce a inspiração de Jean-Pierre Jeunet para a icônica versão francesa. E o policial acompanha, batendo um papo com os objetos da casa que um dia foram os participantes de uma história de amor.
Os movimentos de câmera do filme são frenéticos e acompanham os personagens com energia. Há cenas no começo que evocam isso, pois elas ficam borradas. Há um quê de experimentação, curiosa porque podemos observar traços de uma filmografia pautada nos solitários e as paixões não correspondidas. Uma oportunidade única para entender a evolução das rimas do cinema.
# Descobrir ativação de classes WinRT
Caloni, 2023-08-13 computer reversing [up] [copy]A Windows Runtime nada mais é que o COM repaginado. O COM já previa o uso de proxies para comunicação remota entre processos. A WinRT adicionou mais uma interface e uma função. Vou neste post descrever o processo pelo qual descobri como funciona o registro de um dispositivo no Azure Active Directory (AAD).
O teste feito é logar no Microsoft Teams com uma conta de empresa pertencente a um domínio federado, o que significa que para fazer o login existe um plugin feito pela empresa que será carregado e autenticar o usuário. TL;DR isto é feito por um processo chamado `Microsoft.AAD.BrokerPlugin.exe`, que usa WinRT para se comunicar com o servidor AAD e com o sistema.
Analisando o disassembly pelo IDA e realizando algumas sessões de debug eu estava caminhando pela interface `IUserDeviceRegManagerStatics` que havia encontrado anteriormente. Eu sabia que essa interface estava por trás do registro da máquina porque depois que alguns de seus métodos são chamados o comando `dsregcmd.exe /status` lista o computador como joined dentro do AAD e se você for na parte de contas do usuário naquela tela de configurações do Windows irá aparecer a mesma conta usada para logar no Teams.
Buscando no registro pelo nome dessa interface existe uma entrada em `HKEY_CLASSES_ROOT\Interface\{b5decd05-58ef-4cd3-ae25-d177bcbcea9e}` aonde existe uma subkey `ProxyStubClsid32`. Essa subkey, de acordo com o MSDN, é usado para traduzir um IID -- ID de Interface -- para um CLSID -- ID de classe. Nas palavras do MSDN (em inglês, por favor): "Maps an IID to a CLSID in 32-bit proxy DLLs".
If you add interfaces, you must use this entry to register them (32-bit systems) so that OLE can find the appropriate remoting code to establish interprocess communication.
Eu acredito que a mesma lógica se aplica a ambientes de 64 bits, que é o caso do Windows 10 onde estou analisando.
Então esse ID é um CLSID para o código de um proxy que irá me ajudar a chamar esta interface `IUserDeviceRegManagerStatics`. Tudo bem, vamos lá. O valor default dentro dessa subkey é `{65704743-2513-4987-9fc9-826bbedde743}` e eu devo fazer a busca por este ID dentro de `HKEY_CLASSES_ROOT\CLSID`, já que se trata de um ID de classe. Eu encontro. O valor default dessa chave diz "UserDeviceRegistration", então eu penso ser este o cara que estou procurando.
Existe uma chave `InProcServer32` dentro desta chave. Novamente vamos à documentação, e de acordo com o MSDN:
Registers a 32-bit in-process server and specifies the threading model of the apartment the server can run in.
Isso faz todo o sentido, porque o valor default para esta mesma chave é "C:\Windows\System32\UserDeviceRegistration.dll" e existe uma string `ThreadingModel` também especificando "Both". Olhando para as funções exportadas por esta DLL `UserDeviceRegistration.dll` são listadas as bem conhecidas `DllCanUnloadNow`, `DllGetActivationFactory` e `DllGetClassObject`. Isso é bê-a-bá de COM. O código que eu quero usar deve carregar esta DLL e chamar `DllGetActivationFactory` ou `DllGetClassObject` para obter um ponteiro para uma classe implementando esta interface ou um proxy para chamar esta classe remotamente.
Ao analisar pelo OleView pela `IUserDeviceRegManagerStatics` não há uma biblioteca de tipos com os nomes dos métodos e argumentos. Existe uma vtable genérica com algumas procedures chamadas "Proc1", "Proc2" e assim por diante. Já que desde minha sessão de debugging anterior eu vi um monte de funções RPC sendo chamadas eu irei assumir que `UserDeviceRegistration!DllGetActivationFactory` está sendo chamada. E, mais uma vez, de acordo com o MSDN, este entry point:
Retrieves the activation factory from a DLL that contains activatable Windows Runtime classes.
That's a bingo! Windows Runtime classes é o que estou procurando mesmo. Como eu já estudei anteriormente, isso bate com o retorno desta função: um ponteiro para a interface `IActivationFactory`. A entrada deste argumento é uma `HSTRING`, que é uma nova string definida pela Windows Runtime para strings imutáveis das linguagens mais populares, como C# e JS. E, mais uma vez, isso explica porque em minhas sessões de debug observei um monte de chamadas a `WindowsDeleteString`. Quando você começa a fazer reversa começa a ouvir ecos de sessões passadas para conseguir montar o quebra-cabeças.
Com tudo isso que descobri resolvi colocar um breakpoint no evento de load desta DLL.
sxe ld:UserDeviceRegistration.dll
Repito o procedimento de registro de máquina e o breakpoint é ativado. Estou pronto para agora colocar um breakpoint na `DllGetActivationFactory`. Porém, tenho um insight neste momento. Eu me lembro que posso usar o Process Explorer para buscar no sistema inteiro quem é que está usando a mesma DLL que estou de olho. Afinal de contas, se ela é a interface para se comunicar com a implementação, faz sentido que dentro dela exista a implementação.
E com isso eu encontro a `RuntimeBroker.exe`, processo iniciado quase ao mesmo tempo que o BrokerPlugin. Coincidência? Acho que não.
Isso significa que agora eu posso depurar tanto o BrokerPlugin quanto a RuntimeBroker e usar os símbolos da DLL em comum para encontrar quais funções deverão ser chamadas de ambos os lados, já apostando que o método chave seria `CUserDeviceRegManagerStatic::WorkplaceJoin`, já que eu já encontrei este método em sessões passadas e seu nome faz todo sentido.
Na minha primeira tentativa o breakpoint não disparou. Busco, então, por nomes de funções semelhantes:
x UserDeviceRegistration!Windows::Internal::UserDeviceRegistration::CUserDeviceRegManagerStatic::*
Já que estou interessado no macro coloco breakpoint em todos os métodos da classe. Faço isso também do lado do BrokerPlugin e seus métodos dentro de `UserDeviceRegistration::IUserDeviceRegManagerStatics`. Posso acompanhar o fluxo sem parar usando um parâmetro bem esperto nos breakpoints do WinDbg: um comando qualquer. Nesse caso uso imprimir o nome da função chamada e o comando `g`, que segue a execução sem parar. Por exemplos (RuntimeBroker e BrokerPlugin, respectivamente):
bp UserDeviceRegistration!Windows::Internal::UserDeviceRegistration::CUserDeviceRegManagerStatic::DelegatedWorkplaceJoinWithRequestId ".echotime; .echo UserDeviceRegistration!Windows::Internal::UserDeviceRegistration::CUserDeviceRegManagerStatic::DelegatedWorkplaceJoinWithRequestId; g" bp AAD_Core!Windows::Internal::UserDeviceRegistration::IUserDeviceRegManagerStatics::GetJoinInfo ".echotime; .echo AAD_Core!Windows::Internal::UserDeviceRegistration::IUserDeviceRegManagerStatics::GetJoinInfo; g"
Com isso eu descobri qual o processo e qual a classe envolvida neste processo de registro de máquina. Graças também aos símbolos disponibilizados pela Microsoft fica muito mais fácil entender o fluxo. Pretendo usar esta técnica mais vezes no futuro.
# As Órfãs da Rainha
Caloni, 2023-08-17 cinema movies cinemaqui [up] [copy]Este segundo longa da cineasta Elza Cataldo (Vinho de Rosas) é antes de tudo um trabalho documental de uma época pouco vista na cinematografia brasileira. Estamos falando dos longínquos anos 1580 e seus esparsos imigrantes; a maioria está lá por sentença, ainda que alguns vendidos pela chance do novo mundo.
O filme recria este ambiente e os ânimos dos locais, começando pelas pessoas menos satisfeitas por estarem lá: as mulheres de Portugal. Há três delas, irmãs. As duas mais velhas já vieram encomendadas para formar família. A mais nova não: ela tem o pé defeituoso e nenhuma serventia. Então ela fica na igreja com um padre que se sente guardião da moral entre os poucos habitantes de Vila Morena e os nativos em volta. Não demora muito para ela começar a desenhar sua arte e ter uma paixonite por um indiozinho de fala mansa.
O trabalho histórico no filme é impressionante, ainda mais por se tratar de uma produção nacional. Não estamos acostumados a épicos que resgatam o início de nossa brasilidade, e todo o afinco e detalhes em narrar esta passagem aumenta a imersão.
As atuações são precisas, beneficiadas por diálogos que aumentam nossa compreensão dos valores daquela sociedade. Existe um quê teatral que ofusca o realismo que é tão curioso quanto os efeitos de computação gráfica que surgem; na maioria gratuitos, exceto pela morte de uma criança.
Outro detalhe que soa condescendente com o espectador contemporâneo são as cenas de violência cotidiana daquela época, que no filme ocorrem fora de quadro. É de bom tom, mas suaviza a brutalidade, se aproximando de uma novela da vida privada e se afastando do seu potencial de provocar. Ser um filme lembrado por mais tempo do que o tempo de sua produção (mais de uma década) deveria ser um objetivo desejável.
Por falar nisso, suas filmagens terminaram assim que os casos de COVID começaram no Brasil, e todos os meses de preparo da pré-produção se pagaram, pois o trabalho após filmado ocorreu remotamente, quando já havia uma alma construída, idealizada com muito esmero por Cataldo.
Apesar da longa duração e o ritmo procaico o filme passa rápido, mas não o suficiente para seu terceiro ato, que soa arrastado não pelo conteúdo, mas por não esperarmos por todo um episódio final envolvendo a chegada da Santa Inquisição e o julgamento dos moradores da Vila. Essa parte também é um primor de detalhes documentais; quase não deixa escapar a visão parcial de lados e a defesa ferrenha de opinião que estamos acostumados a perceber em produções de viés social. Só que este longo processo que transforma amigos e conhecidos em traidores uns dos outros para salvarem sua pele não acompanha o ritmo do espectador. Por outro lado, lembra um pouco as farpas trocadas na pandemia, que dividiu por completo as pessoas.
Se eu fosse você eu assistiria este filme no cinema. É muito difícil na vida moderna do sofá de casa ou dos gadgets na palma do mão escapar do ritmo alucinante de luzes piscando. Este trabalho histórico merece uma imersão que não está disponível em streaming. Exceto, talvez, em sua revisita.
# Oppenheimer
Caloni, 2023-08-17 cinema movies [up] [copy]Tarde de solteiro, resolvi dar uma ida e volta ao cinema de caminhada. Pensei que teria muito a refletir na volta. Estava lembrando na ida da última vez que fiz isso e assisti sem pretensão o maravilhoso Tudo, No Mesmo Lugar, Ao Mesmo Tempo. Qual seria o filme escolhido dessa vez?
Oppenheimer, é claro. Eu assistiria Barbie, mas já está prometido para ver com a Mitiko. De qualquer forma seria um dos dois. O motivo é que ambos são um dueto de um meme que se espalhou em 2023. Tanto que ambos os filmes tiveram bilheterias significativa nas estreias.
Porém, por via das dúvidas, fui comprar pipoca. Desde a bagunça de Tennet, nunca se sabe o que o diretor Christopher Nolan pode aprontar. Na direção e no roteiro. Então, que pelo menos a pipoca seja boa. Sem contar que são três horas de duração.
Escolho um cinema com os efeitos porque meu amigo me disse que era importante. Hoje eu entendo para que serviriam nesse caso: para disfarçar a quantidade de vergonha alheia que vai vindo aos borbotões conforme assisto a uma lástima de cinema.
A começar pelas falas. Nolan tem um elenco de peso, das antigas, e não entrega um diálogo sequer que não te faça pensar "o que eu estou fazendo aqui". Os únicos minutos em que o filme faz algum sentido é na introdução, os primeiros quinze minutos. Faz sentido e é agradável ser apresentado aos poucos às mentes brilhantes daquela época.
Ao final, se você se lembrar que a primeira cena é Oppenheimer olhando para gotas de água caindo em um lago, vai perceber que sua última cena sequer rima. Se você for um espectador autista ainda pode observar que antes do teste da bomba de Los Alamos choveu torrencialmente, o que faria rima com a vinda da guerra fria e suas ameaças de bombas de todos os lados e os delírios do cientista em vislumbrar este futuro e... não, chega. Você não precisa disso. Ninguém precisa disso.
A impressão após assistir a Oppenheimer é de que o mundo não precisa de um filme sobre esses fatos históricos conforme descritos, em estilo documental e ao mesmo tempo thriller de ação psicológica ou o que seja. Assim como o final da guerra não precisava dessa demonstração de forças irracional e desproporcional. No entanto, aí estão as mazelas das bombas, por gerações. O aí está o filme. A vantagem do filme é que ele só será lembrado este ano. E olha lá. Só por causa dos memes.
Nolan gosta de testar coisas novas no cinema, e isso é admirável. Ele quis uma produção "modesta" que poderia evocar parte do charme visto em Dunkirk se não fosse pelas distrações narrativas, cuja divisão de tempos para criar uma espécie de suspense eu nem vou comentar de tão incômodo que foi.
Queria mais comentar um dos maiores equívocos deste diretor que hora flerta de Kubrick, hora de Hitchcock, mas nos últimos tempos tem ido de Ed Wood. Estou falando de sua conversa sobre o som.
Nolan constrói com a ajuda nada inspirada e toda exagerada do seu diretor de música uma sinfonia do caos audiovisual. Não são apenas as notas musicais tenebrosas, exageradas no ritmo e volume, mas também o que acontece ao mesmo tempo no filme. Os delírios, as alterações. Tente, por exemplo, defender um Oppenheimer pelado fazendo sexo com sua amante na sala onde está sendo julgado como uma tentativa de mostrar o que sua esposa está visualizando e vai começar a entender onde eu quero chegar quando critico o autismo severo de um dos diretores mais brilhantes que já passou por Hollywood.
Faz parte da experimentação do cineasta estes pequenos grandes tropeços em sua carreira. Porém, o que me incomoda é ele não ter enxergado o que nós admiramos em vários de seus trabalhos. É como se seus acertos fossem incidentais, assim como os erros. E isso preocupa quem gosta da sétima arte, onde Nolan é exemplo nas últimas duas décadas.
É triste dizer, mas faz falta o seu irmão no equilíbrio entre direção e roteiro. Gênios não trabalham sozinhos nem partem do nada. É uma pena que a pessoa que dedicou os últimos anos a entender isso do ponto de vista da ciência não consiga enxergar isso em sua própria área.
# Eami
Caloni, 2023-08-19 cinemaqui cinema movies [up] [copy]Eami ganhou diversos prêmios mundo lá fora e é o representante do Paraguai para o Oscar desse ano. Então deve ser muito bom, né? Você sabe que não é assim que a banda toca.
Uma mescla de imagens enigmáticas e paradas com uma narração simbólica, quase hermenêutica, sobre eventos passados, o filme prefere assumir a narrativa do oprimido indígena, o que se torna para o espectador não-indígena e não-engajado nesse assunto, ou seja, qualquer desavisado que entrar na sala de cinema, uma história sobre coisa alguma. E pior: que dá vontade de dormir.
Pelo menos nisso o filme acerta, já que os delírios são sobre um passado longínquo, 30 anos atrás, sobre ou um massacre, ou uma invasão, ou a queima da floresta, habitat natural do povo retratado. Porém, diferente de trabalhos instigantes, este não te provoca para buscar conhecimento após a sessão.
O idioma e os costumes deste povo são extremamente primitivos. Indígenas do novo mundo são o último elo entre a civilização e o homem pré-histórico. Talvez por isso este mundo nos pareça tão estranho. Para alguns fascinante. Para o resto, nós, completamente estranho. Alienígena.
Entre este elo e o homem moderno infinitas disputas de terra e muito derramamento de sangue existiu e continua existindo até a configuração geográfica e política atual dos países. Assassinatos, escravidão, tortura, estupros, sabotagens e muitas outras ações pela sobrevivência dos povos existiu na história. Mas, por algum motivo, os indígenas ocupam uma posição especial quando se fala de algo que sofreram.
E não é o surgimento do cinema, este mecanismo de pausterização de dramas. Há várias outras histórias de opressão de outros povos onde entendemos a língua que está sendo falada. O drama consegue ser transmitido, mesmo que pelo próprio povo que massacrou o derrotado.
Talvez seja esse mito do bom selvagem misturado com políticas sociais e uma pitada de nascisismo geopolítico. Nós gostamos de nos sentir importantes ao falar sobre algo no sentido de denúncia, pois nos posicionamos como salvadores, ou parte da salvação. Nem que seja assistindo, dialogando sobre o filme ou expressando nossa opinião muito original e independente a respeito de concordarmos com tudo que a cineasta mostra. Este é o verdadeiro debate do século: só há um lado e é sempre o lado certo.
As imagens de Eima não fazem sentido. Suas trucagens com filtro de cor, luz e transições entre cenas , além de bregas, são o combustível que dá mais sono ainda. Nada do que você ver neste filme te salvará do sono eterno. Estamos fadados a acompanhar o drama indígena em nossos sonhos. Nosso único consolo é que o tormento acaba logo.
# Finalmente blogawk
Caloni, 2023-08-20 computer projects [up] [copy]Fiquei muito empolgado com a solução awk que converte meus posts para um epub "carregável" em um leitor de ebook e no computador e parti para usar a mesma estratégia em meu blog para abandonar dessa vez o Hugo, um renderizador de sites estáticos feito em golang extremamente rápido, mas que não está dando conta dos meus mais de 4000 posts.
O maior peso dessa conversão é o file system. A leitura e escrita de milhares de arquivos, mesmo que não seja feita nenhuma conversão, por si só já é a parte mais pesada. Sendo assim, adotei duas estratégias de otimização:
1. Usar um único arquivo de leitura.
Com isso eu consigo aplicar a leitura deste arquivo pelo script awk em um passo só. De quebra, as mudanças sistêmicas no blogue serão muito mais fáceis.
2. Usar um arquivo por mês na escrita.
Esse foi o maior economizador de tempo. Gerar 4000 novas entradas no file system do Windows estava custando caro, em torno de um minuto. Transformar isso em uns 300 arquivos fez a escrita levar de dois a três segundos!
A tradução do site para awk levou no total uns dois dias. A ideia foi copiar o HTML gerado pelo Hugo e fazer os mapeamentos de data, tags e estruturas de listagem no awk, que lida com isso através de seus arrays dinâmicos com muita facilidade e rapidez.
Um ponto de atenção aos novatos do awk que eu destacaria dessa experiência é sobre as variáveis. Exceto os argumentos de funções, todas as variáveis são globais, o que pode dar alguns pesadelos quando há mais de um uso do mesmo nome, especialmente quando há diferença entre tipos escalares e arrays. Se eu fosse fazer do zero novamente eu não economizaria na largura dos nomes e nos prefixos, como g_ para denotar as globais. Um truque muito bom do awk também é declarar variáveis da função como parâmetros que não são recebíveis pelo chamador. Há uma convenção de separar por espaços os parâmetros reais dos locais.
De resto, agora tenho a liberdade de renderizar meu blogue em questão de segundos. Aposentei a estrutura do Hugo e estou usando awk para gerar tanto o blogue quanto o ebook.
Não achei justo fazer benchmarks de comparação com o Hugo pelo motivo do file system já citado e também pelas diferentes estratégias adotadas. Pelo própria estrutura engessada e necessáriado Hugo em unir estrutura de arquivos fontes e estrutura final do saite eu sei que não seria viável continuar usando a ferramenta.
Além disso, awk me dará a liberdade que gostaria de indexar pesadamente meus textos com o poder dos arrays associativos de awk. Já conhecia eles do PHP, mas agora que conheci os do awk estou pensando seriamente em adotar para outros tipos de tratamento de texto. Talvez até use para minhas finanças pessoais.
# Flow pragmático
Caloni, 2023-08-21 self books repost [up] [copy]Seja durante o trabalho ou no lazer, quando não está claro qual o objetivo final não é fácil focar.
Por isso reli minhas anotações sobre o livro de Mihaly Csikszentmihalyi sobre como estruturar nossa consciência de forma a conseguir aos poucos alinhar a energia psíquica a maior parte do tempo possível. E deve ser aos poucos, já que o "eu" não pode se sentir impelido a fazer algo; ele precisa entender dentro de si o que ele quer fazer mais que tudo na vida.
Uma artista original começa um novo trabalho com uma forte intuição e objetivos indefinidos, se mantém modificando o trabalho em resposta a resultados inesperados que surgiram, e termina com um trabalho concluído que não lembra em nada o que havia imaginado no começo. Se a artista é responsável pelos seus sentimentos internos, sabe o que ela gosta e o que ela não gosta, e presta atenção ao que está acontecendo, um bom trabalho está prestes a emergir.
Dentro dos meus recortes compilei e agrupei esta lista de ações em dicas mais compactadas e temáticas dos ensinamentos do livro para induzir um call to action mais pragmático:
The solution is to gradually BECOME FREE OF SOCIETAL REWARDS and learn how to substitute for them rewards that are under one's own powers. This is not to say that we should abandon every goal endorsed by society; rather, it means that, in addition to or instead of the goals others use to bribe us with, we develop a set of our own.
(...) unless a person LEARNS TO SET GOALS AND TO RECOGNIZE AND GAUGE FEEDBACK (...) she will not enjoy them (activities).
Because most jobs, and home life in general, lack the pressing demands of flow experiences, concentration is rarely so intense that preoccupations and anxieties can be automatically ruled out. Consequently the ordinary state of mind involves unexpected and frequent episodes of entropy interfering with the smooth run of psychic energy.
Some things we are initially forced to do against our will turn out in the course of time to be intrinsically rewarding.
When a society suffers from anomie, flow is made difficult because it is not clear what is worth investing psychic energy in; when it suffers from alienation the problem is that one cannot invest psychic energy in what is clearly desirable.
Gradually I learned to be indifferent to myself and my deficiencies; I came to CENTER MY ATTENTION INCREASINGLY UPON EXTERNAL OBJECTS: the state of the world, various branches of knowledge, individuals for whom I felt affection.
(...) the easiest step toward improving the quality of life consists in simply LEARNING TO CONTROL THE BODY AND ITS SENSES.
(a) to SET AN OVERALL GOAL, AND AS MANY SUBGOALS as are realistically feasible; (b) to FIND WAYS OF MEASURING PROGRESS in terms of the goals chosen; (c) to KEEP CONCENTRATING ON WHAT ONE IS DOING, and to KEEP MAKING FINER AND FINER DISTINCTIONS IN THE CHALLENGES INVOLVED IN THE ACTIVITY; (d) to DEVELOP THE SKILLS NECESSARY TO INTERACT WITH THE OPPORTUNITIES AVAILABLE; and (e) to KEEP RAISING THE STAKES if the activity becomes boring.
Leisure that uses up external resources, however, often requires less attention, and as a consequence it generally provides less memorable rewards.
(...) the importance of personally TAKING CONTROL OF THE DIRECTION OF LEARNING FROM THE VERY FIRST STEPS cannot be stressed enough. If a person feels coerced to read a certain book, to follow a given course because that is supposed to be the way to do it, learning will go against the grain. But if the decision is to take that same route because of an inner feeling of rightness, the learning will be relatively effortless and enjoyable.
Giving up the self with its instincts, habits, and desires is so unnatural an act that only someone supremely in control can accomplish it.
(...) keeping order in the mind from within is very difficult. We need external goals, external stimulation, external feedback to keep attention directed. And WHEN EXTERNAL INPUT IS LACKING, ATTENTION BEGINS TO WANDER, AND THOUGHTS BECOME CHAOTIC -- resulting in the state we have called "psychic entropy" (...)
Even pain is better than the chaos that seeps into an unfocused mind. Hurting oneself, whether physically or emotionally, ensures that attention can be focused on something that, although painful, is at least controllable -- since we are the ones causing it.
The ultimate test for the ability to control the quality of experience is what a person does in solitude, with no external demands to give structure to attention. It is relatively easy to become involved with a job, to enjoy the company of friends, to be entertained in a theater or at a concert. But what happens when we are left to our own devices? Alone, when the dark night of the soul descends, are we forced into frantic attempts to distract the mind from its coming? Or are we able to take on activities that are not only enjoyable, but make the self grow?
A person who rarely gets bored, who does not constantly need a favorable external environment to enjoy the moment, has passed the test for having achieved a creative life.
If a person is unwilling to ADJUST PERSONAL GOALS WHEN STARTING A RELATIONSHIP, then a lot of what subsequently happens in that relationship will produce disorder in the person's consciousness, because novel patterns of interaction will conflict with old patterns of expectation.
The process of discovering new goals in life is in many respects similar to that by which an artist goes about creating an original work of art. Whereas a conventional artist starts painting a canvas knowing what she wants to paint, and holds to her original intention until the work is finished, an original artist with equal technical training commences with a deeply felt but undefined goal in mind, keeps modifying the picture in response to the unexpected colors and shapes emerging on the canvas, and ends up with a finished work that probably will not resemble anything she started out with. If the artist is responsive to her inner feelings, knows what she likes and does not like, and pays attention to what is happening on the canvas, a good painting is bound to emerge. On the other hand, if she holds on to a preconceived notion of what the painting should look like, without responding to the possibilities suggested by the forms developing before her, the painting is likely to be trite.
For an autotelic person, the primary goals emerge from experience evaluated in consciousness, and therefore from the self proper.
Estava me enveredando hoje nos bytes usados para montar e demonstar os argumentos de uma interface COM proxy da WinRT quando quis saber qual era o leiaute da nova string do Windows, a HSTRING, usada na WinRT e em todo o ecossistema dos Universal apps.
Bom, para quem sabe assembly básico, não há nada prático que fazer uma sessão simples de debugging chamando as funções da API. Inspirado na primeira sessão do livro reversing, fiz as chamadas básicas para obter o tamanho da string, o raw buffer, etc, e fui adentrando no disassembly de cada uma, obtendo as linhas-chave para montar a struct que representa uma HSTRING. Abaixo o código-fonte:
#include <winstring.h> #include <string> using namespace std; int main() { wstring str = L"my hstring"; HSTRING hstr = NULL; HRESULT hr = WindowsCreateString(str.c_str(), (UINT32) str.size(), &hstr); if( SUCCEEDED( hr ) ) { UINT32 hstrLen = WindowsGetStringLen(hstr); hstrLen = 0; PCWSTR rawHstr = WindowsGetStringRawBuffer(hstr, &hstrLen); BOOL isEmpty = WindowsIsStringEmpty(hstr); HSTRING hstr2 = NULL; hr = WindowsDuplicateString(hstr, &hstr2); if( SUCCEEDED(hr) ) { hr = WindowsDeleteString(hstr2); } hr = WindowsDeleteString(hstr); } HSTRING_HEADER hstrHeader = {}; HSTRING hstr3 = NULL; hr = WindowsCreateStringReference(str.c_str(), (UINT32) str.size(), &hstrHeader, &hstr3); if( SUCCEEDED( hr ) ) { hr = WindowsDeleteString(hstr3); } return hr; }
Com isso fui fazendo as calls e encontrando os offsets pelas instruções referentes ao rcx, primeiro parâmetro passado em x64:
UINT32 hstrLen = WindowsGetStringLen(hstr); 00007FFC84D8BBE7 mov eax,dword ptr [rcx+4] PCWSTR rawHstr = WindowsGetStringRawBuffer(hstr, &hstrLen); 00007FFC84D22345 mov rax,qword ptr [rcx+10h] BOOL isEmpty = WindowsIsStringEmpty(hstr); 00007FFC84D23019 mov edx,dword ptr [rcx+4] 00007FFC84D2301C test edx,edx 00007FFC84D2301E sete al hr = WindowsDuplicateString(hstr, &hstr2); 00007FFC84D1789A lock inc dword ptr [rcx+18h] hr = WindowsDeleteString(hstr2); 00007FFC84D176A8 lock xadd dword ptr [rcx+18h],eax hr = WindowsCreateStringReference(... layout: 0x0000009C0230F848 00000001
E eis o resultado que cheguei:
struct HSTRING { BOOL Reference; // +0x00 UINT32 Lenght; // +0x04 UINT64 Unused2; PCWSTR RawString; // +0x10 UINT32 RefCounter; // +0x18 };
Para mais detalhes do uso dessa string dê uma olhada no ótimo artigo de Raymond Chen.
# Anime de Zumbi Live-Action
Caloni, 2023-08-28 cinema series [up] [copy]É só olhar para algo mais ou menos diferente que os produtores da Netflix já saem batendo uma e assinando contrato. E eis que nasce este live action de 100 Coisas de Zumbi (esqueci a droga do nome, foda-se), um anime curto que foi escolhido porque tem zumbis, revolta contra as corporações que sugam seus funcionários e tem jovens se divertindo no processo. Seu elenco não tem o menor carisma, são atores-mirins adolescentes, e repetem as falas e os gestos do anime, sem aumentar os custos, sem muito efeitos. Exceto o grotesco, e única diversão do longa, tubarão-centopéia-zumbi. South Park chamaria este ser de metade tubarão, metade centopéia e metade zumbi.
# Zombie Land Saga
Caloni, 2023-08-28 cinema animes [up] [copy]Houve uma vez em que assisti vários E01 de animes em sequência na esperança de achar alguns bons, mas passou despercebido este Zombie Land Saga. Hoje reassisto com outros olhos. Se trata de uma produção arrojada. Cores, ângulos, música e detalhes de cena criam com dinamismo e um bom humor espalhafatoso na medida certa a trajetória dessas garotas que morreram cada uma à sua época e hoje estão juntas nessa mansão recebendo instruções de seu agente megalomaníaco. O ritmo lembra Mahou Shoujo Ore com suas meninas mágicas peitudas, onde nos peitos há apenas músculo. Lembra também a parcela Idol da série Aggretsuko. Enfim, a dinâmica das meninas funciona em uma paleta de cores fascinante e em constante movimento. Já assisti mais episódios, apesar de ser bem difícil acabar porque começa a dramatizar e delongar muito.
# Muitos animes, lugares e séries
Caloni, 2023-08-28 [up] [copy]A ideia de fazer um apanhado da semana como havia feito em um post anterior não se sustenta se eu deixo de escrever por um mês. Especialmente se a Sra. Mitiko inventa de assistir um milhão de animes. Além do mais, agora que não existe mais uma página por post e a indexação é feita por hashtags fica muito mais simples apenas ir encadeando post a post, como subseções pequenas de um escrito maior. Bom, dependendo do caso, claro. Algumas vezes é bom ligar os pontos.
# Reencarnando como uma reencarnação de anime de reencarnação
Caloni, 2023-08-28 cinema animes [up] [copy]O que há que os japoneses agora todos reencarnam em um jogo online e os episódios dos animes viram batalhas de RPG, aumento de XP e lições de moral para crianças chatas? E o pior é que a Sra. Mitiko está gostando desse gênero. Dos que eu vi de passagem contei cinco. E isso em apenas um mês!
E a criatividade está em falta. Tem um, Reborn as a Vending Machine, em que a criatura renasce como uma máquina de venda. Não que isso seja muito bizarro. Máquinas de venda são mais comuns no Japão que jovens. Existe cerca de 1 para cada 30 habitantes. E nesse anime o protagonista consegue se transformar nos mais diversos tipos de máquina, convenientemente gerando o efeito desejado para a cena onde isso acontece.
Porém, pior que isso é Sweet Reincarnation, onde um ilustrador muito fã de doces foi enganado a desenhar um anime medieval sob a promessa que um dia o herói começaria finalmente a fazer doces na cozinha real. Não acompanhei muito, mas todas as vezes que eu vi faltou açúcar e sobrou política.
Em Campfire Cooking in Another World a desgraça do personagem nasce no mundo de RPG com a extraordinária habilidade de fazer compras online. Em geral ele compra comida e prepara pratos divinos para todos em volta. A ideia é bacana. E repetitiva. E há um slime com uma dublagem infantil particularmente irritante.
E para finalizar anotei este "Didn't I say to make my abilities average in the next life", em que não me lembro muito bem o enredo, mas acho que o título já diz muita coisa. Na verdade havia anotado mais um, mas eu não tenho a menor noção sobre o que ele é. Exceto que alguém reencarna em um mundo... você já entendeu o gênero.
# The Girl I Like Forgot Her Glasses
Caloni, 2023-08-28 cinema animes [up] [copy]Animação meio 3D, meio desenhado. O 3D é horrível, mas tem charme. O plot é a garota com cabelos esvoaçando ficando bem pertinho do garoto que gosta dela porque ela esqueceu os óculos. Japoneses sofrem com paixões platônicas e boa parte dos animes referencia este traço tão comum entre pessoas tímidas.
# The Masterful Cat is Depressed
Caloni, 2023-08-30 cinema animes [up] [copy]A garota caótica adota um gatinho que quando cresce fica maior que ela e cuida da casa (e dela). Uma comédia fofinha para esquentar o coração. Em algum lugar no meio das piadas nos encontramos nos episódios que refletem a vida urbana tentando ser sensível. Ah, e tem a parte que é um gato gigante de dona de casa.
# Mashle: Magic and Muscles
Caloni, 2023-08-30 cinema animes [up] [copy]A referência a Harry Potter é tão gritante que soa uma sátira. Em um mundo onde todos usam magia este garoto faz não sei quantas flexões por dia e pega de porrada até os bruxos mais gabaritados. A referência à obra de J. K. Howling não acaba por aí. Se trata de um messias, um renegado. E que irá dar muita porrada (acredito, dropei no primeiro) nesses bruxos e suas varinhas gays.
# The Café Terrace and Its Goodness
Caloni, 2023-08-30 cinema animes [up] [copy]Este eu dropei antes de terminar o primeiro episódio. O exploitation é explícito demais para conseguir acompanhar. A adaptação é descarada de um mangá que só quer fazer marmanjo se sentir o tal. É uma casa de chá que possui beldades peladas espalhadas pelo recinto enquanto o herdeiro do local se apresenta. Toda nudez será mostrada, mesmo que as pessoas não precisem ficar nuas.
# Masamune-kun's Revenge
Caloni, 2023-08-30 cinema animes [up] [copy]Ele era um gordinho zoado pela escola e agora é o garoto popular que quer se vingar da garota que não quis ficar com ele. Eu estou ouvindo Incel lá no fundo? Os ecos do passado irão encontrar o amadurecimento desse personagem. Não é ruim, é um tanto dramático e um tantinho romântico. Bom para ver com a garota do seu lado.
# Meu Casamento Feliz
Caloni, 2023-08-30 cinema animes [up] [copy]Este drama de época e com magia irá demonstrar como as aparências enganam. Essa moça maltratada (no mangá mais maltratada ainda), a gata borralheira de um conto japonês, se casa com um nobre que é temido por todos, e por algum motivo mágico (esses roteiristas) simpatiza com a moça. Ele nem precisou sair por aí procurando um pé que calçasse os sapatinhos de cristal. Gostei como constrói a história sem auê, em um ritmo contemplativo. Mas há uma manipulação de maldades exagerada. O núcleo amoroso é o forte. Não sei o por quê da magia (nem saberei, não sou eu que assiste).
2023-09-03 Nota: preciso assistir novos episódios, pois tenho a impressão que alguns detalhes passaram despercebidos.
# Dr. Stone
Caloni, 2023-08-30 cinema animes [up] [copy]O forte deste anime, assim como Cells At Work, é ser didático sobre a ciência e ainda assistível. Um embate inicial é formado entre um potencial assassino da humanidade e um gênio que acordou milhares de anos no futuro enquanto todos estavam transformados em pedra. Há também um romancezinho para dar um ar de sacrifício ainda maior. No meio da retomada dos homens na terra o Dr. Pedra irá recorrer aos seus conhecimentos para fazer prevalecer a esperança. Bacana a introdução.
# Luden
Caloni, 2023-08-30 cinema series [up] [copy]Esta série é sobre putarias em uma Alemanha da década de... 70? Já esqueci. É sujo porque é alemão, e é isso que eu gosto dessas putarias alemãs. Não é sexy, é apenas sujo. E há um cheiro de sarcasmo e ironia no ar, apesar de no fundo ser uma história fofinha. Baseada teoricamente em uma biografia. Ao final de cada episódio há fotos da época onde vemos os personagens da vida real.
# The Marvelous Mrs. Maisel - Season Finale
Caloni, 2023-08-30 cinema series [up] [copy]Não comentei antes, mas vi a season finale desta série maravilhosa (sem trocadilho). Sua comédia advém dos costumes e seus criadores não tentam dar lição de moral todo momento. É um olhar ácido sobre várias décadas onde a mulher tinha um papel mais limitado na sociedade. Os personagens são ricos e os diálogos mais ainda. Esta série não cria situações, elas acontecem, e em um ritmo frenético. Seu final não poderia ser mais digno. Há alguns bons episódios para serem vistos. Não perca.
# Everybody Hates Chris - Season 3
Caloni, 2023-08-30 cinema series [up] [copy]Cansei da série do Chris Rock. Acho que na terceira temporada ela já começa a ficar repetitiva e com alfinetadas nos brancos além da conta. Não é mais aquele respiro de ar puro sobre as ruas barra pesada onde Chris conta suas aventuras. A dinâmica se repete tanto e há um cuidado extracomunal na introdução que faz perder o núcleo da comédia. Nada dura para sempre.
# Primer
Caloni, 2023-08-30 cinema movies [up] [copy]Revi este filme com meu amigo pausando e comentando e finalmente entendemos a trama principal. E depois que se entende isso acaba ficando um pouco sem graça. Só que não. O universo de viagem no tempo idealizado pelo seu criador continua fresco e vívido. Há tantas possibilidades em entender os plots secundários e tanto o que poderia acontecer em um mundo onde essa máquina existisse que se torna uma diversão à parte só conversar sobre. E é isso que torna Primer ainda um dos melhores filmes do gênero. Ele é uma discussão eterna. Ele nunca termina. Sua produção de baixo orçamento é assistível, inclusive pela fotografia. Suas atuações são milimétricas e seu movimento de câmera preciso. Shane Carruth, diretor e roteirista, produziu além de Primer mais três outros trabalhos, mas este é o único que dirigiu e escreveu. Ele costuma compor trilhas. E ele, assim como o cara do The Room, foi o escolhido para compor esta sinfonia racional e sublime de linhas do tempo.
# Wiñaypacha
Caloni, 2023-08-30 cinema movies [up] [copy]Casal idoso vive nos Andes, reclama que seu filho nunca volta, e as coisas apenas pioram na uma hora e meio dessa produção modesta e pálida. Seus acontecimentos são ritmados, mas não há um impulso que nos faça esquecer que tudo está acontecendo conforme prevíamos dez minutos atrás. As atuações são de uma farsa, notadamente ruins. Essa ideia de documentário ficcionado pode funcionar, mas nem sempre. Este é um nem sempre.
# Em sua própria companhia (Sêneca)
Caloni, 2023-08-30 quotes [up] [copy]"Nada, a meu ver, é melhor prova de uma mente bem ordenada do que a capacidade de um homem parar exatamente onde está e passar algum tempo em sua própria companhia."
Sêneca e a Mente Ordenada