# Filipe Fortes > Personal website for Filipe Fortes, a software engineer living in Miami ## Articles - [2026 Personal Tech Stack](https://fortes.com/2026/personal-tech-stack/index.md): My yearly tradition no one sane cares about - [Custom Kids' Podcasts With NotebookLM](https://fortes.com/2025/kids-podcasts-with-notebooklm/index.md): Using NotebookLM to create personalized podcasts for kids - [2024 Personal Tech Stack](https://fortes.com/2024/personal-tech-stack/index.md): An on-spectrum overview of the tools and services I use regularly - [Hierarchical Tags in Hugo](https://fortes.com/2023/hierarchical-tags-in-hugo/index.md): Making your posts a dessert topping *and* a floor wax - [Using FZF in a Deno Script](https://fortes.com/2023/using-fzf-in-deno-scripts/index.md): Piping to FZF, with extra steps - [Debugging Hugo via meta tags](https://fortes.com/2023/hugo-debug-meta-tags/index.md): Start using your `` when working - [Unlock SSH keys with the 1Password CLI](https://fortes.com/2022/unlock-ssh-keys-with-the-1password-cli/index.md): Use the 1Password CLI and a small shell script to unlock SSH keys without copy-pasting passphrases - [Make Git better with FZF](https://fortes.com/2022/make-git-better-with-fzf/index.md): How to look like a cool movie hacker while using Git - [Extracting FitBit Weight Data](https://fortes.com/2022/extracting-fitbit-weight-data/index.md): Stealing your history back from FitBit, minus the janky interpolated values - [Letterbox Blur with ImageMagick](https://fortes.com/2021/letterbox-blur-with-imagemagick/index.md): Putting round pegs into square image holes - [Scripting Photo Collages with ImageMagick](https://fortes.com/2021/image-collage-via-imagemagick/index.md): Automating something I don't even do anymore - [Getting Debian to send emails that actually get delivered](https://fortes.com/2020/debian-configure-email-sending/index.md): Making sure your algorithmic love letters don't get lost - [Linux disk encryption with LUKS and LVM](https://fortes.com/2020/linux-disk-encryption-luks-and-lvm/index.md): An unreasonable number of steps to get reasonable disk security on Linux - [Working From Everywhere](https://fortes.com/2019/working-from-home-green-screen/index.md): How to make your co-workers think you're working from Mordor - [Merging piped `stdin` with command-line arguments within Bash](https://fortes.com/2019/bash-script-args-and-stdin/index.md): How to avoid using `xargs` at all costs - [Mixing React and DOM events](https://fortes.com/2018/react-and-dom-events/index.md): Figuring out why your foot got blown off after you inadvertently shot it - [Using Rclone and MergerFS together across drives](https://fortes.com/2018/rclone-and-mergerfs/index.md): Create an encrypted drive pool in a hundred steps or less - [One Good Tweet](https://fortes.com/2017/one-good-tweet/index.md): I'm a one-hit wonder on Twitter; this is life with a marginally-popular tweet - [Using Language Servers in Neovim](https://fortes.com/2017/language-server-neovim/index.md): Adding IDE-like features into Neovim via the Language Server Protocol - [Coda](https://fortes.com/2017/coda/index.md): Talking about what I've been working on for the last three years. - [Command-line photo geotagging](https://fortes.com/2017/command-line-photo-geotagging/index.md): Using Google location data in order to geotag photographs from a camera via the command-line - [Adventures in command-line photo organization](https://fortes.com/2015/command-line-photo-organization/index.md): Some terminal commands used to tame a poorly-organized set of photographs before uploading to Google Photos - [Updated Pareto Browser Filter](https://fortes.com/2014/pareto-filter-update/index.md): 2014 guide to dropping support for older browsers to simplify development - [Talking Treesaver](https://fortes.com/2011/talking-treesaver/index.md): Slides and video from me talking about Treesaver at ISOJ - [Treesaver on The Big Web Show](https://fortes.com/2011/treesaver-on-the-big-web-show/index.md): Talking about Treesaver, dynamic layout, and web design on a podcast - [The Pareto Browser Filter](https://fortes.com/2011/the-pareto-browser-filter/index.md): Stop supporting problematic browsers in order to vastly simplify development - [Treesaver Open Source Release](https://fortes.com/2011/treesaver-open-source-release/index.md): Releasing Treesaver as open source and inviting the internet to poke at it - [Treesaver gets Scobleized](https://fortes.com/2010/treesaver-gets-scobleized/index.md): Robert Scoble interviews me about Treesaver - [Introducing Treesaver](https://fortes.com/2010/introducing-treesaver/index.md): A new way to build paginated reading layouts with HTML, CSS, and JavaScript - [Soft Hyphenator](https://fortes.com/2010/soft-hyphenator/index.md): Automatically stuffing soft hyphens into HTML so justified text behaves better - [jMetronome: Using jQuery to keep typographic rhythm](https://fortes.com/2008/jmetronome-using-jquery-to-keep-typographic-rhythm/index.md): Fixing broken vertical rhythm on the web with a little jQuery nudge - [Introducing the Dynamic Layout Library](https://fortes.com/2008/introducing-the-dynamic-layout-library/index.md): JavaScript for responsive layouts - [Introducing Sistr](https://fortes.com/2007/introducing-sistr/index.md): An early Silverlight experiment to do sIFR-style typographic replacement without Flash - [Font Rendering Across Rich Platforms](https://fortes.com/2007/font-rendering-across-rich-platforms/index.md): Comparing how the usual rich-platform suspects render type at reading sizes - [The Sad State of Online Advertising](https://fortes.com/2007/the-sad-state-of-online-advertising/index.md): Why premium publishers keep ending up with bargain-bin web ads - [Video and Screenshots from the Mix Panel](https://fortes.com/2007/video-and-screenshots-from-the-mix-panel/index.md): A panel video, some demo screenshots, and early reading-experience prototypes - [Creating WPF Text Layouts is Hard](https://fortes.com/2007/creating-wpf-text-layouts-is-hard/index.md): A preview of the many ways attractive text layout can hurt you in WPF - [`BindableRun`](https://fortes.com/2007/bindablerun/index.md): A small WPF helper to make `Run.Text` bindable inside `FlowDocument` content - [So Long](https://fortes.com/2006/so-long/index.md): Leaving Microsoft, heading to Beijing, and keeping the blog nerdy - [Stylistic Alternates](https://fortes.com/2005/stylistic-alternates/index.md): OpenType swashes, alternates, and other ways to show off with fonts - [A Tale of Two Transforms](https://fortes.com/2005/layout-vs-render-transforms/index.md): The important difference between moving pixels and moving layout - [Contextual Alternates](https://fortes.com/2005/contextual-alternates/index.md): Fancy OpenType glyph substitutions for when one letter shape is not enough - [Enabling Ligatures in Avalon](https://fortes.com/2005/enabling-ligatures-in-avalon/index.md): Turning on a centuries-old typography trick in Avalon - [Custom Layouts in Avalon](https://fortes.com/2003/custom-layouts-in-avalon/index.md): Building your own layout engine in Avalon without losing your mind - [Why Vectors?](https://fortes.com/2003/why-vectors/index.md): Why vector UI matters once pixels stop behaving themselves ## Links ## Pages - [About](https://fortes.com/filipe/index.md) - [Now](https://fortes.com/now/index.md)