[{"content":"I am a quantum physicist. This is where I write down the things I would otherwise have to work out twice — how I use Emacs day to day, notes on quantum physics, and the open-source tools I build along the way.\nEmacs — configuration, packages, and workflow notes. Open source — small tools I write in my spare time. ","date":null,"permalink":"https://alberti42.github.io/","section":"Andrea Alberti","summary":"\u003cp\u003eI am a quantum physicist. This is where I write down the things I would\notherwise have to work out twice — how I use \u003cstrong\u003eEmacs\u003c/strong\u003e day to day, notes on\n\u003cstrong\u003equantum physics\u003c/strong\u003e, and the open-source tools I build along the way.\u003c/p\u003e","title":"Andrea Alberti"},{"content":"Notes on how I actually use Emacs — the packages I lean on, the glue code that holds my setup together, and the occasional yak I shaved so you do not have to.\n","date":null,"permalink":"https://alberti42.github.io/emacs/","section":"Emacs","summary":"\u003cp\u003eNotes on how I actually use \u003ca href=\"https://www.gnu.org/software/emacs/\" target=\"_blank\" rel=\"noreferrer\"\u003eEmacs\u003c/a\u003e — the\npackages I lean on, the glue code that holds my setup together, and the\noccasional yak I shaved so you do not have to.\u003c/p\u003e","title":"Emacs"},{"content":"","date":null,"permalink":"https://alberti42.github.io/tags/hugo/","section":"Tags","summary":"","title":"Hugo"},{"content":"","date":null,"permalink":"https://alberti42.github.io/tags/org-mode/","section":"Tags","summary":"","title":"Org-Mode"},{"content":"","date":null,"permalink":"https://alberti42.github.io/tags/publishing/","section":"Tags","summary":"","title":"Publishing"},{"content":"This site is written in Org and built by Hugo. Every post is composed as .org file under content-org/, and ox-hugo exports it to Hugo-flavored Markdown. Org notes are automatically exported to content/.\nSetting meta information (title, tags) and decide routing #content-org/emacs/this-file.org -\u0026gt; content/emacs/this-file.md Three keywords do the routing:\n#+HUGO_BASE_DIR where the Hugo site root is, relative to the Org file. #+HUGO_SECTION which section the post belongs to, and therefore its URL. #+EXPORT_FILE_NAME the slug used in the site (e.g., for this document publishing-this-site-from-org). Tags come from #+HUGO_TAGS. Since PR #492, one can in principle also use the alternative fallback syntax #+FILETAGS, which is the familiar keyword if one is used to write org notes.\nHow the export procedure works #ox-hugo vs. Hugo org exporter #Hugo can parse .org natively, through a Go reimplementation of the Org syntax. It handles the common cases, but it is not Org\u0026rsquo;s own exporter, so it has several limitations. It fails to\nunderstand keywords such as #+INCLUDE, export Babel results, recognize macros, or link abbreviations. Instead, ox-hugo works differently: it relies on the real Org exporter inside Emacs and produces Markdown files. Hugo then only ever sees Markdown. This workflow ensures the best coverage of the org-mode features.\nTwo ways to trigger the export #From inside the buffer, C-c C-e H H exports the current file. Instead, to rebuild everything from a shell, I rely on a Makefile:\nmake export make serve # live preview on :1313 What is cool about this workflow #Code blocks keep their highlighting #(use-package ox-hugo :after ox :custom (org-hugo-front-matter-format \u0026#34;yaml\u0026#34;)) Math equations are rendered as selectable MathML text #LaTeX equations are rendered directly at build time into MathML, styled using KaTeX CSS stylesheets. The conversion is done by Hugo\u0026rsquo;s embedded KaTeX exporter.\nE=mc2 E=mc^2 E=mc2This ensures that the website does not require any JavaScript to be transposed to KaTeX-styled MathML, since all conversions already happen at build time.\nFurthermore, equations are rendered as selectable text, thus avoiding linking SVG files, which cannot be easily parsed by search engines.\nAbout the template and look #The website look is not glamorous but functional. It is based on Hugo\u0026rsquo;s Congo template. In addition, there is a bunch of local customizations on top of the template via:\nlayouts/ it shadows the theme\u0026rsquo;s own layout, assets/css/custom.css this is appended by Congo after its own CSS. To update the template:\nmake theme-update All config files live under config/_default.\nConcluions #That is the whole pipeline. The workflow is kept rather simple. It produces Markdown files in content/ as a build artifact, which are then committed, so the GitHub CI does not need Emacs.\n","date":"29 August 2026","permalink":"https://alberti42.github.io/emacs/publishing-this-site-from-org/","section":"Emacs","summary":"\u003cp\u003eThis site is written in Org and built by \u003ca href=\"https://gohugo.io\" target=\"_blank\" rel=\"noreferrer\"\u003eHugo\u003c/a\u003e. Every post is composed as \u003ccode\u003e.org\u003c/code\u003e\nfile under \u003ccode\u003econtent-org/\u003c/code\u003e, and \u003ca href=\"https://ox-hugo.scripter.co\" target=\"_blank\" rel=\"noreferrer\"\u003eox-hugo\u003c/a\u003e exports it to Hugo-flavored\nMarkdown. Org notes are automatically exported to \u003ccode\u003econtent/\u003c/code\u003e.\u003c/p\u003e","title":"Publishing this site from Org with ox-hugo"},{"content":"","date":null,"permalink":"https://alberti42.github.io/tags/","section":"Tags","summary":"","title":"Tags"},{"content":"I am a quantum physicist and I like in my free time to develop software. Many of the apps and utilities posted on this site have been developed to make my workflow more enjoyable.\nYou can find my research output on ORCID, my code on GitHub, and the full list of things I maintain on the projects page.\n","date":null,"permalink":"https://alberti42.github.io/about/","section":"Andrea Alberti","summary":"\u003cp\u003eI am a quantum physicist and I like in my free time to develop software. Many\nof the apps and utilities posted on this site have been developed to make my\nworkflow more enjoyable.\u003c/p\u003e","title":"About me"},{"content":"These are things I build in my spare time, not my research work — small tools that started because they made my own day-to-day workflow more pleasant, and that seemed worth sharing. Everything here is open source.\nmacOS Utilities # macOS Config Manager A small, dependency-free Python CLI to snapshot and restore macOS preferences managed via the defaults system. macOS Hotkey Manager A Python script for exporting, importing and resetting macOS application hotkeys. This is particularly useful if you need to transfer your custom keyboard shortcuts to a different machine or back them up for safekeeping. Magic Warnings A lightweight macOS app that monitors the battery levels of your Apple Magic Mouse, Trackpad, and Keyboard. Volume Control App This app allows you to directly control the volume of Apple Music and of Spotify using volume-up and volume-down keys from your keyboard. iTunes Volume Control The app is discontinued and superceded by Volume Control. The reason is that iTunes does no longer exist in recent macOS versions. Also, the newer app, Volume Control, is no longer restricted to Apple Music. It also works with Spotify and a few other music players. Shell Plugins #These are plugins developed to improve the workflow with Zsh shell and Tmux.\ndotfiles for macOS \u0026amp; linux These are my personal dotfiles, which include configurations for zsh shell, various tools and applications I use daily. They are designed to be lightweight and fast, supporting my workflow on macOS and Linux. fzf-recent-files A minimal Zsh plugin for fuzzy-jumping to recently visited directories tmux-fzf-links plugin for tmux A versatie tmux plugin to open any kind of link. Links are defined by customizable regular expressions. You can open local files, url, and any lines of code where errors have been generated. tmux-ssh-syncing plugin for zsh shell Synchronize your tmux window names with active ssh sessions. This plugin dynamically updates the tmux window name to reflect the remote hosts of active ssh sessions in the same window. It also restores the original window name when all ssh sessions are closed. Yazi plugin faster-piper faster-piper is a general-purpose previewer that pipes the output of an arbitrary shell command into Yazi\u0026rsquo;s preview pane, with aggressive caching and efficient scrolling for large outputs. Zinit Annex for Sourcing the Latest GitHub Release Zinit annex that automatically selects the latest GitHub release tag when installing or updating plugins built from source. Zsh autocompletion plugin for miscellaneous commands This repository contains a collection of miscellaneous Zsh completions for various tools. zsh-appearance-control a Zsh plugin that helps your shell “remember” whether you are in light mode or dark mode. zsh-indent-control A tiny Zsh plugin that makes Tab behave nicely at the start of a line → it turns leading Tab into spaces. zsh-opencode-tab A zsh plugin to turn natural language into a zsh command by pressing TAB. Compatible with Oh My Zsh. Obsidian Plugins #These are plugins developed to improve the workflow with Obsidian personal knowledge management system.\nAnnotations for Obsidian Community Plugins A plugin that allows users to add personal annotations to each installed plugin in Obsidian. This is particularly useful for keeping track of why certain plugins are installed and their specific use cases. BibDesk Integration Plugin A plugin that integrates the macOS BibDesk application with the PDF++ plugin in Obsidian, enabling you to manage and open PDFs associated with BibDesk entries directly from Obsidian. It works with external BibTeX files, leveraging BibDesk’s bdsk-file- fields, which act as macOS bookmarks, allowing seamless file access even if files are renamed or moved. Import Attachments\u0026#43; Plugin A plugin that enhances the attachment management experience in Obsidian. It allows you to import, organize, and handle attachments (like images, documents, and other files) seamlessly within your vault. Minimize on Close A plugin that minimizes the application window to the dock or taskbar when all open panes are closed. This behavior is particularly standard on macOS and can now be optionally applied across all platforms. Recoll Search Engine Plugin for Obsidian A plugin for Obsidian to search the vault using the powerful Recoll Search Engine. Emacs Contributions #These are packages and other types of contributions developed to improve the workflow with Emacs.\nAgent Shell Math Renderer Render LaTeX math in agent-shell\u0026rsquo;s streamed markdown output. Emacs Docs Themer This repo is a small community space for sharing browser userscripts (Violentmonkey/Tampermonkey) that improve the UX of specific websites. Emacs Launcher for macOS Fast native macOS launcher for the Emacs daemon: Open With, drag-drop, emacs:// \u0026amp; org-protocol Emacs LTeX\u0026#43; Grammar/spell checker 🔍✔️ for Emacs using LanguageTool with support for LaTeX 🎓, Markdown 📝, Python, Clang, and many others emacs-tmux-tandem An Emacs module to integrate Emacs in Tmux. Keep Emacs running in one pane of a tmux window alongside your other tools — a shell, yazi, lazygit, or anything else. Run et FILE from any pane in that window and the file opens instantly in the Emacs session next to you. latex-to-svg SVG LaTeX-math previews for Emacs markup buffers. It supports org-mode and markdown buffers. latex-to-svg-backend A small, buffer-agnostic Emacs library that turns a LaTeX math string into an SVG image suitable for overlaying in a buffer. It is the rendering core extracted from agent-shell-math-renderer; front-ends do their own equation detection and image placement and delegate the typesetting here.Used by latex-to-svg (Org/Markdown math preview) and agent-shell-math-renderer (math in agent-shell output). org-semantic Search a tree of org-mode notes by meaning or by words. One static binary, no database, no Python. It runs as a one-shot command, or stays resident for Emacs — over a pipe, never a port. straight-overview Selective-upgrade UI for straight.el packages: see which are behind upstream and update (or pin) only the ones you choose LaunchBar Actions #These are plugins developed to improve the workflow with LaunchBar.\nGet Recent Adobe Documents A plugin for LaunchBar to display the list of the documents recently opened with the Adobe programs Acrobat, Photoshop, Illustrator. Get Recent MATLAB Documents A plugin for LaunchBar to display the list of the documents recently opened with Mathworks MATLAB. Get Recent Microsoft Office Documents A plugin for LaunchBar to display the list of the documents recently opened with the Microsoft Office programs Word, Excel, and PowerPoint. Get Recent Visual Studio Code Documents A plugin for LaunchBar to display the list of the documents recently opened with Visual Studio Code. Get Recently Opened Files with Emacs for LaunchBar A plugin for LaunchBar to display the list of the recentf files opened with Emacs editor. Get Recently Opened Files with Sublime Text for LaunchBar A plugin for LaunchBar to display the list of the files and projects recently opened with Sublime Text editor. This plugin is designed to work together with the companion plugin Recent Files Tracker for Sublime Text editor. Get Wolfram Mathematica Recent Documents A plugin for LaunchBar to display the list of the documents recently opened with Wolfram Mathematica. Open iTerm2 Profile A plugin for LaunchBar that allows users to quickly open a terminal session using any available iTerm2 profile. Python Packages #These are Python packages developed to improve the workflow in scientific computing and scientific automation.\nMatplotlib Window Tracker (matplotlib-window-tracker) This package, matplotlib-window-tracker, is designed for scientists and anyone who prefers a script-based workflow (plain .py files) with IPython. It keep windows where you placed them: reuse the same OS windows across re-runs. Sublime Text Editor Plugins # Nearly syntax highlighting for Sublime Text Editor A Sublime Text syntax highlighting file for Nearley. Nearly is a simple, fast, and powerful parsing toolkit. The Nearley.sublime-syntax file enables Sublime Text to recognize and highlight the syntax of Nearley grammar files (*.ne) effectively. Recent Files Tracker for Sublime Text A Sublime Text plugin that tracks recently opened files and projects. It stores the file paths in a JSON file, making it easy to integrate with other tools. This plugin is especially designed to work together with the companion plugin Get Recently Opened Files with Sublime Text for LaunchBar. Research Tools # ChatGPT Plain Text Composer (userscript) A lightweight userscript for ChatGPT that replaces the native rich composer with a plain textarea overlay for smooth, lag-free typing — especially in very long chats where the default composer can become slow. JupyterLab extension for Mapyter A JupyterLab extension providing syntax support for Mapyter kernel. It also provides a plugin for JupyterLab for downloading plots with a button. The button is particularly convenient to save plots shown as vectorial .svg graphics. JupyterLab Image Downloader for SVG and Common Image Formats A userscript to add a download button to images and SVGs rendered in JupyterLab notebooks. This script supports both .svg and common image formats like .png and .jpeg. The download buttons appear in the top-right corner of the rendered output, allowing you to save the plot with a single click. Keynote Progress Bar This AppleScript program adds a customizable progress bar to presentations created with Apple Keynote. The progress bar is configured using commands placed in the presenter notes of your slides. This project utilizes a custom Objective-C framework, KeynoteProgressBarHelper, for generating vector graphics (PDF) images of the progress bar. Mapyter A JupyterLab kernel to develop MATLAB in a notebook. The project started before Mathworks started their development of MATLAB kernel for JupyterLab. It offers more advanced features than those currenlty provided by the official kernel, such as the possibility to update plots live, create animations, and display progress bar (even for parfor loops!). Unfortunately, the documentation page is still missing. Millennia Laser Control App Application for controlling and logging Spectra-Physics Millennia Lasers. It covers all functions provided by the app shipped originally with the laser. It also provides new features, most notably, the possibility to log multiple parameters of the laser. Moreover, it gives a feedback about the instantaneous RMS noise level of the laser (5s integration time). And it allows controlling multiple lasers when these are connected to the same computer via USB. ","date":null,"permalink":"https://alberti42.github.io/projects/","section":"Andrea Alberti","summary":"\u003cp\u003eThese are things I build in my spare time, not my research work — small tools\nthat started because they made my own day-to-day workflow more pleasant, and\nthat seemed worth sharing. Everything here is open source.\u003c/p\u003e","title":"Open-source projects"},{"content":"Notes from research and teaching: derivations I want to keep, experimental details that are hard to find written down, and the occasional attempt to explain something properly to myself.\n","date":null,"permalink":"https://alberti42.github.io/physics/","section":"Quantum physics","summary":"\u003cp\u003eNotes from research and teaching: derivations I want to keep, experimental\ndetails that are hard to find written down, and the occasional attempt to\nexplain something properly to myself.\u003c/p\u003e","title":"Quantum physics"}]