Piadas e elementos de humor escondidos na API oficial do Android
(voxelmanip.se)- A API pública do Android esconde métodos e constantes bem-humorados
- Entre os exemplos mais conhecidos estão métodos como isUserAMonkey() e isUserAGoat(), que combinam utilidade real com elementos de piada
- DISALLOW_FUN, Log.wtf() e outros itens embutem descrições brincalhonas ou comportamentos curiosos na API oficial
- Convenções de nomes criativas ou paródias (por exemplo, TWEET_TRANSACTION, GRAVITY_DEATH_STAR_I) aparecem com frequência na documentação oficial ou no código
- Esses elementos cumprem o papel de oferecer diversão e pequenas descobertas aos desenvolvedores
Piadas e elementos de humor na API pública do Android
A API aberta do Android inclui, junto com funcionalidades reais, diversos trocadilhos engenhosos e easter eggs voltados aos desenvolvedores
ActivityManager.isUserAMonkey()
- É um método para detectar quando a ferramenta de desenvolvimento UI Exerciser Monkey está em execução
- Foi criado para permitir a restrição de certos comportamentos em ambientes de teste de estresse de apps, simulando entradas aleatórias na interface
- Foi introduzido para limitar funções importantes (por exemplo, chamadas de emergência) quando um monkey estiver usando o app no lugar de um usuário real
- Foi adicionado à API pública no Android 2.2 (Froyo, API 8)
- Sua implementação surgiu nos primórdios do Android para resolver problemas acidentais reais
UserManager.isUserAGoat()
- A documentação oficial diz que ele serve para verificar se o usuário é um alvo de teletransporte, mas isso é uma piada
- No início sempre retornava false, mas após o lançamento de Goat Simulator, foi alterado para retornar true quando o jogo estivesse instalado
- No Android 11 (API 30) ou superior, passou a retornar sempre false por motivos de privacidade
- Havia uma lógica de detecção do app Goat Simulator, mas ela foi modificada para evitar vazamento de informações diante das mudanças nas políticas de acesso à lista de apps
- Foi inspirado em um easter egg do Gerenciador de Tarefas do Google Chrome
UserManager.DISALLOW_FUN
- Representa uma política de restrição de diversão adicionada no Android 6 Marshmallow (API 23)
- A documentação oficial afirma que ela pode ser usada para impedir que o usuário sinta alegria ou diversão
- Na prática, é usada como uma política para o proprietário do dispositivo bloquear parte das funções do usuário
- Alguns apps ou o próprio sistema podem detectar essa política para desativar recursos “divertidos”, como easter eggs
- Pode ser usada em instituições de ensino, por exemplo, para desabilitar recursos que causem distração
Chronometer.isTheFinalCountdown()
- O método isTheFinalCountdown foi adicionado no Android 8 Oreo (API 26)
- Quando chamado, ele abre automaticamente o vídeo do YouTube de “The Final Countdown” do Europe
- Não tem utilidade prática direta e é claramente uma piada/referência
- Isso fica evidente pelo comando Intent no código
- Oferece uma pequena brincadeira aos desenvolvedores
PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND
- É uma constante para indicar suporte a multitoque adicionada no Android 2.3 Gingerbread (API 8)
- O nome é uma paródia de jazz hands (gesto performático musical)
- Significa suporte ao reconhecimento simultâneo de até cinco dedos
Log.wtf()
- É a sigla de What a Terrible Failure, usada para registrar situações que jamais deveriam acontecer
- É classificado como um log grave em nível de asserção
- É uma das APIs com tom de piada mais conhecidas entre os desenvolvedores
AdapterViewFlipper.fyiWillBeAdvancedByHostKThx()
- Adicionado no Android 3.0 Honeycomb (API 11)
- Tem um nome informal e bem-humorado e é chamado quando a view é avançada pelo host
- Presume-se que tenha surgido de uma ideia cômica durante o processo de nomeação
- Expressa com humor o clássico problema da ciência da computação: a dificuldade de dar nomes
IBinder.TWEET_TRANSACTION
- É um tipo de transação introduzido no Android 3.2 Honeycomb (API 13)
- Sugere o envio de um tweet, mas na prática não faz nada, e o limite de 130 caracteres faz referência à antiga política do Twitter
- O próprio nome é uma paródia completa
IBinder.LIKE_TRANSACTION
- É a transação LIKE adicionada no Android 4.0.3 ICS (API 15)
- Serve para enviar um sinal de que o chamador gosta do app, mas não há registro nem contagem real
- Existe uma explicação em tom de piada dizendo que isso aumenta a autoestima do app
SensorManager.SENSOR_TRICORDER
- É uma constante batizada em homenagem ao Tricorder de Star Trek
- Existe desde a época do Android 1.0, mas depois foi marcada como deprecated
- O Tricorder é um dispositivo fictício de ficção científica, o que dá um toque de humor aos desenvolvedores
SensorManager.GRAVITY_*
- Dentro de SensorManager existem constantes com valores de gravidade de vários corpos celestes (Sol, Plutão etc.)
- Entre elas, GRAVITY_DEATH_STAR_I (a Estrela da Morte de Star Wars) e GRAVITY_THE_ISLAND (a ilha da série LOST) são piadas
- Algumas delas têm mais valor de paródia do que utilidade prática
<blink> tag
- O sistema de layout de views do Android possui uma tag oculta chamada
<blink> - Ela faz com que as views-filhas pisquem como a antiga tag HTML
<blink> - Não há explicação na documentação oficial, mas ela foi adicionada em um commit de 2011 e continua presente no AOSP até hoje
- Seu uso real ainda é motivo de debate
Conclusão
Em vários pontos da API oficial do Android, há piadas, paródias e elementos de easter egg inseridos de forma intencional
Esses elementos oferecem pequenas doses de diversão e o prazer da descoberta aos desenvolvedores, além de mostrar um pouco da cultura de comunidade e do lado descontraído do Android
2 comentários
Opiniões do Hacker News
No FB, por muitos anos, havia o costume de adicionar sufixos como
_DO_NOT_USE_OR_YOU_WILL_BE_FIREDa tokens perigosos ou já obsoletos. Todo mundo conhecia essa piada, mas depois da pandemia, com a proporção maior de pessoas novas e pouca integração remota, também surgiram reclamações de que esse tipo de piada interna causava medo ou incerteza. Isso vale apenas dentro do que eu viviLembro de sempre achar divertido ver nomes alegres e exageradamente longos como
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIREDdo React. Mas, infelizmente, esse tipo de "humour" vem desaparecendo aos poucos ultimamente PR relacionadaAntigamente no Google, havia em algum lugar da stack de rede um bloco enorme de código difícil de entender e ainda mais difícil de modificar, e ele só continuava crescendo. Nossa equipe renomeou aquele código para "[Foo]Sorcery". Por causa desse nome meio assustador e estranho, ninguém mais queria adicionar nada novo ali, e de vez em quando alguém organizava partes dele e removia trechos. Acho que essa brincadeira no nome funcionou
A função espirituosa de que mais gosto no código-fonte do Android é
android.os.Handler.runWithScissors(), mas infelizmente ela não faz parte da API pública link do códigoAinda rio da frase no comentário dessa função: “@hide este método é propenso a mau uso e é melhor não colocá-lo na API; se for adicionado, talvez seja preciso trocar para um nome menos divertido, como runUnsafe()”
É uma pequena pena essa função não ter aparecido no texto principal. É uma das minhas favoritas
Um exemplo que me vem imediatamente à cabeça no X11 é a variável global "party_like_its_1989" link do código, e o changelog da extensão DRI2 está cheio de expressões como "Awesomeness!", "True excellence" e "Enlightenment attained" link do changelog
No BeOS (e no Haiku), existem funções chamadas "is_computer_on()" e "is_computer_on_fire()", e a explicação é excelente link de referência
No Delphi, existe a exceção
EProgrammerNotFound, e a documentação oficial também tem um humor bem seco e sério link da documentaçãoClaro, entendo que esses nomes foram feitos para serem engraçados, mas em computadores modernos com gerenciamento avançado de energia esse tipo de estado é bem comum. O sistema operacional precisa lidar naturalmente tanto com o despertar de um modo de economia profunda quanto com uma placa-mãe a 200 graus
Acho que
is_computer_on_fire()teria sido ainda mais divertido se fosse usado como gatilho assíncrono baseado em eventosPara quem tiver curiosidade, também existe o link para o código relacionado link do código
Gosto que esse senso de humor esteja vivo em codebases de grandes empresas. Usando só a API, você nem percebe, mas quando lê o código-fonte diretamente, esses easter eggs ocasionais realmente fazem você sentir que o código foi escrito por pessoas. O software de hoje é frio demais, e justamente nesse contraste eu sinto certo calor humano. Sinceramente, queria que houvesse mais disso
Se você quiser testar diretamente coisas como isUserAGoat e isUserAMonkey no Android, eu fiz e publiquei um pequeno app com essa função link do app. Depois quero tentar adicionar mais easter eggs
Também acho que seria bem divertido incluir algo como a verificação da política DISALLOW_FUN. Procurei esse código no GitHub, mas na maioria dos casos ele só é usado pelo app de Settings do sistema para ocultar o easter egg da versão. Talvez eu acabe sendo o primeiro terceiro a usar isso de forma prática
Mas no Android 15 o app não instala. Seria bom atualizá-lo, já que o Google está exigindo que o minimum compileSdk esteja em conformidade
O Gerenciador de Tarefas do Chrome já teve uma coluna oculta que mostrava o "número de bodes teleportados pelo processo do navegador". Isso não existe mais, mas dá para ver numa captura de tela antiga. Antes havia 234 colunas; agora caíram para 16, o que é meio triste
Sinto falta da época em que produtos de tecnologia eram cheios de easter eggs. Parece que, com tudo ficando mais corporativo, essa cultura foi desaparecendo
Eu queria transformar responder a esta thread numa pergunta obrigatória de entrevista. Inclusive quando forem me entrevistar. É realmente aquele tipo de momento de “há dois tipos de pessoas no mundo”
A ideia aqui é que exista humor e brincadeiras em documentação técnica; muita gente costuma ver isso de forma negativa, mas eu adoro quando a documentação tem humor. Já escrevi sobre isso
Será que a expressão “yuumor” foi traduzida por IA....? tremendo