Skip to content

About

My study journal (Daily) is a way to structure, share, and constantly evolve, based on pragmatic principles of investing in knowledge.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

My Blog

My "blog" is a space where I document what I learn and the challenges I face, serving as a "knowledge portfolio." Much like the approach described in The Pragmatic Programmer, I view my studies as a continuous investment in my personal and professional growth. The concept is simple: regularly invest in new knowledge, diversify my skill set, and manage the risks associated with focusing on technologies that might eventually become obsolete. In short, it’s about writing and practicing as a way to facilitate my own learning.

Learn about the book here: The Pragmatic Programmer: From Journeyman to Master

Our here

Deploy on my blog

Started

This project is my person notebook where I'm describ about my studies on Linux Programming and Quality. This is not a tutorials. This is my daily study, buildin my portfolio know.

Well ok. Where from this idea? Good, this ideia emerge from the book The Programatic Programmer. Specifically, of the chapter one get to know the book here.

Run this Project

Preview with:

hugo server -D -F

Use the language button to select English. Hugo connects the matching files automatically; it does not translate the text for you.

Before publishing, run:

bundle exec ruby scripts/test_multilingual.rb bundle exec mdl content README.md hugo --gc --minify

Testando localmente

Pré-requisitos: Hugo extended 0.147.9+ e Go (só é usado pra baixar o tema via Hugo Modules, não tem código Go no projeto). Se preferir não instalar nada na sua máquina, o repo já vem pronto pra abrir num Dev Container (.devcontainer/) ou no Gitpod — os dois sobem o ambiente completo (Hugo, Go, Ruby) sozinhos.

git clone https://github.com/kellen-xavier/ladydebug.github.io.git
cd ladydebug.github.io

# baixa o tema (Hextra) via Hugo Modules
hugo mod tidy

# sobe o servidor local com live reload
hugo server -D -F

Abra http://localhost:1313/. -D mostra posts marcados como draft: true e -F mostra posts com data no futuro — assim dá pra revisar tudo antes de publicar. Qualquer mudança em content/, layouts/, assets/ ou data/ recarrega a página sozinha.

Antes de abrir um PR, vale rodar também o lint e um build de produção igual ao do CI, pra pegar erro de template que só aparece com --minify:

hugo --gc --minify

Criando um post novo

ruby scripts/new_post.rb "Título do post" "tag1, tag2"

Gera content/docs/<ano>/<mês em português>/<slug>.md (criando as pastas de ano/mês se ainda não existirem) com o front matter já preenchido — title, date (data de hoje), slug (gerado a partir do título) e tags — e draft: true. Título e tags também podem ser omitidos na chamada: o script pergunta interativamente. Quando o post estiver pronto pra publicar, troque draft: true para draft: false manualmente.

Lint de Markdown

Os posts são checados com o mdl (regras em .mdl_style.rb). Roda automaticamente em todo PR e push para develop/main (.github/workflows/lint.yaml); para rodar localmente:

bundle install
bundle exec mdl content README.md

O mdl só aponta os problemas, não corrige. Pra corrigir automaticamente o que dá pra corrigir sem risco (ver scripts/fix_markdown.rb pra saber exatamente o quê):

bundle exec ruby scripts/fix_markdown.rb

Português e inglês com o seletor nativo

O blog usa o modo multilíngue do Hugo e o seletor de idioma do tema Hextra. O botão de idioma no cabeçalho abre as opções Português e English. As páginas em português mantêm suas URLs; as versões em inglês ficam em /en/. Menus, busca, RSS e os textos da página inicial acompanham o idioma selecionado.

O seletor abre a tradução do post atual. Quando ela ainda não existe, o tema leva à página inicial do idioma escolhido. A troca funciona localmente e não depende de um serviço externo de tradução.

As traduções são arquivos Markdown separados, com o mesmo nome e o sufixo .en:

content/docs/2026/outubro/meu-post.md
content/docs/2026/outubro/meu-post.en.md

content/docs/2026/julho/meu-projeto/index.md
content/docs/2026/julho/meu-projeto/index.en.md

