Welcome to my blog

😀

Using GNU Global for source code navigation

Using GNU Global + universal-ctags for source code navigation Sometimes a LSP is not necessary or too much bloat. In very large codebases LSPs or IDEs can keel over. Or sometimes there simply isn’t a LSP for the language (like SQL—dealing with a huge tree of SQL files is what led me to reach for Global in the first place). The old TAGS style of code browsing still works. Sometimes it’s the better tool for the job....

July 28, 2024 Â· 4 min Â· Zelly Snyder

Embeddable Software

This aims to be a list of “embeddable” software components (typically for C/C++/Rust native code). These are (typically statically-linked) libraries you can include inside your compiled binaries that add functionality which would usually require much larger, more complex infrastructure. Most of the time you probably do not need anything more. Probably 99% of use cases which reach for postgres can be done with sqlite just fine. Worry about scale when you have users....

February 3, 2024 Â· 1 min Â· Zelly Snyder

Compiling Emacs on Mac

This is how to build Emacs from source on macOS (working as of macOS Sonoma 14.2) (sorry Stallman). We want all the latest bells and whistles: native compilation of Elisp tree-sitter libjannson for fast JSON parsing (useful for LSP modes) Compiling the latest Emacs from HEAD also gives you access to the latest features, like Eglot (language server built-in to Emacs). You also may wish to compile with debug information if you want to hack on Emacs itself....

January 31, 2024 Â· 2 min Â· Zelly Snyder

Building latest Clang+LLVM on MacOS

First, ensure you have the latest Apple Clang installed. xcode-select --install Then this will build all LLVM projects (e.g., clang, lldb, libc++, openmp 
), working as of macOS 14 (Sonoma). git clone --depth=1 https://github.com/llvm/llvm-project LLVM_SOURCE_DIR="$(pwd)/llvm-project" cd /tmp mkdir llvm-build && cd llvm-build MY_LLVM_INSTALL_PATH=$HOME/.local # or something else; change this mkdir -p $MY_LLVM_INSTALL_PATH cmake -S "$LLVM_SOURCE_DIR/llvm" \ -DCMAKE_BUILD_TYPE=Release \ -DDEFAULT_SYSROOT=$(xcrun --show-sdk-path) \ -DLLVM_ENABLE_PROJECTS="all" \ -DLLVM_ ENABLE_RUNTIMES="all" \ -DCMAKE_INSTALL_PREFIX=$HOME/.local make -j$(sysctl -n hw....

December 10, 2023 Â· 1 min Â· Zelly Snyder

Search Engine Shortcuts for Chromium-based Browsers

Whenever I set up a new browser, I always have to copy over the custom search engines (at chrome://settings/searchEngines) because for some reason, Import/Export User Settings doesn’t include these. There are ways to import and export these from the filesystem in an internal sqlite database that Chrom{e,ium} uses, but it’s not guaranteed to work in the future. The “Shortcut” works by typing the it in the browser’s address bar (such as :w for Wikipedia), followed by a space, then your search query....

December 8, 2023 Â· 2 min Â· Zelly Snyder

Run your own "What Is My Ip?" service with Caddy and Cloudflare

Caddy is a well-known HTTP server that does much of what nginx does but with much simpler configuration. Here is an example of using Caddy to serve your own “What is my IP?” server. There are services like “ipify.org” where you just $ curl https://api.ipify.org and it returns your IP address. There is also http://checkip.amazonaws.com, among many others. However, you may not want to rely on the uptime of these free third-party sites, you may not want third-parties logging your programmatic IP address queries, or you may just not want to abuse their services....

November 10, 2023 Â· 2 min Â· Zelly Snyder

How to Use Keyboard as Mouse on Linux

This is a nice trick. It lets you use your keyboard’s numpad as a mouse. I had to use this while troubleshooting a server on a live Linux USB installation which booted up to a KDE Desktop Environment, but I did not have a mouse to go along with it, only a keyboard. I was able to open Konsole, the terminal emulator, and enter the following to activate keyboard mouse keys:...

October 27, 2023 Â· 1 min Â· Zelly Snyder

Ranking tools

These are my opinions on the ideal software stack. I will revise and edit this over time. This is purely for entertainment purposes. Filesystem ZFS Since it can run on Linux now with OpenZFS, there’s no reason to use anyting else except for special cases. There is no other filesystem with as many man-hours put into it as ZFS, and it shows. Notable runner-ups: btrfs, which is like ZFS but is in the kernel tree bcachefs which is being merged in kernel 5....

October 23, 2023 Â· 7 min Â· Zelly Snyder

Virtualbox Guest Additions Iso

Can’t find VirtualBox Guest Additions? I encountered errors trying to install Guest Additions on Oracle VirtualBox for a Windows 10 guest. The application is supposed to download it and mount the ISO as an optical drive in the VM. But in my instance it failed to download. So naturally I looked to see if I could download the ISO separately. Oracle doesn’t provide a link whatsoever, but luckily the site shows a directory listing here:...

October 23, 2023 Â· 1 min Â· Zelly Snyder

How to Build Signal Desktop on Linux

Signal offers runnable .deb packages for Debian-based Linux (including Ubuntu among others). For other distributions, there aren’t any runnable binaries. There also aren’t (or I couldn’t find) documentation on how to build it. Here is how I built Signal Desktop on Fedora 31 (x86_64 gnu/linux) as an AppImage executable, which runs easily on any distribution. Clone the repository. git clone https://github.com/signalapp/Signal-Desktop.git && cd Signal-Desktop Change package.json to also build an AppImage,...

March 9, 2020 Â· 1 min Â· Zelly Snyder