7 pontos por GN⁺ 2023-12-23 | 1 comentários | Compartilhar no WhatsApp
  • O Heynote é um scratchpad no formato de buffer de texto persistente que mantém em um só lugar textos temporários, respostas de APIs, notas de reunião e listas de tarefas que ficam espalhados durante o desenvolvimento
  • A unidade de trabalho é o bloco: crie um novo bloco com ⌘-Enter e selecione rapidamente apenas o conteúdo do bloco atual com ⌘-A
  • Com base na configuração de linguagem de cada bloco, como JavaScript, JSON e Markdown, aplica destaque de sintaxe e formatação automática
  • O bloco Math lida com variáveis, funções, conversão de unidades e até conversão de moedas, permitindo continuar cálculos simples dentro do contexto
  • Oferece múltiplos buffers de notas, organização em diretórios, correspondência com arquivos, imagens inline e comentários, com foco em reunir o espaço de trabalho temporário do desenvolvedor em um único app

Scratchpad baseado em blocos

  • A estrutura básica do Heynote é um grande buffer de texto persistente dividido em vários blocos
  • Novos blocos são criados com ⌘-Enter e, ao pressionar ⌘-A dentro de um bloco, apenas o conteúdo do bloco atual é selecionado, não o documento inteiro
  • É adequado para colar rapidamente materiais que são incômodos de deixar temporariamente em outro lugar
    • Rascunhos de mensagens do Slack que você não quer enviar por engano
    • Respostas JSON de APIs em que você está trabalhando
    • Notas de reunião
    • Listas de tarefas diárias

Recursos de blocos para código e documentação

  • Cada bloco pode ter sua própria configuração de linguagem, como JavaScript, JSON e Markdown
  • De acordo com a configuração de linguagem, o destaque de sintaxe é aplicado, e a formatação automática por bloco também é suportada
  • Com suporte a várias linguagens de programação, é possível lidar com trechos de código e notas de documentação juntos no mesmo buffer

Bloco Math usado como calculadora

  • O bloco Math pode ser usado como um scratchpad de calculadora para cálculos simples
  • Suporta variáveis, funções e conversão de unidades, incluindo também conversão de moedas
  • É adequado para fazer “cálculos de guardanapo” rápidos dentro do fluxo das notas

Múltiplos buffers e organização em arquivos

  • Além do buffer Scratch padrão, é possível criar quantos buffers de notas quiser
  • Os principais atalhos usados para trabalhar com buffers são os seguintes
    • ⌘-N: criar novo buffer
    • ⌘-S: mover o bloco atual para um novo buffer
    • ⌘-P: alternar rapidamente entre buffers
  • Os buffers podem ser organizados em diretórios, e cada buffer corresponde a um arquivo no disco

Imagens e comentários

  • O Heynote oferece suporte a imagens inline
  • É possível colar imagens da área de transferência ou arrastar e soltar arquivos de imagem no buffer
  • Você pode selecionar e redimensionar imagens dentro do editor, além de colocar a imagem de volta rapidamente na área de transferência do sistema
  • Com uma ferramenta leve de desenho integrada, é possível adicionar comentários em formato livre sobre as imagens
  • Imagens comentadas podem ter uma nova versão atualizada na área de transferência com um clique ou pressionamento de tecla, para serem coladas em outro lugar

Download

  • A versão estável mais recente é a 2.9.0
  • Os downloads suportados são oferecidos para Mac Universal, Mac Arm, Mac Intel, Windows, AppImage e Snap
  • A versão beta 2.9.1-beta também está disponível
  • A lista completa de releases pode ser conferida em All releases

1 comentários

 
GN⁺ 2023-12-23
Opiniões no Hacker News
  • Realmente excelente. É quase exatamente o que eu esperava de um scratchpad
    Para acrescentar um pedido de recurso: seria bom ter suporte a um fluxo “inverso”, em que um novo bloco é adicionado no topo da página, em vez de embaixo. O scratchpad sempre abriria no topo e, com o tempo, os blocos antigos “afundariam” para baixo, deixando o conteúdo mais relevante em cima
    Isso combina melhor com a forma como eu penso. Dito isso, como outros disseram nesta thread, também sou a favor de ignorar a maioria desses pedidos de recurso e preservar a simplicidade que você criou. Inclusive o meu pedido

    • Fico feliz que tenha gostado :)
      Entendo a ideia do “inverso”. Fico me perguntando se bastaria tornar configurável para que C-Enter insira um novo bloco antes do bloco atual, e fazer o Heynote, ao iniciar, posicionar o cursor no início do buffer, em vez de no final como faz hoje
    • Eu também gosto desse jeito. Mas acho que ver todos os blocos abaixo do cursor se movendo a cada nova linha criada seria distrativo
      A UX ideal seria adicionar um novo buffer no topo, mas com preenchimento suficiente para ocupar a janela, de modo que você não veja os blocos anteriores se movendo enquanto digita
      Ainda não baixei o app, mas talvez ele já funcione de forma parecida. Parece bonito, estou ansioso para testar
    • Esse recurso extra parece que seria muito útil. Já uso essa ordem de anotações em documentos Markdown
    • Criei um app de notas com uma abordagem parecida. As notas são adicionadas no topo e, quando você edita uma nota, ela é “puxada” de volta para o topo: https://thinktype.app/
    • Com esse recurso, seria ótimo para usar também como log diário
  • Eu provavelmente pagaria se tivesse estas condições: atalhos de teclado do vi, mostrar a localização do arquivo para que eu possa movê-lo ou sincronizar/fazer backup em vários dispositivos, e ordenação inversa
    Muito, muito bom

  • Parece legal. Gostei da ideia de blocos e pretendo baixar para testar
    Como sempre há muita conversa sobre Electron, queria mencionar o Tauri, caso você ainda não tenha visto. É uma ferramenta parecida com Electron, baseada em Rust, e usa o webview do sistema em vez do Chromium, o que reduz bastante o tamanho do bundle e o uso de memória
    Olhando o código, não parece haver tanto código específico de Electron; então, se você quiser mexer com Rust, talvez a substituição não seja tão difícil. Um app de edição de vídeo que eu estava criando também começou em Electron e depois mudei para Tauri no meio do caminho, e foi bem tranquilo
    Não é um pedido, pode simplesmente ignorar

    • Avaliei o Tauri no início do projeto. Escolhi Electron por causa da maturidade e da grande base de usuários
      Depois de usar outras ferramentas multiplataforma para mobile, minhas expectativas eram muito baixas, mas na prática trabalhar com Electron foi muito confortável e não me arrependo da escolha. Quase não houve bugs, o ecossistema é grande, e gostei de como foi fácil automatizar builds para várias plataformas e atualizações automáticas
    • O ponto decepcionante do Tauri é que ele usa WebKitGtk2 no Linux. Do ponto de vista de desempenho, é bem ruim, e o suporte a recursos também fica atrás do WebKit no macOS ou do Webview2 no Windows
    • Li que a parte em Rust é inconveniente de usar. Fico curioso se você achou o Tauri produtivo
  • Gostei muito. É simples e solidamente implementado. Há um tempo eu queria criar algo parecido, e talvez faça um fork para mexer em algumas coisas
    Hoje eu estava fazendo algo parecido no Obsidian, criando uma nova nota todo dia e separando “blocos” com linhas horizontais em Markdown (---), mas isto aqui é muito mais limpo
    A força dessa abordagem é tornar a captura extremamente fácil. Basta criar um novo bloco e escrever, sem precisar pensar onde colocar aquilo ou como encaixar na estrutura existente. Quando você começa a pensar nisso, muitas vezes perde a ideia enquanto procura o lugar certo para ela
    A desvantagem, obviamente, é encontrar de novo depois. Seria bom poder adicionar tags ou títulos aos blocos e pesquisar por tags/títulos. Indo mais longe, também seria interessante experimentar com LLMs e embeddings para marcar, resumir, classificar e agrupar blocos automaticamente
    Há muitas direções possíveis, mas concordo com a ideia de outras pessoas de não adicionar recursos demais e acabar perdendo a simplicidade que é o charme original. E também fico curioso sobre como a performance é tratada quando o buffer fica muito grande

    • Não é open source. Usa a Commons Clause, que limita severamente o que se pode fazer. O nome é enganoso
    • A performance é tratada principalmente pelo CodeMirror(https://codemirror.net/), o editor base do Heynote. Ele parece lidar bem até com buffers bem grandes
      Dito isso, notei pequenos problemas de performance ao lidar com blocos muito grandes em certos modos de linguagem
    • Uso o Obsidian para notas de programação, logs de resolução de problemas, pensamento “no papel”, escrita e validação de hipóteses. É muito poderoso e a performance é bem boa. Pode perguntar qualquer coisa
  • Acabei de baixar e instalar, e é realmente impressionante. Gostei do conceito de blocos de matemática, mas levei alguns segundos para descobrir como transformar um novo bloco em um bloco de matemática
    A frase ⌘ + L Change block language no topo não me levou imediatamente a entender “mudar o tipo do bloco”. Seria bom ajustar um pouco para algo como ⌘ + L Change block language (Math, Markdown, etc.)
    Fora isso, vejo como um ótimo projeto que resolve uma necessidade bem específica

    • Boa sugestão, vou mudar
  • Gostei. Era exatamente o que eu precisava. Até agora, eu usava para isso um grupo do WhatsApp só comigo
    Meus pedidos de recursos são: pacote para Arch, o resultado matemático ser incluído no buffer.txt e no conteúdo copiado após Ctrl+a, alteração de fonte e tema de cores, suporte a imagens e mídia em blocos Markdown, timestamps de blocos, recarregamento de arquivo e possibilidade de uso em mobile
    Especialmente nas cores, gostaria que continuasse usando o mínimo de cores como agora, mas que fosse uma forma de configurar apenas algumas cores, não CSS customizado. Para colar imagens, seria bom funcionar como o Markdown do VS Code: ao inserir uma imagem com Ctrl+v, ele insere o Markdown e salva a imagem como arquivo. Uma prévia de Markdown também seria boa, mas entendo se considerarem fora do escopo
    Timestamps seriam especialmente bons se createdAt e updatedAt fossem salvos na linha com o símbolo de infinito no buffer.txt, porque daria para extraí-los facilmente com grep e cut. Vi abaixo que vocês estão trabalhando em recarregamento de arquivo para permitir backup com Git etc., e também estou ansioso por isso

    • Acho que dá para adicionar o resultado do cálculo às linhas copiadas a partir de blocos matemáticos, e eu também gosto da ideia
      Concordo que seria bom o resultado também entrar no buffer.txt, mas acho que isso será mais difícil por causa dos detalhes de implementação
      Para configurações de fonte e tema de cores, no momento estamos inclinados a reduzir o número de itens configuráveis, então é bem provável que não sejam adicionadas
      Timestamps de blocos estão na lista de tarefas, assim como recarregamento de arquivo. Mobile provavelmente será difícil
    • Vi abaixo que há planos de adicionar uma versão PWA com armazenamento local. Então pode ignorar o pedido de mobile; em vez disso, seria bom ter um botão de download no mobile para sincronizar com o desktop via Git, Drive ou algo do tipo
    • Como é feito em Electron, permitir adicionar CSS à página HTML possibilitaria implementar fontes e cores
      Assim, algumas notas também poderiam usar CSS chamativo
  • Muito, muito bom. Rapidamente ganhou um lugar permanente no Dock
    Tenho um pedido pelo qual eu pagaria de bom grado. Seria ótimo se fosse possível executar blocos de código e gerar a saída. Abro muito o console do navegador para testar JS, e poder fazer isso bem ao lado de outras notas seria excelente

  • Ele me lembra muito o org-mode de https://orgmode.org/. Fico curioso se há planos de adicionar recursos parecidos com org, como avaliação de blocos de código
    Pessoalmente, não acho que eu vá sair do org-mode, mas seria bom ter algo para recomendar a pessoas que relutam em usar Emacs, nem que seja como um app separado

    • Nunca vi o orgmode, então não sei quais recursos ele tem. Fora os blocos matemáticos, não há planos de adicionar avaliação de blocos de código, porque a complexidade aumentaria bastante
  • Excelente. Para esse tipo de uso, eu sempre acabava voltando ao TextEdit, mas agora vou experimentar o Heynote e ver no que dá
    É bom ver algo assim no HN, como nos velhos bons tempos. Fico curioso se há planos de suporte a atalhos de teclado do vi

    • É legal, mas sem keybindings do vi fica pouco prático para mim
      Agora fiquei me perguntando se daria para conseguir algo parecido com um plugin do Vim, ou criar um eu mesmo. Se ficasse dentro do terminal, também teria a vantagem de poder deixá-lo em uma sessão persistente do tmux e acessar remotamente
    • Concordo. Seria bom ter bindings vi/vim
  • Também gostaria de receber feedback :)
    Repositório do Heynote no GitHub: https://github.com/heyman/heynote

    • Bom app. Sempre tive um scratchpad para esse tipo de uso, mas nunca encontrei uma solução realmente boa. O Soulver é bom, mas focado demais em matemática; abas do VS Code também são ok, mas gerenciar vários buffers por linguagem é trabalhoso. Gosto do conjunto de recursos aqui
      Tenho alguns feedbacks para melhorias ou esclarecimentos. Eu não encontrei o atalho para trocar de linguagem até passar o mouse sobre o elemento da barra de status, então deveria haver um item de menu com o atalho exibido
      Alternar modo claro/escuro e verificar atualizações não costumam ficar na barra de status em outros apps, então parece melhor movê-los para as configurações. Também deveria seguir por padrão o modo claro/escuro do sistema, com a possibilidade de uma substituição por app
      Se não há coisas suficientes para colocar na barra de status, talvez seja melhor removê-la de vez. Do jeito que está, parece que juntaram várias coisas ali para justificar a barra de status
      O branding verde é ok, mas dá uma personalidade bem forte ao app. Vale pensar se o app precisa ter uma personalidade tão marcante. Também dá para considerar uma paleta neutra que se encaixe melhor no macOS, ou várias opções de cores de destaque incluindo uma opção neutra
      427 MB é grande. Felizmente, com documentos pequenos, ele não consome muita memória, mas o bundle é grande demais para essa escala. Fico curioso por que inclui ffmpeg, se GLES é realmente necessário e se o framework básico do Electron passa mesmo de 300 MB
      Há opções de mapa de teclas, mas depois que apaguei o conteúdo inicial, perdi o mapa de teclas de fato. Seria bom haver uma referência de ajuda dentro do app, ou pelo menos uma página de documentação vinculada ao menu de ajuda
      Também seria bom poder trocar a fonte. Também não entendo o modelo de armazenamento. Fico curioso onde os dados são salvos, se isso é controlável, se é preciso salvar, ou com que frequência eles são persistidos. Quero saber se dá para colocar em um armazenamento na nuvem e sincronizar entre dispositivos, e, se isso já acontece, se dá para desativar
      Pessoalmente, não gosto quando o ícone do app traz o nome do app. A maioria dos apps não faz isso, então sugiro um ícone mais sutil
    • Uma pequena sugestão: seria bom ter um atalho para inserir a data/hora atual
      Ou uma opção para rastrear a hora de criação do bloco e exibi-la em algum lugar pequeno na UI de cada bloco. Datas são muito úteis ao procurar novamente notas antigas como essas
    • Fico curioso se dá para usar fonte proporcional. Só pelo site, isso não fica claro. Para mim, é um recurso indispensável
    • Fico curioso se há possibilidade de um build arm64 para Linux. Eu poderia compilar por conta própria, mas seria bom não precisar
    • Gostei muito. A ideia é boa e foi implementada de forma limpa. No meu macOS arm, o tamanho instalado fica abaixo de 100 MB
      Vi que algumas pessoas pediram abas, mas eu gostaria que fosse possível abrir várias janelas