Traduza o título e o conteúdo, preservando data, slug e estado de rascunho. Em page bundles, o Hugo compartilha as imagens entre as traduções. Em posts soltos com imagens externas ao bundle, use caminhos que resolvam também em /en/. Os posts publicados já têm versões em inglês; rascunhos continuam como estão. Novos posts precisam de uma versão .en.md antes de serem publicados.

Testes do modo multilíngue

Com os mesmos pré-requisitos do blog, execute:

bundle exec ruby scripts/test_multilingual.rb

Os testes geram um site temporário e verificam o seletor nativo, a troca entre posts equivalentes, o fallback sem tradução, URLs em subdiretórios, textos localizados e imagens compartilhadas. Também verificam se cada post publicado tem um arquivo em inglês. O workflow multilingual.yaml executa os testes nos PRs e pushes para develop e main.

Changelog e releases

O CHANGELOG.md (formato Keep a Changelog) é gerado automaticamente pelo git-cliff a partir dos commits em Conventional Commits (feat:, fix:, ...). Não é para editar esse arquivo manualmente.

Quando develop é mergeada em main, o workflow .github/workflows/release.yaml:

  1. calcula a próxima versão a partir dos commits desde a última tag;
  2. atualiza o CHANGELOG.md e commita em main;
  3. cria a tag vX.Y.Z e publica a GitHub Release com as notas dessa versão.

Se não houver commit relevante (feat/fix/...) desde a última tag, nada é publicado.

Doca (dock) do rodapé

Barra fixa no rodapé com janelas flutuantes (<dialog>, arrastáveis, sem libs), no estilo desktop/OS do fim dos anos 2000. Fica isolada do resto do tema em arquivos próprios:

  • data/dock.yaml — quais botões existem, rótulo, ícone e link do Spotify.
  • data/events.yaml — lista de próximos eventos do painel "Calendário".
  • content/drafts/ — rascunhos (hugo new drafts/nome.md); cada um vira uma página própria, mas fica fora do blog, do RSS e do sitemap.
  • assets/css/desktop-dock.css e assets/js/desktop-dock.js — estilo e comportamento, separados do custom.css/tema.

Pra trocar o link do Spotify ou adicionar um evento, é só editar os .yaml acima — não precisa mexer nos templates.

Calendário

O botão Calendário abre a mesma janela da doca, com uma grade mensal. As setas mudam o mês; Hoje volta ao dia atual no fuso do visitante. O dia atual tem uma borda e os dias com eventos têm um ponto. Clique em um dia para ver seus eventos. A interface acompanha o idioma do blog.

Para adicionar eventos, substitua o [] de data/events.yaml por uma lista:

- date: "2026-11-10"
  title: "Meu evento"
  title_en: "My event"
  url: "https://example.com/evento"

title_en e url são opcionais. Eventos antigos continuam disponíveis ao navegar pelos meses. As alterações aparecem depois do build e deploy do blog. O calendário funciona sem serviços externos; sem JavaScript, a janela mostra uma lista dos eventos cadastrados.

Para validar o calendário e sua integração com os idiomas:

node --test tests/calendar.test.cjs
bundle exec ruby scripts/test_multilingual.rb

Ícones: Pixelarticons (MIT).

Brilho no cursor

O movimento do mouse deixa uma trilha discreta de estrelas rosas e douradas. As partículas duram 600 ms, com no máximo 12 visíveis ao mesmo tempo, e não interceptam cliques nem alteram o layout. O efeito fica desativado para toque, caneta e preferência de movimento reduzido do sistema.

Os arquivos são assets/js/cursor-trail.js e assets/css/cursor-trail-style.css. Para testar o comportamento do cursor e do calendário:

node --test tests/*.test.cjs

Fonte: Pixelify Sans (OFL, licença em assets/font/pixelify-sans/OFL.txt), self-hosted como WOFF2 — usada só dentro da doca e das janelas, não no resto do site. Emitida via layouts/partials/custom/head-end.html (não dá pra usar url() relativo direto no desktop-dock.css, que é um CSS puro, sem processamento de Hugo).

About

My study journal (Daily) is a way to structure, share, and constantly evolve, based on pragmatic principles of investing in knowledge.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages